]> git.saurik.com Git - wxWidgets.git/commitdiff
added wxMAKE_UNIQUE_NAME to wx/defs.h, use it in wx/debug.h
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 5 Jul 2003 23:56:32 +0000 (23:56 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 5 Jul 2003 23:56:32 +0000 (23:56 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21695 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/debug.h
include/wx/defs.h
include/wx/dynarray.h

index 10e902d5c6266ba0573a04369f56fe61cce04ed8..ccad73ccbadf8119851a0e8b50c65e1add9b7da9 100644 (file)
@@ -181,19 +181,10 @@ WXDLLIMPEXP_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!).
   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_)
+#define wxMAKE_UNIQUE_ASSERT_NAME2(text)    wxMAKE_UNIQUE_NAME(text)
 
 /*
   The second argument of this macro must be a valid C++ identifier and not a
 
 /*
   The second argument of this macro must be a valid C++ identifier and not a
index a95dac23ce8ad95c2b66bb8588b2f237ffcdcf94..ce1fbb21ad3e2f2ac30da5dad2145742087ec10f 100644 (file)
@@ -487,6 +487,15 @@ typedef int wxWindowID;
 // size of statically declared array
 #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0]))
 
 // size of statically declared array
 #define WXSIZEOF(array)   (sizeof(array)/sizeof(array[0]))
 
+// helper macros to be able to define unique/anonymous objects: this works by
+// appending the current line number to the given identifier to reduce the
+// probability of the conflict (it may still happen if this is used in the
+// headers, hence you should avoid doing it or provide unique prefixes then)
+#define wxCONCAT(text, line)        text ## line
+#define wxCONCAT_LINE2(text, line)  wxCONCAT(text, line)
+#define wxCONCAT_LINE(text)         wxCONCAT_LINE2(text, __LINE__)
+#define wxMAKE_UNIQUE_NAME(text)    wxCONCAT_LINE(text)
+
 // symbolic constant used by all Find()-like functions returning positive
 // integer on success as failure indicator
 #define wxNOT_FOUND       (-1)
 // symbolic constant used by all Find()-like functions returning positive
 // integer on success as failure indicator
 #define wxNOT_FOUND       (-1)
index 02bbcff0dd92991a8490af2967d075171409b9ca..50dd0b5dfb781416facef2d75ecceee6f2b7e193 100644 (file)
@@ -593,7 +593,8 @@ WX_DECLARE_USER_EXPORTED_BASEARRAY(double,       wxBaseArrayDouble,
 // Some commonly used predefined arrays
 // ----------------------------------------------------------------------------
 
 // Some commonly used predefined arrays
 // ----------------------------------------------------------------------------
 
-WX_DEFINE_USER_EXPORTED_ARRAY_SHORT (short,  wxArrayShort,   WXDLLIMPEXP_BASE);
+WX_DEFINE_USER_EXPORTED_ARRAY_SHORT (short,  wxArrayShort,   
+                                     WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY_INT   (int,    wxArrayInt,     WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY_LONG  (long,   wxArrayLong,    WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY       (void *, wxArrayPtrVoid, WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY_INT   (int,    wxArrayInt,     WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY_LONG  (long,   wxArrayLong,    WXDLLIMPEXP_BASE);
 WX_DEFINE_USER_EXPORTED_ARRAY       (void *, wxArrayPtrVoid, WXDLLIMPEXP_BASE);