#ifdef _DEBUG #include "debug.h" #include #include #include FILE *g_fDebug; unsigned int iIndent=0; bool DebugPrint(char *sMessage, int iType) { return false; bool bFinishLine = true; bool bShowIndent = true; bool bShowMessage = true; char *sPrefix = 0, *sPostfix = 0; unsigned int iNewIndent = iIndent; switch (iType) { case DEBUG_LINE_QUALIFIED: { sPostfix="}"; sPrefix="{"; break; } case DEBUG_FUNCTIONSTART: { sPostfix="]"; sPrefix="["; } case DEBUG_BLOCKSTART: { iNewIndent=iIndent+1; break; } case DEBUG_CHECK: { sPostfix="..."; //bFinishLine=false; iNewIndent=iIndent+1; break; } case DEBUG_BLOCKEND: case DEBUG_FUNCTIONEND: { bFinishLine=false; bShowIndent=false; bShowMessage=false; if (iIndent>0) iNewIndent=--iIndent; break; } case DEBUG_RESULT: { //bShowIndent=false; sPostfix=")"; sPrefix="("; if (iIndent>0) iNewIndent=--iIndent; break; } } //indent if (iIndent&&bShowIndent) { char *sIndent=(char*) malloc(iIndent+1); memset(sIndent, '\t', iIndent); sIndent[iIndent]='\0'; //fputs(sIndent, g_fDebug); free(sIndent); } //pre if (sPrefix) fputs(sPrefix, g_fDebug); //message if (bShowMessage) { fputs(sMessage, g_fDebug); } //post if (sPostfix) fputs(sPostfix, g_fDebug); //EOL if (bFinishLine) fputs("\n", g_fDebug); fflush(g_fDebug); iIndent=iNewIndent; return true; } bool DebugInit() { const char *filename = "tips.log"; g_fDebug = fopen(filename, "w"); if (!g_fDebug) { char debug[1024]; _snprintf(debug, 1023, "failed to open log file [%s]", filename); MessageBox(0, debug, "system", 0); } return (g_fDebug!=NULL); } bool DebugFinalise() { fclose(g_fDebug); return true; } bool DebugPrint(wchar_t *sMessage, int iType) { char *sChar=(char*) malloc(wcslen(sMessage)+1); sprintf(sChar, "%S", sMessage); bool bRet=DebugPrint(sChar, iType); free(sChar); return bRet; } #endif