X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0accd1cfe8f53656e5f11a8900c716c56b412dfa..54590cb07847ca447411e8aefba0b01ccc24be22:/include/wx/debug.h diff --git a/include/wx/debug.h b/include/wx/debug.h index 146e6d1ab0..fab0b7c3b3 100644 --- a/include/wx/debug.h +++ b/include/wx/debug.h @@ -14,9 +14,11 @@ #ifndef _WX_DEBUG_H_ #define _WX_DEBUG_H_ +#ifndef __WXPALMOS5__ #ifndef __WXWINCE__ #include #endif +#endif // ! __WXPALMOS5__ #include /* for CHAR_BIT used below */ #include "wx/chartype.h" /* for __TFILE__ and wxChar */ @@ -92,7 +94,7 @@ /* 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(). + wxApp::OnAssertFailure(). Parameters: szFile and nLine - file name and line number of the ASSERT @@ -101,7 +103,7 @@ szMsg - optional message explaining the reason */ - /* this version is for compatibility with wx 2.8: */ + /* this version is for compatibility with wx 2.8 Unicode build only: */ extern void WXDLLIMPEXP_BASE wxOnAssert(const wxChar *szFile, int nLine, const char *szFunc, @@ -129,10 +131,14 @@ const char *szFunc, const char *szCond, const wxChar *szMsg); -#endif // wxUSE_UNICODE +#endif /* wxUSE_UNICODE */ - class WXDLLIMPEXP_BASE wxString; - /* these two work when szMsg passed to debug macro is a string: */ + class WXDLLIMPEXP_FWD_BASE wxString; + class WXDLLIMPEXP_FWD_BASE wxCStrData; + + /* these two work when szMsg passed to debug macro is a string, + we also have to provide wxCStrData overload to resolve ambiguity + which would otherwise arise from wxASSERT( s.c_str() ): */ extern void WXDLLIMPEXP_BASE wxOnAssert(const wxString& szFile, int nLine, const wxString& szFunc, @@ -144,6 +150,18 @@ const wxString& szFunc, const wxString& szCond); + extern void WXDLLIMPEXP_BASE wxOnAssert(const char *szFile, + int nLine, + const char *szFunc, + const char *szCond, + const wxCStrData& msg); + + extern void WXDLLIMPEXP_BASE wxOnAssert(const char *szFile, + int nLine, + const char *szFunc, + const char *szCond, + const wxString& szMsg); + /* call this function to break into the debugger unconditionally (assuming */ /* the program is running under debugger, of course) */ extern void WXDLLIMPEXP_BASE wxTrap(); @@ -154,21 +172,13 @@ /* assert with additional message explaining its cause */ - /* compilers can give a warning (such as "possible unwanted ;") when using */ - /* the default definition of wxASSERT_MSG so we provide an alternative */ - #if defined(__MWERKS__) - #define wxASSERT_MSG(cond, msg) \ - if ( cond ) \ - {} \ - else \ - wxOnAssert(__FILE__, __LINE__, __WXFUNCTION__, #cond, msg) - #else - #define wxASSERT_MSG(cond, msg) \ - if ( cond ) \ - ; \ - else \ - wxOnAssert(__FILE__, __LINE__, __WXFUNCTION__, #cond, msg) - #endif + /* Note: some compilers will give a warning (such as */ + /* "possible unwanted ;") when using a ";" instead of the "{}". */ + #define wxASSERT_MSG(cond, msg) \ + if ( cond ) \ + {} \ + else \ + wxOnAssert(__FILE__, __LINE__, __WXFUNCTION__, #cond, msg) /* special form of assert: always triggers it (in debug mode) */ #define wxFAIL wxFAIL_MSG((const char*)NULL) @@ -228,28 +238,15 @@ /* as wxCHECK2 but with a message explaining why we fail */ -/* see comment near the definition of wxASSERT_MSG for the # if/else reason */ -#if defined(__MWERKS__) - #define wxCHECK2_MSG(cond, op, msg) \ - if ( cond ) \ - {} \ - else \ - { \ - wxFAIL_COND_MSG(#cond, msg); \ - op; \ - } \ - struct wxDummyCheckStruct /* just to force a semicolon */ -#else - #define wxCHECK2_MSG(cond, op, msg) \ - if ( cond ) \ - ; \ - else \ - { \ - wxFAIL_COND_MSG(#cond, msg); \ - op; \ - } \ - struct wxDummyCheckStruct /* just to force a semicolon */ -#endif +#define wxCHECK2_MSG(cond, op, msg) \ + if ( cond ) \ + {} \ + else \ + { \ + wxFAIL_COND_MSG(#cond, msg); \ + op; \ + } \ + struct wxDummyCheckStruct /* just to force a semicolon */ /* special form of wxCHECK2: as wxCHECK, but for use in void functions */ /* */