64 lines
1,007 B
C
64 lines
1,007 B
C
|
#ifndef __LTRACE_H__
|
||
|
#define __LTRACE_H__
|
||
|
|
||
|
|
||
|
#define NO_LTRACE
|
||
|
|
||
|
|
||
|
/*#ifndef NO_LTRACE
|
||
|
#ifdef NDEBUG
|
||
|
#error I want ltrace!
|
||
|
#define NO_LTRACE
|
||
|
#endif
|
||
|
#endif*/
|
||
|
|
||
|
|
||
|
#ifndef NO_LTRACE
|
||
|
|
||
|
|
||
|
#ifndef THIS_FILE
|
||
|
const TCHAR THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
class __CLTraceScope
|
||
|
{
|
||
|
public:
|
||
|
__CLTraceScope(LPCTSTR, LPCTSTR, int);
|
||
|
__CLTraceScope(LPCTSTR, int);
|
||
|
~__CLTraceScope();
|
||
|
|
||
|
void scope(LPCTSTR, ...);
|
||
|
void ltrace(LPCTSTR, ...);
|
||
|
|
||
|
private:
|
||
|
LPCTSTR spacing();
|
||
|
LPCTSTR m_scope, m_file;
|
||
|
int m_line;
|
||
|
int m_depth;
|
||
|
static int s_depth;
|
||
|
// __CLTraceScope *m_pprev, *m_pnext;
|
||
|
// static __CLTraceScope *s_pfirst, *s_plast;
|
||
|
};
|
||
|
|
||
|
|
||
|
#define LTSCOPE0(scope) __CLTraceScope __localscope(scope, THIS_FILE, __LINE__)
|
||
|
#define LTSCOPE __CLTraceScope __localscope(THIS_FILE, __LINE__); __localscope.scope
|
||
|
#define LTRACE __localscope.ltrace
|
||
|
|
||
|
|
||
|
#else
|
||
|
|
||
|
|
||
|
inline void __localscope_dummy(LPCTSTR, ...) {}
|
||
|
|
||
|
#define LTSCOPE0(scope) (void(0))
|
||
|
#define LTSCOPE ; __localscope_dummy
|
||
|
#define LTRACE __localscope_dummy
|
||
|
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif //__LTRACE_H__
|