00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifdef _WIN32
00012
00013 #include <windows.h>
00014 #include <signal.h>
00015
00016 #include "Common/Assert.h"
00017
00018 #define ASSERT_MAX_TEXT 1024
00019 #define ASSERT_MAX_PATH 1024
00020
00021
00022 void KAssert::Assert( char* pExpression, char* pFileName, unsigned long LineNumber )
00023 {
00024 char pText[ASSERT_MAX_TEXT];
00025 char pProgram[ASSERT_MAX_PATH];
00026 char pLine[32];
00027
00028 strcpy( pText, "Assertion Failed !\n\n" );
00029 strcat( pText, "Program: " );
00030
00031 GetModuleFileName( NULL, pProgram, ASSERT_MAX_PATH );
00032 strcat( pText, pProgram );
00033 strcat( pText, "\n" );
00034
00035 strcat( pText, "FileName: ");
00036 strcat( pText, pFileName );
00037 strcat( pText, "\n" );
00038
00039 wsprintf( pLine, "Line: %i", LineNumber );
00040 strcat( pText, pLine );
00041 strcat( pText, "\n\n" );
00042
00043 strcat( pText, "Expression: " );
00044 strcat( pText, pExpression );
00045
00046 int Code = MessageBox( NULL, pText, "Assertion Failed !!!", MB_TASKMODAL|MB_ICONHAND|MB_ABORTRETRYIGNORE|MB_SETFOREGROUND );
00047
00048 switch( Code )
00049 {
00050 case IDABORT:
00051 raise(SIGABRT);
00052 exit(3);
00053
00054 case IDRETRY:
00055 DebugBreak();
00056 return;
00057
00058 case IDIGNORE:
00059 return;
00060 }
00061 }
00062
00063 #endif // _WIN32