00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __GENERAL_H
00015 #define __GENERAL_H
00016
00017 class invalid { };
00018 class nullpointer { };
00019 class unnamed { };
00020
00021 #define loopMap(r,v,t) \
00022 map<string,t>& v##_t=(r); \
00023 map<string,t> :: iterator v##_i = v##_t.begin(); \
00024 for( \
00025 t* v=&v##_i->second; \
00026 v##_i != v##_t.end(); \
00027 v##_i++, v=(v##_i != v##_t.end())?&v##_i->second:0 \
00028 )
00029 #define loopMapi(r,v,t) \
00030 map<int,t>& v##_t=(r); \
00031 map<int,t> :: iterator v##_i = v##_t.begin(); \
00032 for( \
00033 t* v=&v##_i->second; \
00034 v##_i != v##_t.end(); \
00035 v##_i++, v=(v##_i != v##_t.end())?&v##_i->second:0 \
00036 )
00037 #define loopSingle(r,v,t,s) \
00038 s<t>& v##_t=(r); \
00039 s<t> :: iterator v##_i = v##_t.begin(); \
00040 for( \
00041 t* v=&(*v##_i); \
00042 v##_i != v##_t.end(); \
00043 v##_i++, v=(v##_i != v##_t.end())?&(*v##_i):0 \
00044 )
00045 #define loopArray(r,v,t) \
00046 const t *v=r; \
00047 unsigned int v##_c=sizeof r/sizeof r[0]; \
00048 for ( \
00049 unsigned int v##_i=0; \
00050 v##_i< v##_c; \
00051 v##_i++, v=(v##_i<v##_c)?r+v##_i:0 \
00052 )
00053
00054 #endif