-//@{
-
-/** @name Macros which are completely disabled in 'release' mode */
-//@{
-#ifdef __DEBUG__
- /**
- 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)
- @param szFile and nLine - file name and line number of the ASSERT
- szMsg - optional message explaining the reason
+// 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 advices on programming style, don't read
+// further! ;-)
+//
+// Extensive use of these macros is recommended! Remember that ASSERTs are
+// disabled in final (without __WXDEBUG__ defined) build, 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
+#ifdef __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 WXDLLEXPORT wxOnAssert(const wxChar *szFile,
+ int nLine,
+ const wxChar *szMsg = NULL);
+
+ // call this function to break into the debugger uncodnitionally (assuming
+ // the program is running under debugger, of course)
+ extern void WXDLLEXPORT wxTrap();
+
+ /*
+ notice the usage of else at the end of wxASSERT macro: this ensures that
+ the following code
+
+ if ( ... )
+ wxASSERT(...);
+ else
+ ...
+
+ works like expected: if there were no "else", the one in the code above
+ would be matched with a wrong "if"