00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00039 #ifndef ASSERT_ONCE
00040 #define ASSERT_ONCE
00041
00043
00044 #define ASSERT_EXIT_MECHANISM ::abort(); //abort
00045
00074 #define OUTPUT_FORMAT(m,x) "%s(%s) in file %s (included from %s), line %d method %s\n",m,#x,__FILE__,__BASE_FILE__,__LINE__,__PRETTY_FUNCTION__
00075 #define OUTPUT_STREAM(m,x) m "(" #x ") in file " __FILE__ " (included from " __BASE_FILE__ "), line " << __LINE__ << " method " << __PRETTY_FUNCTION__
00076
00077 #endif //ASSERT_ONCE
00078
00079 #ifdef __LOG_H_DONE
00080 #ifdef ABORT
00081 #undef ABORT
00082 #endif //ABORT
00083 #define ABORT(x) \
00084 { \
00085 printf(OUTPUT_FORMAT("Abort",x));\
00086 fprintf(stderr, OUTPUT_FORMAT("Abort",x));\
00087 Log::err() << OUTPUT_STREAM("Abort",x) << Log::endl;\
00088 ASSERT_EXIT_MECHANISM \
00089 }
00090
00091 #ifdef ASSERT
00092 #undef ASSERT
00093 #endif //ASSERT
00094 #define ASSERT(x) \
00095 { \
00096 if(x) {}\
00097 else {\
00098 printf(OUTPUT_FORMAT("Assert Failed",x));\
00099 fprintf(stderr, OUTPUT_FORMAT("Assert Failed",x));\
00100 Log::err() << OUTPUT_STREAM("Assert Failed",x) << Log::endl;\
00101 ASSERT_EXIT_MECHANISM \
00102 }\
00103 }
00104
00105 #ifdef ASSERTMSG
00106 #undef ASSERTMSG
00107 #endif //ASSERTMSG
00108 #define ASSERTMSG(x,y) \
00109 { \
00110 if(x) {}\
00111 else {\
00112 printf(OUTPUT_FORMAT("Assert Failed",#y ": " #x));\
00113 fprintf(stderr, OUTPUT_FORMAT("Assert Failed",#y ": " #x));\
00114 Log::err() << OUTPUT_STREAM("Assert Failed",#y ": " #x) << Log::endl;\
00115 ASSERT_EXIT_MECHANISM \
00116 }\
00117 }
00118 #else //__LOG_H_DONE
00119 #ifndef ABORT
00120 #define ABORT(x) \
00121 { \
00122 printf(OUTPUT_FORMAT("Abort",x));\
00123 fprintf(stderr, OUTPUT_FORMAT("Abort",x));\
00124 ASSERT_EXIT_MECHANISM \
00125 }
00126 #endif //ABORT
00127
00128 #ifndef ASSERT
00129 #define ASSERT(x) \
00130 { \
00131 if(x) {}\
00132 else {\
00133 printf(OUTPUT_FORMAT("Assert Failed", x));\
00134 fprintf(stderr, OUTPUT_FORMAT("Assert Failed", x));\
00135 ASSERT_EXIT_MECHANISM \
00136 }\
00137 }
00138 #endif //ASSERT
00139
00140 #ifndef ASSERTMSG
00141 #define ASSERTMSG(x,y) \
00142 { \
00143 if(x) {}\
00144 else {\
00145 printf(OUTPUT_FORMAT("Assert Failed", #y ": " #x));\
00146 fprintf(stderr, OUTPUT_FORMAT("Assert Failed", #y ": " #x));\
00147 ASSERT_EXIT_MECHANISM \
00148 }\
00149 }
00150 #endif //ASSERTMSG
00151 #endif //__LOG_H_DONE