/*++ Copyright (c) 1994 Microsoft Corporation Module Name : dbgutil.h Abstract: This module declares the macros to wrap around DEBUG_PRINTS class. This is the exported header file, which the client is allowed to modify for each application the accompanying pgmutils.dll is used. Author: Murali R. Krishnan ( MuraliK ) 22-Sept-1994 Revision History: --*/ # ifndef _DBGUTIL_H_ # define _DBGUTIL_H_ #ifndef _NO_TRACING_ #include "pudebug.h" #else // !_NO_TRACING_ // begin_user_modifiable // // Modify the following flags if necessary // # define DEFAULT_OUTPUT_FLAGS ( DbgOutputStderr | DbgOutputLogFile | \ DbgOutputKdb | DbgOutputTruncate) // end_user_modifiable // begin_user_unmodifiable # if DBG /************************************************************ * Include Headers ************************************************************/ # include /*********************************************************** * Macros ************************************************************/ extern DEBUG_PRINTS * g_pDebug; // define a global debug variable # define DECLARE_DEBUG_PRINTS_OBJECT() \ DEBUG_PRINTS * g_pDebug = NULL; // // Call the following macro as part of your initialization for program // planning to use the debugging class. // # define CREATE_DEBUG_PRINT_OBJECT( pszLabel) \ g_pDebug = PuCreateDebugPrintsObject( pszLabel, DEFAULT_OUTPUT_FLAGS);\ if ( g_pDebug == NULL) { \ OutputDebugString( "Unable to Create Debug Print Object \n"); \ } // // Call the following macro once as part of the termination of program // which uses the debugging class. // # define DELETE_DEBUG_PRINT_OBJECT( ) \ g_pDebug = PuDeleteDebugPrintsObject( g_pDebug); # define VALID_DEBUG_PRINT_OBJECT() \ ( ( g_pDebug != NULL) && g_pDebug->m_fInitialized) // // Use the DBG_CONTEXT without any surrounding braces. // This is used to pass the values for global DebugPrintObject // and File/Line information // # define DBG_CONTEXT g_pDebug, __FILE__, __LINE__ # define DBG_CODE(s) s /* echoes code in debugging mode */ # define DBG_ASSERT( exp) if ( !(exp)) { \ PuDbgAssertFailed( DBG_CONTEXT, #exp, NULL); \ } else {} # define DBG_ASSERT_MSG( exp, pszMsg) \ if ( !(exp)) { \ PuDbgAssertFailed( DBG_CONTEXT, #exp, pszMsg); \ } else {} # define DBG_REQUIRE( exp) DBG_ASSERT( exp) # define DBG_LOG() PuDbgPrint( DBG_CONTEXT, "\n") # define DBG_OPEN_LOG_FILE( pszFile, pszPath) \ PuOpenDbgPrintFile( g_pDebug, (pszFile), (pszPath)) # define DBG_CLOSE_LOG_FILE( ) \ PuCloseDbgPrintFile( g_pDebug) # define SET_DEBUG_PRINT_FLAGS( dwFlags) \ PuSetDbgOutputFlags( g_pDebug, (dwFlags)) # define GET_DEBUG_PRINT_FLAGS() \ PuGetDbgOutputFlags( g_pDebug) // // DBGPRINTF() is printing function ( much like printf) but always called // with the DBG_CONTEXT as follows // DBGPRINTF( ( DBG_CONTEXT, format-string, arguments for format list); // # define DBGPRINTF( args) PuDbgPrint args # else // DBG # define DECLARE_DEBUG_PRINTS_OBJECT() /* Do Nothing */ # define CREATE_DEBUG_PRINT_OBJECT( pszLabel) /* Do Nothing */ # define DELETE_DEBUG_PRINT_OBJECT( ) /* Do Nothing */ # define VALID_DEBUG_PRINT_OBJECT() ( TRUE) # define DBG_CODE(s) /* Do Nothing */ # define DBG_ASSERT(exp) /* Do Nothing */ # define DBG_ASSERT_MSG(exp, pszMsg) /* Do Nothing */ # define DBG_REQUIRE( exp) ( (void) (exp)) # define DBGPRINTF( args) /* Do Nothing */ # define SET_DEBUG_PRINT_FLAGS( dwFlags) /* Do Nothing */ # define GET_DEBUG_PRINT_FLAGS( ) ( 0) # define DBG_LOG() /* Do Nothing */ # define DBG_OPEN_LOG_FILE( pszFile, pszPath) /* Do Nothing */ # define DBG_CLOSE_LOG_FILE() /* Do Nothing */ # endif // DBG // end_user_modifiable // begin_user_unmodifiable #ifdef ASSERT # undef ASSERT #endif # define ASSERT( exp) DBG_ASSERT( exp) // // Define the debugging constants // # define DEBUG_TEST1 0x00000001 # define DEBUG_TEST2 0x00000002 # if DBG extern DWORD g_dwDebugFlags; // Debugging Flags # define DECLARE_DEBUG_VARIABLE() \ DWORD g_dwDebugFlags # define SET_DEBUG_FLAGS( dwFlags) g_dwDebugFlags = dwFlags # define GET_DEBUG_FLAGS() ( g_dwDebugFlags) # define DEBUG_IF( arg, s) if ( DEBUG_ ## arg & GET_DEBUG_FLAGS()) { \ s \ } else {} # define IF_DEBUG( arg) if ( DEBUG_## arg & GET_DEBUG_FLAGS()) # else // DBG # define DECLARE_DEBUG_VARIABLE() /* Do Nothing */ # define SET_DEBUG_FLAGS( dwFlags) /* Do Nothing */ # define GET_DEBUG_FLAGS() ( 0) # define DEBUG_IF( arg, s) /* Do Nothing */ # define IF_DEBUG( arg) if ( 0) # endif // DBG #endif // !_NO_TRACING_ # endif /* _DBGUTIL_H_ */ /************************ End of File ***********************/