//#include "stdafx.h" #include #if ( !defined(__OS_IRIX__) ) // Variable Args don't work on the SGI's #include #endif // Variable Args don't work on the SGI's #include "debug.h" static WORD_32 gwDebugModules = DM_ALL; static UINT_32 guiDebugLevel = DL_NORMAL; static FILE *gfpDebugFile = stdout; VOID InitDebug(WORD_32 wModule, UINT_32 uiLevel, CHAR *pcFileName) { gwDebugModules = wModule; guiDebugLevel = uiLevel; if ( pcFileName != NULL ) { gfpDebugFile = fopen(pcFileName, "w"); if ( gfpDebugFile == NULL ) { gfpDebugFile = stdout; TRACE(DM_ALL, DL_ERROR, "Error in InitDebug: Could not open file %s, so writing to STDOUT\n"); } } else { gfpDebugFile = stdout; } } VOID UninitDebug() { if ( gfpDebugFile != stdout ) { VERIFY( fclose(gfpDebugFile) == 0 ); gfpDebugFile = stdout; } } #define DEBUG_TRACE #ifdef DEBUG_TRACE void dprintf(WORD_32 wModule, UINT_32 uiLevel, CHAR *pcFormat, ...) { #if ( !defined(__OS_IRIX__) ) // Variable Args don't work on the SGI's va_list vaArgs; #endif // Variable Args don't work on the SGI's if ( !( (gwDebugModules & wModule) || (guiDebugLevel == DL_ERROR) ) ) { return; } if ( guiDebugLevel < uiLevel ) { return; } switch ( uiLevel ) { case DL_ERROR: fprintf(gfpDebugFile, "ERROR: "); break; default: break; } switch ( wModule ) { case DM_APP: fprintf(gfpDebugFile, "App: "); break; case DM_DISPLAY: fprintf(gfpDebugFile, "Display: "); break; case DM_WINDOW: fprintf(gfpDebugFile, "Window: "); break; case DM_INPUT: fprintf(gfpDebugFile, "Input: "); break; case DM_WORLD: fprintf(gfpDebugFile, "World: "); break; case DM_OBJECT: fprintf(gfpDebugFile, "Object: "); break; case DM_CAMERA: fprintf(gfpDebugFile, "Camera: "); break; case DM_VECTOR: fprintf(gfpDebugFile, "Vector: "); break; case DM_VECTORIND: fprintf(gfpDebugFile, "VectorInd: "); break; case DM_POINT: fprintf(gfpDebugFile, "Point: "); break; case DM_QUATER: fprintf(gfpDebugFile, "Quater: "); break; case DM_MATRIX: fprintf(gfpDebugFile, "Matrix: "); break; case DM_BOUND: fprintf(gfpDebugFile, "Bound: "); break; case DM_RECT: fprintf(gfpDebugFile, "Rect: "); break; default: break; } // Now print the message sent by the program #if ( !defined(__OS_IRIX__) ) // Variable Args don't work on the SGI's va_start(vaArgs, pcFormat); vfprintf(gfpDebugFile, pcFormat, vaArgs); va_end(vaArgs); #endif // Variable Args don't work on the SGI's } #else // DEBUG_TRACE void dprintf(WORD_32 wModule, UINT_32 uiLevel, CHAR *pcFormat, ...) { } #endif // DEBUG_TRACE