added wxCOMPILE_TIME_ASSERT2() macro allowing to give the unique name to the struct used by wxCOMPILE_TIME_ASSERT() and use it in dynarray.h

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14045 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-02-07 12:33:40 +00:00
parent d77254fc5f
commit 8de1759c6f
2 changed files with 13 additions and 7 deletions

View File

@@ -178,9 +178,10 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse;
get a warning about an unnamed struct not used to define an object!).
*/
#define wxMAKE_ASSERT_NAME_HELPER(line) wxAssert_ ## line
#define wxMAKE_ASSERT_NAME(line) wxMAKE_ASSERT_NAME_HELPER(line)
#define wxMAKE_UNIQUE_ASSERT_NAME wxMAKE_ASSERT_NAME(__LINE__)
#define wxMAKE_ASSERT_NAME_HELPER(line) wxAssert_ ## line
#define wxMAKE_ASSERT_NAME(line) wxMAKE_ASSERT_NAME_HELPER(line)
#define wxMAKE_UNIQUE_ASSERT_NAME wxMAKE_ASSERT_NAME(__LINE__)
#define wxMAKE_UNIQUE_ASSERT_NAME2(text) wxMAKE_ASSERT_NAME(text)
/*
The second argument of this macro must be a valid C++ identifier and not a
@@ -193,6 +194,9 @@ WXDLLEXPORT_DATA(extern const bool) wxFalse;
#define wxCOMPILE_TIME_ASSERT(expr, msg) \
struct wxMAKE_UNIQUE_ASSERT_NAME { unsigned int msg: expr; }
#define wxCOMPILE_TIME_ASSERT2(expr, msg, text) \
struct wxMAKE_UNIQUE_ASSERT_NAME2(text) { unsigned int msg: expr; }
// helpers for wxCOMPILE_TIME_ASSERT below, for private use only
#define wxMAKE_BITSIZE_MSG(type, size) type ## SmallerThan ## size ## Bits

View File

@@ -186,8 +186,9 @@ private:
// ----------------------------------------------------------------------------
#define _WX_DEFINE_ARRAY(T, name, classexp) \
wxCOMPILE_TIME_ASSERT(sizeof(T) <= sizeof(long), \
TypeIsTooBigToBeStoredInWxArray); \
wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(long), \
TypeIsTooBigToBeStoredInWxArray, \
name); \
typedef int (CMPFUNC_CONV *CMPFUNC##T)(T *pItem1, T *pItem2); \
classexp name : public wxBaseArray \
{ \
@@ -230,8 +231,9 @@ public: \
// ----------------------------------------------------------------------------
#define _WX_DEFINE_SORTED_ARRAY(T, name, defcomp, classexp) \
wxCOMPILE_TIME_ASSERT(sizeof(T) <= sizeof(long), \
TypeIsTooBigToBeStoredInWxArray); \
wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(long), \
TypeIsTooBigToBeStoredInWxArray, \
name); \
typedef int (CMPFUNC_CONV *SCMPFUNC##T)(T pItem1, T pItem2); \
classexp name : public wxBaseArray \
{ \