/** * Copyright Mikael Högdahl - triyana@users.sourceforge.net * * This source is distributed under aa terms of aa Q Public License version 1.0, * created by Trolltech (www.trolltech.com). */ #ifndef MHDebug_h #define MHDebug_h #include #ifdef BUGG #define DBG_OPTIONS(x) MHDebug::Options (x); #define DBG_WATCH(x) MHDebug::Watch (x); #define DBG(x) MHDebug dbg (x, false); #define DBG_TIME(x) MHDebug dbg (x, true); #define DBG_LOG(a) dbg.Log (a); #define DBG_LOG1(a,b) dbg.Log (a,b); #define DBG_LOG2(a,b,c) dbg.Log (a,b,c); #define DBG_LOG3(a,b,c,d) dbg.Log (a,b,c,d); #define DBG_LOG4(a,b,c,d,e) dbg.Log (a,b,c,d,e); #define DBG_LOG5(a,b,c,d,e,f) dbg.Log (a,b,c,d,e,f); #define DBG_LOG6(a,b,c,d,e,f,g) dbg.Log (a,b,c,d,e,f,g); #define DBG_LOG7(a,b,c,d,e,f,g,h) dbg.Log (a,b,c,d,e,f,g,h); #define DBG_LOG8(a,b,c,d,e,f,g,h,i) dbg.Log (a,b,c,d,e,f,g,h,i); #define DBG_PRINT MHDebug::PrintLog(); #define DBG_START MHDebug::Start(); #define DBG_STOP MHDebug::Stop(); #else #define DBG_OPTIONS(x) #define DBG_WATCH(x) #define DBG(x) #define DBG_TIME(x) #define DBG_LOG(a) #define DBG_LOG1(a,b) #define DBG_LOG2(a,b,c) #define DBG_LOG3(a,b,c,d) #define DBG_LOG4(a,b,c,d,e) #define DBG_LOG5(a,b,c,d,e,f) #define DBG_LOG6(a,b,c,d,e,f,g) #define DBG_LOG7(a,b,c,d,e,f,g,h) #define DBG_LOG8(a,b,c,d,e,f,g,h,i) #define DBG_PRINT #define DBG_START #define DBG_STOP #endif class MHDate; class MHString; class MHVector; /** * A simple debug module. Define BUGG to use it. * Remove BUGG when you do a build release. */ class MHDebug { public: enum { BUFFER_SIZE = 100000, }; MHDebug (const char* pName, bool bTime = false); ~MHDebug (); void Log (const char *Message, ...); static void Options (const char* pString); static void Print (const char* buffer); static void PrintLog(); static void Start (); static void Stop (); static void Watch (const char* pString); private: char aTab[30]; bool aWatch; bool aTime; MHString* aName; MHDate* aDate; double aSecs; static bool aaTrace; static bool aaLogStuff; static bool aaFlush; static int aaLevel; static char aaBuffer[BUFFER_SIZE]; static char aaBuffer2[BUFFER_SIZE]; static MHVector* aaLog; static MHVector* aaWatches; static FILE* aaFile; }; #endif