00001 #ifndef DEBUG_HEADER_
00002 #define DEBUG_HEADER_
00003
00005 #ifdef NDEBUG
00006 #define DEBUG_ONLY(expr)
00007 #else
00008 #define DEBUG_ONLY(expr) expr
00009 #endif
00010
00011
00013 #ifdef NDEBUG
00014 #define DEBUG_ONLY(expr)
00015 #define ASSERT(expr) void(0)
00016 #else
00017 inline void assert_fail_() {
00018 int *i= 0, j= *i;
00019 *i= j;
00020 }
00021 #define DEBUG_ONLY(expr) expr
00022 #define ASSERT(expr) ( (expr) ? void(0) : assert_fail_() )
00023 #endif
00024
00025
00027 #define NOSPACE
00028
00029
00031 template <class T,class U> inline T debugCast(U toCast) {
00032 #ifdef NDEBUG
00033 return static_cast<T>(toCast);
00034 #else
00035 if (!toCast)
00036 return 0;
00037 T result= dynamic_cast<T>(toCast);
00038 ASSERT(result);
00039 return result;
00040 #endif
00041 }
00042
00043
00045 #ifdef NDEBUG
00046 #define DECLARE_debugModule
00047 #define DECLARE_debugModule_empty
00048 #else
00049 #define DECLARE_debugModule public: \
00050 virtual QWidget* debugModule(QPixmap &pixmap,const QPoint &click)
00051 #define DECLARE_debugModule_empty public: \
00052 virtual QWidget* debugModule(QPixmap &,const QPoint &) { return 0; }
00053 #endif
00054
00055
00057 #ifndef NDEBUG
00058 extern int pos;
00059 inline void STREAM_POS(std::istream &file) { pos= file.tellg(); }
00060 inline void STREAM_POS(std::ostream &file) { pos= file.tellp(); }
00061 #else
00062 inline void STREAM_POS(std::ios&) {}
00063 #endif
00064
00065
00066 #endif // DEBUG_HEADER_