|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1998 - 2002
//
// File: debug.h
//
//--------------------------------------------------------------------------
#ifndef __debug_h
#define __debug_h
/*-----------------------------------------------------------------------------
/ Macros to ease the use of the debugging APIS. /----------------------------------------------------------------------------*/
#if defined(DBG) || defined(DEBUG)
#ifndef DEBUG
#define DEBUG
#endif
extern DWORD g_dwTraceMask; #else
#undef DEBUG
#endif
#ifdef DEBUG
#define TraceSetMask(dwMask) DoTraceSetMask(dwMask)
#define TraceEnter(dwMask, fn) LPCTSTR _szf = TEXT(fn);BOOL DO_LOG=((dwMask) & g_dwTraceMask);if (DO_LOG) DoTraceEnter(dwMask, TEXT(fn))
#define TraceLeave if (DO_LOG) DoTraceLeave
#define Trace if (DO_LOG) DoTrace
#define TraceMsg(s) if (DO_LOG) DoTrace(TEXT(s))
#define TraceGUID(s, rGUID) if (DO_LOG) DoTraceGUID(TEXT(s), rGUID)
#define TraceViewMsg(m, w, l) if (DO_LOG) DoTraceViewMsg(m, w, l)
#define TraceMenuMsg(m, w, l) if (DO_LOG) DoTraceMenuMsg(m, w, l)
/*-----------------------------------------------------------------------------
/ Debugging APIs (use the Macros, they make it easier and cope with correctly / removing debugging when it is disabled at built time). /----------------------------------------------------------------------------*/ void DoTraceSetMask(DWORD dwMask); void DoTraceEnter(DWORD dwMask, LPCTSTR pName); void DoTraceLeave(void); void DoTrace(LPCTSTR pFormat, ...); void DoTraceGUID(LPCTSTR pPrefix, REFGUID rGUID); void DoTraceViewMsg( UINT uMsg, WPARAM wParam, LPARAM lParam ); void DoTraceMenuMsg( UINT uMsg, WPARAM wParam, LPARAM lParam ); void DoTraceAssert(int iLine, LPCTSTR pFilename);
#define TraceAssert(x) \
{ if ( !(x) ) DoTraceAssert(__LINE__, TEXT(__FILE__)); }
#define TraceLeaveResult(hr) \
{ HRESULT __hr = hr; if (FAILED(__hr)) Trace(TEXT("%s Failed (%08x)"), _szf, hr ); TraceLeave(); return __hr; }
#define TraceLeaveResultNoRet(hr) \
{ HRESULT __hr = hr; if (FAILED(__hr)) Trace(TEXT("Failed (%08x)"), hr); TraceLeave(); }
#define TraceLeaveVoid() \
{ TraceLeave(); return; }
#define TraceLeaveValue(value) \
{ TraceLeave(); return(value); }
#define TraceCheckResult(hr,x) \
{ HRESULT __hr = hr; if (FAILED(__hr)) DoTrace( TEXT("%s (hr=%08X)"), TEXT(x), hr ); }
#else
#define TraceSetMask(dwMask)
#define TraceEnter(dwMask, fn)
#define TraceLeave()
#define Trace if (FALSE)
#define TraceMsg(s)
#define TraceGUID(s, rGUID)
#define TraceViewMsg(m, w, l)
#define TraceMenuMsg(m, w, l)
#define TraceCheckResult(hr,x) { ; }
#define TraceAssert(x)
#define TraceLeaveResult(hr) { return hr; }
#define TraceLeaveVoid() { return; }
#define TraceLeaveValue(value) { return(value); }
#define TraceLeaveResultNoRet(hr) { return; }
#endif
#endif
|