StarEngine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
definesWindows.h
Go to the documentation of this file.
1 #ifndef NDEBUG
2  #define ASSERT \
3  if ( false ) {} \
4  else \
5  struct LocalAssert { \
6  int mLine; \
7  LocalAssert(int line=__LINE__) : mLine(line) {} \
8  LocalAssert(bool isOK, const tchar* message=_T("")) { \
9  if ( !isOK ) { \
10  tstringstream buffer; \
11  buffer << _T("ERROR!! Assert failed on line ") << LocalAssert().mLine << _T(" in file '") << __FILE__ << _T("'\\Message: \"") << message << _T("\"\n"); \
12  tprintf(buffer.str().c_str()); \
13  __asm { int 3 } \
14  } \
15  } \
16  } myAsserter = LocalAssert
17  #define ASSERTC \
18  if ( false ) {} \
19  else \
20  struct LocalAssert { \
21  int mLine; \
22  LocalAssert(int line=__LINE__) : mLine(line) {} \
23  LocalAssert(bool isOK, const char* message="") { \
24  if ( !isOK ) { \
25  std::stringstream buffer; \
26  buffer << "ERROR!! Assert failed on line " << LocalAssert().mLine << " in file '" << __FILE__ << "'\\Message: \"" << message << "\"\n"; \
27  std::printf(buffer.str().c_str()); \
28  __asm int 3 \
29  } \
30  } \
31  } myAsserter = LocalAssert
32 #else
33 #define ASSERT \
34  if ( true ) {} else \
35 struct NoAssert { \
36  NoAssert(bool isOK, const tchar* message=_T("")) {} \
37 } myAsserter = NoAssert
38 #define ASSERTC \
39  if ( true ) {} else \
40 struct NoAssert { \
41  NoAssert(bool isOK, const tchar* message=_T("")) {} \
42 } myAsserter = NoAssert
43 #endif