]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/debug.h
fixed modal dialogs after event loop change
[wxWidgets.git] / include / wx / debug.h
index 787b7966d0c5398025753a8ef1ecbeaac39abd0b..649550d08c8e0484d51aa924b98ca7dbd8098079 100644 (file)
        szFile and nLine - file name and line number of the ASSERT
        szMsg            - optional message explaining the reason
   */
-  extern void WXDLLEXPORT_BASE wxOnAssert(const wxChar *szFile,
+  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 WXDLLEXPORT_BASE wxTrap();
+  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 WXDLLEXPORT_BASE wxAssert(int cond,
+  extern void WXDLLIMPEXP_BASE wxAssert(int cond,
                                         const wxChar *szFile,
                                         int nLine,
                                         const wxChar *szCond,
   //
   // NB: this is made obsolete by wxCOMPILE_TIME_ASSERT() and shouldn't be
   //     used any longer
-  extern bool WXDLLEXPORT_BASE wxAssertIsEqual(int x, int y);
+  extern bool WXDLLIMPEXP_BASE wxAssertIsEqual(int x, int y);
 #else
   #define wxTrap()
 
 
 // Use of wxFalse instead of FALSE suppresses compiler warnings about testing
 // constant expression
-WXDLLEXPORT_DATA_BASE(extern const bool) wxFalse;
+WXDLLIMPEXP_DATA_BASE(extern const bool) wxFalse;
 #define wxAssertFailure wxFalse
 
 // special form of assert: always triggers it (in debug mode)
@@ -181,19 +181,9 @@ WXDLLEXPORT_DATA_BASE(extern const bool) wxFalse;
   particular, this is why we define a struct and not an object (which would
   result in a warning about unused variable) and a named struct (otherwise we'd
   get a warning about an unnamed struct not used to define an object!).
-  The _n__ part is to stop VC++ 7 being confused since it encloses __LINE++ in
-  parentheses. Unfortunately this does not work with other compilers, so
-  we will only enable it when we know the _precise_ symbols to test for.
  */
 
-#define wxMAKE_ASSERT_NAME_HELPER(line)     wxAssert_ ## line
-#define wxMAKE_ASSERT_NAME(line)            wxMAKE_ASSERT_NAME_HELPER(line)
-#if 0
-#define wxMAKE_UNIQUE_ASSERT_NAME           wxMAKE_ASSERT_NAME(_n___ ## __LINE__)
-#else
-#define wxMAKE_UNIQUE_ASSERT_NAME           wxMAKE_ASSERT_NAME(__LINE__)
-#endif
-#define wxMAKE_UNIQUE_ASSERT_NAME2(text)    wxMAKE_ASSERT_NAME(text)
+#define wxMAKE_UNIQUE_ASSERT_NAME           wxMAKE_UNIQUE_NAME(wxAssert_)
 
 /*
   The second argument of this macro must be a valid C++ identifier and not a
@@ -206,6 +196,13 @@ WXDLLEXPORT_DATA_BASE(extern const bool) wxFalse;
 #define wxCOMPILE_TIME_ASSERT(expr, msg) \
     struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
 
+/*
+   When using VC++ 6 with "Edit and Continue" on, the compiler completely
+   mishandles __LINE__ and so wxCOMPILE_TIME_ASSERT() doesn't work, provide a
+   way to make "unique" assert names by specifying a unique prefix explicitly
+ */
+#define wxMAKE_UNIQUE_ASSERT_NAME2(text) wxCONCAT(wxAssert_, text)
+
 #define wxCOMPILE_TIME_ASSERT2(expr, msg, text) \
     struct wxMAKE_UNIQUE_ASSERT_NAME2(text) { unsigned int msg: expr; }
 
@@ -227,7 +224,7 @@ WXDLLEXPORT_DATA_BASE(extern const bool) wxFalse;
 // currently this only really works under Mac in CodeWarrior builds, it always
 // returns false otherwise
 #ifdef __WXMAC__
-    extern bool WXDLLEXPORT_BASE wxIsDebuggerRunning();
+    extern bool WXDLLIMPEXP_BASE wxIsDebuggerRunning();
 #else // !Mac
     inline bool wxIsDebuggerRunning() { return false; }
 #endif // Mac/!Mac