//+--------------------------------------------------------------------------- // Copyright (C) 1996 Microsoft Corporation. // // File: debug.hxx // // Contents: Debugging macros // //---------------------------------------------------------------------------- #pragma once #if DBG == 1 #include #include # define ISAssert(x) \ (void)((x) || (ISAssertEx(__FILE__, __LINE__, #x),0)) inline void ISAssertEx( char const * szFile, int iLine, char const * szMessage) { char acsString[200]; sprintf( acsString, "%s, File: %s Line: %u\n", szMessage, szFile, iLine ); OutputDebugStringA( acsString ); DebugBreak(); } #define DEB_ERROR 0x00000001 // exported error paths #define DEB_WARN 0x00000002 // exported warnings #define DEB_TRACE 0x00000004 // exported trace messages #define DEB_IERROR 0x00000100 // internal error paths #define DEB_IWARN 0x00000200 // internal warnings #define DEB_ITRACE 0x00000400 // internal trace messages #define DEB_FORCE 0x7fffffff // force message #define DEF_INFOLEVEL (DEB_ERROR | DEB_WARN) #define DECLARE_INFOLEVEL(comp) \ extern unsigned long comp##InfoLevel = DEF_INFOLEVEL; extern void isLogString( const char * pcString ); // // The first form takes a mask and prints to the debugger. // The second form prints to the log file // #define DECLARE_DEBUG(comp) \ extern unsigned long comp##InfoLevel; \ _inline void \ comp##InlineDebugOut(unsigned long fDebugMask, char *pszfmt, ...) \ { \ if (comp##InfoLevel & fDebugMask) \ { \ char acsString[1000];\ va_list va; \ va_start(va, pszfmt);\ vsprintf(acsString, pszfmt, va); \ va_end(va);\ OutputDebugStringA(acsString);\ } \ }\ _inline void \ comp##InlineDebugOut( char *pszfmt, ...) \ { \ if ( TRUE ) \ { \ char acsString[1000];\ va_list va; \ va_start(va, pszfmt);\ vsprintf(acsString, pszfmt, va); \ va_end(va);\ comp##LogString( acsString );\ } \ } #else // DBG == 0 #define ISAssert(x) #define DECLARE_DEBUG(comp) #define DECLARE_INFOLEVEL(comp) #endif // DBG == 0