]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/debug.h
Better support for unspecified property value in wxDateProperty and DatePickerCtrl...
[wxWidgets.git] / include / wx / debug.h
index 146e6d1ab0653f251f0ff657a51c3a9a56e1a461..fab0b7c3b3d118b27ea8d9c368970055d76479ce 100644 (file)
 #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 */
@@ -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
        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 */
 /*  */