debug.h
Go to the documentation of this file.00001
00002
00005 #ifndef DEBUG_H
00006 #define DEBUG_H
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifdef NO_DEBUG_MESSAGES
00023 #if defined(__GNUC__) && (__GNUC__ < 3)
00024 #define DEBUG(name, level, args...) { }
00025 #else
00026 #define DEBUG(name, level, ...) { }
00027 #endif
00028 #else
00029 #if defined(__GNUC__) && (__GNUC__ < 3)
00030 #define DEBUG(name, level, args...) if ((level == 0) || ( _debug_ ## name ## _level >= level)) debug(#name, args)
00031 #else
00032 #define DEBUG(name, level, ...) if (level == 0 || _debug_ ## name ## _level >= level) debug(#name, __VA_ARGS__)
00033 #endif
00034
00035 extern int _debug_ai_level;
00036 extern int _debug_driver_level;
00037 extern int _debug_grf_level;
00038 extern int _debug_map_level;
00039 extern int _debug_misc_level;
00040 extern int _debug_ms_level;
00041 extern int _debug_net_level;
00042 extern int _debug_sprite_level;
00043 extern int _debug_oldloader_level;
00044 extern int _debug_ntp_level;
00045 extern int _debug_npf_level;
00046 extern int _debug_yapf_level;
00047 extern int _debug_freetype_level;
00048 extern int _debug_sl_level;
00049 extern int _debug_station_level;
00050 extern int _debug_gamelog_level;
00051
00052 void CDECL debug(const char *dbg, ...);
00053 #endif
00054
00055 void SetDebugString(const char *s);
00056 const char *GetDebugString();
00057
00058
00059 #if defined(_MSC_VER) || defined(__MINGW32__)
00060 #define OTTD_PRINTF64 "I64"
00061 #else
00062 #define OTTD_PRINTF64 "ll"
00063 #endif
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086 #define TIC() {\
00087 extern uint64 _rdtsc();\
00088 uint64 _xxx_ = _rdtsc();\
00089 static uint64 __sum__ = 0;\
00090 static uint32 __i__ = 0;
00091
00092 #define TOC(str, count)\
00093 __sum__ += _rdtsc() - _xxx_;\
00094 if (++__i__ == count) {\
00095 DEBUG(misc, 0, "[%s] %" OTTD_PRINTF64 "u [avg: %.1f]\n", str, __sum__, __sum__/(double)__i__);\
00096 __i__ = 0;\
00097 __sum__ = 0;\
00098 }\
00099 }
00100
00101 void ShowInfo(const char *str);
00102 void CDECL ShowInfoF(const char *str, ...);
00103
00104 #ifdef DEBUG_DUMP_COMMANDS
00105 void CDECL DebugDumpCommands(const char *s, ...);
00106 #else
00107
00108
00109 #if defined(__GNUC__) && (__GNUC__ < 3)
00110 #define DebugDumpCommands(s, args...)
00111 #else
00112 #define DebugDumpCommands(s, ...)
00113 #endif
00114 #endif
00115
00116 #endif