#ifndef _WX_DEBUG_H_
#define _WX_DEBUG_H_
+#ifndef __WXPALMOS5__
#ifndef __WXWINCE__
#include <assert.h>
#endif
+#endif // ! __WXPALMOS5__
#include <limits.h> /* for CHAR_BIT used below */
#include "wx/chartype.h" /* for __TFILE__ and wxChar */
/*
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
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,
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,
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();
/* 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)
/* 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 */
/* */