//==========================================================================; // // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR // PURPOSE. // // Copyright (c) 1992, 1993 Microsoft Corporation. All Rights Reserved. // //--------------------------------------------------------------------------; // // debug.h // // Description: // // // //==========================================================================; #ifndef _INC_DEBUG #define _INC_DEBUG #ifdef __cplusplus extern "C" { #endif #ifndef _WIN32 #ifndef LPCTSTR #define LPCTSTR LPCSTR #endif #ifndef TCHAR #define TCHAR char #endif #endif //--------------------------------------------------------------------------; // // The following is the only stuff that should need to be changed when // moving this debug code from one project component to another. // //--------------------------------------------------------------------------; // // DEBUG_MODULE_NAME is the module name of the component you are // building. In the [debug] section of WIN.INI you can add // an entry MYMODULE=n to set the debug level for you module. // You can use debug statements like: // DPF(2, "My debug string"); // This output would appear only if MYMODULE=n appears in WIN.INI // and n>=2. // #ifdef _WIN32 #define DEBUG_MODULE_NAME "MSVFW32" // key name and prefix for output #else #define DEBUG_MODULE_NAME "MSVIDEO" // key name and prefix for output #endif // // You can also specify certain types of debug information. For example, // you may have much debug output that is associated only with initialization. // By adding an entry to the following enumeration, and then adding the // corresponding string to the following array of strings, you can specify // a debug level for different types of debug information. Using the // initialization example, you can add an entry like "MYMODULENAME_dbgInit=n" // to the [debug] section to set a debug level for debug information // associated only with initialization. You would use debug statements like: // DPFS(dbgInit, 3, "My debug string"); // This output would appear only if MYMODULENAME_dbgInit=n appears in WIN.INI // and n>=3. This would be usefull when you only want to debug the logic // associated only with a certain part of you program. // // DO NOT CHANGE the first entry in the enum and the aszDbgSpecs. // enum { dbgNone=0, dbgInit, dbgThunks }; #ifdef _INC_DEBUG_CODE LPCTSTR aszDbgSpecs[] = { "\0", "_dbgInit", "_dbgThunks" }; #endif //--------------------------------------------------------------------------; // // You should NOT need to modify anthing below here when // moving this debug code from one project component to another. // //--------------------------------------------------------------------------; // // // #ifdef DEBUG #define DEBUG_SECTION "Debug" // section name for #define DEBUG_MAX_LINE_LEN 255 // max line length (bytes!) #endif // // based code makes since only in win 16 (to try and keep stuff out of // [fixed] data segments, etc)... // #ifndef BCODE #ifdef _WIN32 #define BCODE #else #define BCODE _based(_segname("_CODE")) #endif #endif //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; // // // // #pragma message(REMIND("this is a reminder")) // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; #define DEBUG_QUOTE(x) #x #define DEBUG_QQUOTE(y) DEBUG_QUOTE(y) #define REMIND(sz) __FILE__ "(" DEBUG_QQUOTE(__LINE__) ") : " sz #ifdef DEBUG BOOL WINAPI DbgEnable(UINT uDbgSpec, BOOL fEnable); UINT WINAPI DbgGetLevel(UINT uDbgSpec); UINT WINAPI DbgSetLevel(UINT uDbgSpec, UINT uLevel); VOID WINAPI DbgInitialize(BOOL fEnable); void WINAPI _Assert( char * szFile, int iLine ); void FAR CDECL dprintfS(UINT uDbgSpec, UINT uDbgLevel, LPSTR szFmt, ...); void FAR CDECL dprintf(UINT uDbgLevel, LPSTR szFmt, ...); #define D(x) {x;} #define DPFS dprintfS #define DPF dprintf #define DPI(sz) {static char BCODE ach[] = sz; OutputDebugStr(ach);} #define ASSERT(x) if( !(x) ) _Assert( __FILE__, __LINE__) #else #define DbgEnable(x) FALSE #define DbgGetLevel() 0 #define DbgSetLevel(x) 0 #define DbgInitialize(x) #ifdef _MSC_VER #pragma warning(disable:4002) #endif #define D(x) #define DPFS() #define DPF() #define DPI(sz) #define ASSERT(x) #endif //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; // // // //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; #ifdef RDEBUG #define DebugErr(flags, sz) {static char BCODE szx[] = DEBUG_MODULE_NAME ": " sz; DebugOutput((flags) | DBF_MMSYSTEM, szx);} #define DebugErr1(flags, sz, a) {static char BCODE szx[] = DEBUG_MODULE_NAME ": " sz; DebugOutput((flags) | DBF_MMSYSTEM, szx, a);} #define DebugErr2(flags, sz, a, b) {static char BCODE szx[] = DEBUG_MODULE_NAME ": " sz; DebugOutput((flags) | DBF_MMSYSTEM, szx, a, b);} #else #define DebugErr(flags, sz) #define DebugErr1(flags, sz, a) #define DebugErr2(flags, sz, a, b) #endif #ifdef __cplusplus } #endif #endif // _INC_DEBUG