Commit MetaInfo

Revision2bf97f796b0e2d8e3bac479965a76f72bcbc0eee (tree)
Time2007-02-19 20:39:56
Authorexeal
Commiterexeal

Log Message

(empty log message)

Change Summary

Incremental Difference

diff -r 435a73445585 -r 2bf97f796b0e src/alpha/ascension/internal.hpp
--- a/src/alpha/ascension/internal.hpp Mon Feb 19 03:22:14 2007 +0000
+++ b/src/alpha/ascension/internal.hpp Mon Feb 19 11:39:56 2007 +0000
@@ -9,6 +9,7 @@
99 #define ASCENSION_INTERNAL_HPP
1010 #include "common.hpp"
1111 #include <list>
12+#include <stdexcept>
1213 #include <algorithm>
1314 #include "../../manah/object.hpp"
1415
@@ -24,17 +25,12 @@
2425 template<int v> struct Int2Type {enum{value = v};};
2526
2627 /// Generates signed numeral types.
27- template<class T> class ToSigned {
28- private:
29- template<class U> struct X;
30- template<> struct X<unsigned char> {typedef char Result;};
31- template<> struct X<unsigned short> {typedef short Result;};
32- template<> struct X<unsigned int> {typedef int Result;};
33- template<> struct X<unsigned long> {typedef long Result;};
34- template<> struct X<unsigned __int64> {typedef __int64 Result;};
35- public:
36- typedef typename X<T>::Result Result;
37- };
28+ template<typename T> struct ToSigned;
29+ template<> struct ToSigned<unsigned char> {typedef char Result;};
30+ template<> struct ToSigned<unsigned short> {typedef short Result;};
31+ template<> struct ToSigned<unsigned int> {typedef int Result;};
32+ template<> struct ToSigned<unsigned long> {typedef long Result;};
33+// template<> struct ToSigned<unsigned __int64> {typedef __int64 Result;};
3834
3935 /**
4036 * Searches upper or lower bound.
@@ -99,39 +95,30 @@
9995 listeners_.push_back(&listener);
10096 }
10197 void remove(Listener& listener) {
102- const std::list<Listener*>::iterator i = std::find(listeners_.begin(), listeners_.end(), &listener);
98+ const Iterator i = std::find(listeners_.begin(), listeners_.end(), &listener);
10399 if(i == listeners_.end()) throw std::invalid_argument("The listener is not registered.");
104100 listeners_.erase(i);
105101 }
106102 void clear() throw() {listeners_.clear();}
107103 bool isEmpty() const throw() {return listeners_.empty();}
108104 void notify(void(Listener::*method)()) {std::for_each(listeners_.begin(), listeners_.end(), mem_fun(method));}
109- template<class Argument> void notify(void(Listener::*method)(Argument), Argument argument) {
110- for(std::list<Listener*>::iterator i = listeners_.begin(); i != listeners_.end(); ++i)
111- ((*i)->*method)(argument);
112- }
113- template<class Arg1, class Arg2>
105+ template<typename Argument> void notify(void(Listener::*method)(Argument), Argument argument) {
106+ for(Iterator i = listeners_.begin(); i != listeners_.end(); ++i) ((*i)->*method)(argument); }
107+ template<typename Arg1, typename Arg2>
114108 void notify(void(Listener::*method)(Arg1, Arg2), Arg1 arg1, Arg2 arg2) {
115- for(std::list<Listener*>::iterator i = listeners_.begin(); i != listeners_.end(); ++i)
116- ((*i)->*method)(arg1, arg2);
117- }
118- template<class Arg1, class Arg2, class Arg3>
109+ for(Iterator i = listeners_.begin(); i != listeners_.end(); ++i) ((*i)->*method)(arg1, arg2);}
110+ template<typename Arg1, typename Arg2, typename Arg3>
119111 void notify(void(Listener::*method)(Arg1, Arg2, Arg3), Arg1 arg1, Arg2 arg2, Arg3 arg3) {
120- for(std::list<Listener*>::iterator i = listeners_.begin(); i != listeners_.end(); ++i)
121- ((*i)->*method)(arg1, arg2, arg3);
122- }
123- template<class Arg1, class Arg2, class Arg3, class Arg4>
112+ for(Iterator i = listeners_.begin(); i != listeners_.end(); ++i) ((*i)->*method)(arg1, arg2, arg3);}
113+ template<typename Arg1, typename Arg2, typename Arg3, typename Arg4>
124114 void notify(void(Listener::*method)(Arg1, Arg2, Arg3, Arg4), Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4) {
125- for(std::list<Listener*>::iterator i = listeners_.begin(); i != listeners_.end(); ++i)
126- ((*i)->*method)(arg1, arg2, arg3, arg4);
127- }
115+ for(Iterator i = listeners_.begin(); i != listeners_.end(); ++i) ((*i)->*method)(arg1, arg2, arg3, arg4);}
128116 template<class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
129117 void notify(void(Listener::*method)(Arg1, Arg2, Arg3, Arg4, Arg5), Arg1 arg1, Arg2 arg2, Arg3 arg3, Arg4 arg4, Arg5 arg5) {
130- for(std::list<Listener*>::iterator i = listeners_.begin(); i != listeners_.end(); ++i)
131- ((*i)->*method)(arg1, arg2, arg3, arg4, arg5);
132- }
118+ for(Iterator i = listeners_.begin(); i != listeners_.end(); ++i) ((*i)->*method)(arg1, arg2, arg3, arg4, arg5);}
133119 private:
134120 std::list<Listener*> listeners_;
121+ typedef std::list<Listener*> Iterator;
135122 };
136123
137124 #ifdef _WINDOWS_
@@ -165,10 +152,13 @@
165152 #define ASCENSION_END_SHARED_LIB_ENTRIES() \
166153 };
167154
168- template<class T> void alert(const T& t) {
155+ template<typename T> void alert(const T& t) {
169156 OutputStringStream s;
170157 s << t;
158+#ifdef _WINDOWS_
171159 ::MessageBoxW(0, s.str().c_str(), L"alert", MB_OK);
160+#else
161+#endif
172162 }
173163
174164 } // namespace internal
Show on old repository browser