DBUGIT.H
 
// -------------------------------------------------------------------------- 
#define TraceTag     TRACEFUNC 
#define TraceError(_sz,_x)   TRACEFUNC(NULL,"ERROR: %s %08x",_sz,_x) 
 
#define DoTagsDialog() 
#define TagRegister 0; 
#define RestoreDefaultDebugState() 
 
#define tagNull      __LINE__,NULL 
#define tagUI        __LINE__,"ui"         
#define tagUIOther   __LINE__,"uiother" 
#define tagMouse     __LINE__,"mouse" 
#define tagEngine    __LINE__,"engine" 
#define tagEngineMin __LINE__,"enginemin" 
#define tagForm      __LINE__,"form" 
#define tagFormFunc  __LINE__,"formfunc" 
#define tagFuncTriv  __LINE__,"functriv" 
 
 
#define AssertSz(_x,_sz) if (!(_x)) ASSERTFUNC(_sz,__LINE__,__FILE__,#_x); 
#define Assert(_x) AssertSz(_x,"assertion") 
#define ASSERTDATA 
#define pdebug 
#define stddbgmin NULL 
#define stddbg    NULL 
 
#define NYI(_x) AssertSz(0,_x) 
 
 
// -------------------------------------------------------------------------- 
#ifdef DEBUG 
void _cdecl TRACEFUNC(int line, char * tag, char * szFmt, ...) 
#ifdef DEBUG_CODE 
{ 
    va_list valMarker; 
    static char rgch[1024]; 
    static char szTraceNumber[32]; 
    static char szLineNumber[32]; 
    int  x,q; 
 
    if (tag && 1 != GetPrivateProfileInt("tag",tag, 1, "c:\\trace.out")) return; 
 
    va_start(valMarker, szFmt); 
    wvsprintf(rgch, szFmt, valMarker); 
    lstrcat(rgch,"                                                                                                                                                      "); 
    rgch[125] = '\0'; 
    wsprintf(rgch + 125,"<<< (%5d) ",line); 
    if (tag) lstrcat(rgch,tag); 
    else lstrcat(rgch,"NULL"); 
    va_end(valMarker); 
 
    if (GetPrivateProfileInt ("trace", "trace", 0, "c:\\trace.out")) 
    { 
        // ----- how many traces have we output 
 
        x = GetPrivateProfileInt ("trace", "last", 0, "c:\\trace.out"); 
        ++x; 
        wsprintf(szTraceNumber,"%d",x); 
        WritePrivateProfileString ("trace", "last", szTraceNumber, "c:\\trace.out"); 
 
 
        // ----- cat the file 
 
        FILE *fp; 
        fp = fopen("c:\\trace.out", "a"); 
        if (fp) 
        { 
            fprintf(fp,"%s",rgch); 
            fclose(fp); 
        } 
        else MessageBeep(0); 
 
        // ----- debug break 
 
        if (q=GetPrivateProfileInt ("trace", "break", 0, "c:\\trace.out")) 
        { 
            if (q == x || -1 == q) 
                MessageBox(NULL,rgch,"TRACE TAG",MB_OK); 
        } 
 
    } 
} 
#else 
; 
#endif 
 
void ASSERTFUNC(char *sz,int line,char *file,char* string) 
#ifdef DEBUG_CODE 
{ 
    static char rgch[1024]; 
    TraceTag(tagNull,"\n\nASSERTION FAILURE !!!"); 
    MessageBeep(0); 
    wsprintf(rgch,"%s(%d) (%s)\n%s",file,line,string,sz); 
    TraceTag(tagNull,rgch); 
    MessageBox(NULL,rgch,"assertion failure",MB_TASKMODAL|MB_ABORTRETRYIGNORE); 
} 
#else 
; 
#endif 
#ifndef IID_IPersistMessage 
#ifdef _WIN32 
#include <objbase.h> 
#else 
#include <compobj.h> 
#endif 
#include <mapiform.h> 
#else 
#pragma message("here we are now .. REFCLSID") 
#endif 
char *DumpCLSID(REFCLSID riid) 
#ifdef DEBUG_CODE 
    { 
    static char ach[44]; 
    static char szName[256]; 
 
    szName[0] = '\0'; 
 
#ifdef _WIN32 
    if      (IsEqualIID(riid, IID_IUnknown            )) lstrcpy(szName,"IID_IUnknown           "); 
    else if (IsEqualIID(riid, IID_IClassFactory       )) lstrcpy(szName,"IID_IClassFactory      "); 
    else if (IsEqualIID(riid, IID_IMalloc             )) lstrcpy(szName,"IID_IMalloc            "); 
    else if (IsEqualIID(riid, IID_IMarshal            )) lstrcpy(szName,"IID_IMarshal           "); 
    else if (IsEqualIID(riid, IID_IRpcChannel         )) lstrcpy(szName,"IID_IRpcChannel        "); 
    else if (IsEqualIID(riid, IID_IRpcStub            )) lstrcpy(szName,"IID_IRpcStub           "); 
    else if (IsEqualIID(riid, IID_IStubManager        )) lstrcpy(szName,"IID_IStubManager       "); 
    else if (IsEqualIID(riid, IID_IRpcProxy           )) lstrcpy(szName,"IID_IRpcProxy          "); 
    else if (IsEqualIID(riid, IID_IProxyManager       )) lstrcpy(szName,"IID_IProxyManager      "); 
    else if (IsEqualIID(riid, IID_IPSFactory          )) lstrcpy(szName,"IID_IPSFactory         "); 
    else if (IsEqualIID(riid, IID_ILockBytes          )) lstrcpy(szName,"IID_ILockBytes         "); 
    else if (IsEqualIID(riid, IID_IStorage            )) lstrcpy(szName,"IID_IStorage           "); 
    else if (IsEqualIID(riid, IID_IStream             )) lstrcpy(szName,"IID_IStream            "); 
    else if (IsEqualIID(riid, IID_IEnumSTATSTG        )) lstrcpy(szName,"IID_IEnumSTATSTG       "); 
    else if (IsEqualIID(riid, IID_IBindCtx            )) lstrcpy(szName,"IID_IBindCtx           "); 
    else if (IsEqualIID(riid, IID_IMoniker            )) lstrcpy(szName,"IID_IMoniker           "); 
    else if (IsEqualIID(riid, IID_IRunningObjectTable )) lstrcpy(szName,"IID_IRunningObjectTable"); 
    else if (IsEqualIID(riid, IID_IInternalMoniker    )) lstrcpy(szName,"IID_IInternalMoniker   "); 
    else if (IsEqualIID(riid, IID_IRootStorage        )) lstrcpy(szName,"IID_IRootStorage       "); 
    else if (IsEqualIID(riid, IID_IMessageFilter      )) lstrcpy(szName,"IID_IMessageFilter     "); 
    else if (IsEqualIID(riid, CLSID_StdMarshal        )) lstrcpy(szName,"CLSID_StdMarshal       "); 
    else if (IsEqualIID(riid, IID_IStdMarshalInfo     )) lstrcpy(szName,"IID_IStdMarshalInfo    "); 
    else if (IsEqualIID(riid, IID_IExternalConnection )) lstrcpy(szName,"IID_IExternalConnection"); 
    else if (IsEqualIID(riid, IID_IPersistMessage     )) lstrcpy(szName,"IID_IPersistMessage    "); 
    else if (IsEqualIID(riid, IID_IMAPIMessageSite    )) lstrcpy(szName,"IID_IMAPIMessageSite   "); 
    else if (IsEqualIID(riid, IID_IMAPISession        )) lstrcpy(szName,"IID_IMAPISession       "); 
    else if (IsEqualIID(riid, IID_IMAPIViewContext    )) lstrcpy(szName,"IID_IMAPIViewContext   "); 
    else if (IsEqualIID(riid, IID_IMAPIViewAdviseSink )) lstrcpy(szName,"IID_IMAPIViewAdviseSink"); 
    else if (IsEqualIID(riid, IID_IMAPIFormAdviseSink )) lstrcpy(szName,"IID_IMAPIFormAdviseSink"); 
    else if (IsEqualIID(riid, IID_IMAPIFormInfo       )) lstrcpy(szName,"IID_IMAPIFormInfo      "); 
    else if (IsEqualIID(riid, IID_IMAPIFormMgr        )) lstrcpy(szName,"IID_IMAPIFormMgr       "); 
    else if (IsEqualIID(riid, IID_IMAPIFormContainer  )) lstrcpy(szName,"IID_IMAPIFormContainer "); 
    else if (IsEqualIID(riid, IID_IMAPIForm           )) lstrcpy(szName,"IID_IMAPIForm          "); 
    else                                                 lstrcpy(szName,"                       "); 
#endif 
 
 
    wsprintf(ach, "{%8.8lX-%4.4X-%4.4X-%2.2X%2.2X-%2.2X%2.2X%2.2X%2.2X%2.2X%2.2X} %s", 
        riid.Data1, 
        (int)riid.Data2, 
        (int)riid.Data3, 
        (int)riid.Data4[0], 
        (int)riid.Data4[1], 
        (int)riid.Data4[2], 
        (int)riid.Data4[3], 
        (int)riid.Data4[4], 
        (int)riid.Data4[5], 
        (int)riid.Data4[6], 
        (int)riid.Data4[7], 
        szName); 
    return ach; 
    } 
#else 
; 
#endif 
#else 
#define TRACEFUNC   ;/##/ 
//#define TRACEFUNC    
#define ASSERTFUNC(_1,_2,_3,_4) 
#define DumpCLSID(_x) 0 
#endif