- #endif /* !WXDEBUG */
-#endif /* __WXDEBUG__ */
-
-/* ---------------------------------------------------------------------------- */
-/* 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 may be redefined to do something non trivial and is called
- whenever one of debugging macros fails (i.e. condition is false in an
- assertion)
-
- parameters:
- szFile and nLine - file name and line number of the ASSERT
- szMsg - optional message explaining the reason
- */
- extern void WXDLLIMPEXP_BASE wxOnAssert(const wxChar *szFile,
- int nLine,
- 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();
-
- /* helper function used to implement wxASSERT and wxASSERT_MSG */
- /* */
- /* note using "int" and not "bool" for cond to avoid VC++ warnings about */
- /* implicit conversions when doing "wxAssert( pointer )" and also use of */
- /* "!!cond" below to ensure that everything is converted to int */
- extern void WXDLLIMPEXP_BASE wxAssert(int cond,
- const wxChar *szFile,
- int nLine,
- const wxChar *szCond,
- const wxChar *szMsg = NULL) ;
-
- /* generic assert macro */
- #define wxASSERT(cond) wxAssert(!!(cond), __TFILE__, __LINE__, _T(#cond))
-
- /* assert with additional message explaining it's cause */
- #define wxASSERT_MSG(cond, msg) \
- wxAssert(!!(cond), __TFILE__, __LINE__, _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);
-#else
- #define wxTrap()
-
- /* nothing to do in release modes (hopefully at this moment there are */
- /* no more bugs ;-) */
- #define wxASSERT(cond)
- #define wxASSERT_MSG(x, m)
-#endif /* __WXDEBUG__ */
-
-#ifdef __cplusplus
- /* Use of wxFalse instead of false suppresses compiler warnings about testing */
- /* constant expression */
- WXDLLIMPEXP_DATA_BASE(extern const bool) wxFalse;
-#endif