50 #define RMDBGIF( levell, module, cls, text ) \
51 if (RMDebug::debugOutput( levell, module, cls )) { text }
53 #define RMDBGENTER( levell, module, cls, text ) \
54 RMCounter rmCounter(levell, module, cls); \
55 if (RMDebug::debugOutput( levell, module, cls )) { \
56 RMInit::dbgOut << "ENTER "; RMInit::dbgOut.width(18); RMInit::dbgOut.setf(ios::left, ios::adjustfield); RMInit::dbgOut << cls << " "; RMDebug::indentLine(); RMInit::dbgOut << text << endl << std::flush; \
59 #define RMDBGMIDDLE( levell, module, cls, text ) \
60 if (RMDebug::debugOutput( levell, module, cls )) { \
61 RMInit::dbgOut << "MIDDLE "; RMInit::dbgOut.width(18); RMInit::dbgOut.setf(ios::left, ios::adjustfield); RMInit::dbgOut << cls << " "; RMDebug::indentLine(); RMInit::dbgOut << text << endl << std::flush; \
64 #define RMDBGONCE( levell, module, cls, text ) \
65 RMCounter rmCounter(levell, module, cls); \
66 if (RMDebug::debugOutput(levell, module, cls)) \
68 RMInit::dbgOut << "ONCE "; RMInit::dbgOut.width(18); RMInit::dbgOut.setf(ios::left, ios::adjustfield); RMInit::dbgOut << cls << " "; \
69 RMDebug::indentLine(); \
70 RMInit::dbgOut << text << endl << std::flush; \
73 #define RMDBGEXIT( levell, module, cls, text ) \
74 if (RMDebug::debugOutput( levell, module, cls )) { \
75 RMInit::dbgOut << "EXIT "; RMInit::dbgOut.width(18); RMInit::dbgOut.setf(ios::left, ios::adjustfield); RMInit::dbgOut << cls << " "; RMDebug::indentLine(); RMInit::dbgOut << text << endl << std::flush; \
78 #define RMDBCLASS( t1, t2, t3, t4, t5 ) RMDebug localRMDebug = RMDebug( t1, t2, t3, t4, t5 );
83 #define RMDBGENTER( level, module, cls, text ) ;
84 #define RMDBGMIDDLE( level, module, cls, text ) ;
85 #define RMDBGONCE( level, module, cls, text ) ;
86 #define RMDBGEXIT( level, module, cls, text ) ;
87 #define RMDBGIF( level, module, cls, text) ;
89 #define RMDBCLASS( t1, t2, t3, t4, t5 ) ;
94 #define RMTIMER(class, func) RMTimer localRMTimer = RMTimer(class, func);
96 #define RMTIMER(class, func)
149 RMDebug(
const char* newClass,
const char* newFunc,
const char* newModule,
150 const char* newFile,
int newLine);
152 RMDebug(
int newLevel,
const char* newClass,
const char* newFun,
int newModuleNum,
153 const char* newFile,
int newLine);
163 return allModuleLevels[modNum];
168 return allModuleNames[modNum];
178 static int debugOutput(
int dbgLevel,
int modNum,
const char* className);
217 int checkDebug(
void);
219 static char* loadTextFile(
const char* name);
230 const char* myModule;
242 static int numDebugModules;
244 static char** debugModules;
246 static char* debugModulesText;
248 static int numDebugClasses;
250 static char** debugClasses;
252 static char* debugClassesText;
254 static int* transDebugModules;
256 static const char* allModuleNames[];
258 static int allModuleLevels[];
302 inline RMTimer(
const char* newClass,
const char* newFunc,
353 unsigned short running;
355 static struct timezone dummy;
361 inline void fetchTime();
377 RMCounter(
int levell,
int module,
const char* cls);
384 #include "raslib/rmdebug.icc"
Definition: rmdebug.hh:187
Definition: rmdebug.hh:193
Definition: rmdebug.hh:183
static std::ostream dbgOut
output stream for debug information
Definition: rminit.hh:103
Definition: rmdebug.hh:192
void start()
resets timer.
RMDebug(const char *newClass, const char *newFunc, const char *newModule, const char *newFile, int newLine)
constructor, initializes members and prints message.
static const char * getModuleName(int modNum)
get the name of a module by its number
Definition: rmdebug.hh:166
~RMDebug(void)
destructor, prints message.
Definition: rmdebug.hh:194
RMTimer(const char *newClass, const char *newFunc, int newBmLevel=0)
constructor, initializes members and starts timer.
~RMCounter()
destructor, decrements indent level.
static int initRMDebug(void)
for initializing modules and classes to debug.
Definition: rmdebug.hh:200
Definition: rmdebug.hh:189
Definition: rmdebug.hh:199
Definition: rmdebug.hh:209
Definition: rmdebug.hh:190
int getTime()
delivers current time count.
Definition: rmdebug.hh:197
Definition: rmdebug.hh:145
Definition: rmdebug.hh:204
static void indentLine(void)
indent by the amount specified by level
Definition: rmdebug.hh:171
Definition: rmdebug.hh:198
~RMTimer()
destructor, calls stop().
Definition: rmdebug.hh:201
Definition: rmdebug.hh:202
enum RMDebug::@0 RMDebugModules
all modules for debugging
RMCounter(int levell, int module, const char *cls)
constructor, increments indent level if the class should be debugged.
Definition: rmdebug.hh:188
Definition: rmdebug.hh:195
Definition: rmdebug.hh:208
static int debugOutput(int dbgLevel, int modNum, const char *className)
Definition: rmdebug.hh:184
static int level
Definition: rmdebug.hh:213
void stop()
prints time spent if output is TRUE.
Definition: rmdebug.hh:185
void setOutput(int newOutput)
switch output on RMInit::bmOut on and off.
Module: { raslib}.
Definition: rmdebug.hh:298
Module: { raslib}.
Definition: rmdebug.hh:373
Definition: rmdebug.hh:207
Definition: rmdebug.hh:191
void pause()
pauses timer.
Definition: rmdebug.hh:196
void resume()
resumes timer.
Definition: rmdebug.hh:205
Definition: rmdebug.hh:186
static int getModuleDebugLevel(int modNum)
get the debug level of a module by its number
Definition: rmdebug.hh:161
Definition: rmdebug.hh:206
Definition: rmdebug.hh:203