-/* ---------------------------------------------------------------------------- */
-/* Debugging macros */
-/* */
-/* All debugging macros rely on ASSERT() which in turn calls user-defined */
-/* OnAssert() function. To keep things simple, it's called even when the */
-/* expression is true (i.e. everything is ok) and by default does nothing: just */
-/* returns the same value back. But if you redefine it to do something more sexy */
-/* (popping up a message box in your favourite GUI, sending you e-mail or */
-/* whatever) it will affect all ASSERTs, FAILs and CHECKs in your code. */
-/* */
-/* Warning: if you don't like advice on programming style, don't read */
-/* further! ;-) */
-/* */
-/* Extensive use of these macros is recommended! Remember that ASSERTs are */
-/* disabled in final build (without __WXDEBUG__ defined), so they add strictly */
-/* nothing to your program's code. On the other hand, CHECK macros do stay */
-/* even in release builds, but in general are not much of a burden, while */
-/* a judicious use of them might increase your program's stability. */
-/* ---------------------------------------------------------------------------- */
-
-/* Macros which are completely disabled in 'release' mode */
-/* */
-/* NB: these functions are implemented in src/common/appcmn.cpp */
-#if defined(__cplusplus) && defined(__WXDEBUG__)
- /*
- This function is called whenever one of debugging macros fails (i.e.
- condition is false in an assertion). To customize its behaviour, override
- wxApp::OnAssert().
-
- Parameters:
- szFile and nLine - file name and line number of the ASSERT
- szFunc - function name of the ASSERT, may be NULL (NB: ASCII)
- szCond - text form of the condition which failed
- szMsg - optional message explaining the reason
- */
- extern void WXDLLIMPEXP_BASE wxOnAssert(const wxChar *szFile,
- int nLine,
- const char *szFunc,
- const wxChar *szCond,
- const wxChar *szMsg = NULL);
-
- /* call this function to break into the debugger unconditionally (assuming */
- /* the program is running under debugger, of course) */
- extern void WXDLLIMPEXP_BASE wxTrap();
-
- /* generic assert macro */
- #define wxASSERT(cond) wxASSERT_MSG(cond, NULL)
-
- /* assert with additional message explaining it's cause */
- #define wxASSERT_MSG(cond, msg) \
- if ( cond ) \
- ; \
- else \
- wxOnAssert(__TFILE__, __LINE__, __FUNCTION__, _T(#cond), msg)
-
- /* special form of assert: always triggers it (in debug mode) */
- #define wxFAIL wxFAIL_MSG(NULL)
-
- /* FAIL with some message */
- #define wxFAIL_MSG(msg) wxFAIL_COND_MSG("wxAssertFailure", msg)
-
- /* FAIL with some message and a condition */
- #define wxFAIL_COND_MSG(cond, msg) \
- wxOnAssert(__TFILE__, __LINE__, __FUNCTION__, _T(cond), msg)
-
- /* an assert helper used to avoid warning when testing constant expressions, */
- /* i.e. wxASSERT( sizeof(int) == 4 ) can generate a compiler warning about */
- /* expression being always true, but not using */
- /* wxASSERT( wxAssertIsEqual(sizeof(int), 4) ) */
- /* */
- /* NB: this is made obsolete by wxCOMPILE_TIME_ASSERT() and shouldn't be */
- /* used any longer */
- extern bool WXDLLIMPEXP_BASE wxAssertIsEqual(int x, int y);