]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/strvararg.h
fixing warning and compile error against 10.4
[wxWidgets.git] / include / wx / strvararg.h
index 21977e8e4007f1540837886ad167da2d4061f937..7dc661217176289ecd1f85948903f076d8bdaf80 100644 (file)
@@ -151,14 +151,16 @@ public:
         : m_wchar(str), m_str(NULL), m_cstr(NULL) {}
 
     // Possible argument types. These are or-combinable for wxASSERT_ARG_TYPE
         : m_wchar(str), m_str(NULL), m_cstr(NULL) {}
 
     // Possible argument types. These are or-combinable for wxASSERT_ARG_TYPE
-    // convenience.
+    // convenience. Some of the values are or-combined with another value, this
+    // expresses "supertypes" for use with wxASSERT_ARG_TYPE masks. For example,
+    // a char* string is also a pointer and an integer is also a char.
     enum ArgumentType
     {
         Arg_Char        = 0x0001,    // character as char %c
         Arg_Pointer     = 0x0002,    // %p
     enum ArgumentType
     {
         Arg_Char        = 0x0001,    // character as char %c
         Arg_Pointer     = 0x0002,    // %p
-        Arg_String      = 0x0004,    // any form of string
+        Arg_String      = 0x0004 | Arg_Pointer, // any form of string (%s and %p too)
 
 
-        Arg_Int         = 0x0008,
+        Arg_Int         = 0x0008 | Arg_Char, // (ints can be used with %c)
 #if SIZEOF_INT == SIZEOF_LONG
         Arg_LongInt     = Arg_Int,
 #else
 #if SIZEOF_INT == SIZEOF_LONG
         Arg_LongInt     = Arg_Int,
 #else
@@ -316,7 +318,11 @@ struct wxFormatStringArgumentFinder<wxWCharBuffer>
                           "format specifier doesn't match argument type" ); \
         } while ( wxFalse )
 #else
                           "format specifier doesn't match argument type" ); \
         } while ( wxFalse )
 #else
-    #define wxASSERT_ARG_TYPE(fmt, index, expected_mask)
+    // Just define it to suppress "unused parameter" warnings for the
+    // parameters which we don't use otherwise
+    #define wxASSERT_ARG_TYPE(fmt, index, expected_mask)                      \
+        wxUnusedVar(fmt);                                                     \
+        wxUnusedVar(index)
 #endif // wxDEBUG_LEVEL/!wxDEBUG_LEVEL
 
 
 #endif // wxDEBUG_LEVEL/!wxDEBUG_LEVEL
 
 
@@ -414,14 +420,14 @@ wxFORMAT_STRING_SPECIFIER(signed char, wxFormatString::Arg_Char | wxFormatString
 wxFORMAT_STRING_SPECIFIER(unsigned char, wxFormatString::Arg_Char | wxFormatString::Arg_Int)
 #endif
 
 wxFORMAT_STRING_SPECIFIER(unsigned char, wxFormatString::Arg_Char | wxFormatString::Arg_Int)
 #endif
 
-wxFORMAT_STRING_SPECIFIER(char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(unsigned char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(signed char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(const char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(const unsigned char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(const signed char*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(wchar_t*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
-wxFORMAT_STRING_SPECIFIER(const wchar_t*, wxFormatString::Arg_String | wxFormatString::Arg_Pointer)
+wxFORMAT_STRING_SPECIFIER(char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(unsigned char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(signed char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(const char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(const unsigned char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(const signed char*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(wchar_t*, wxFormatString::Arg_String)
+wxFORMAT_STRING_SPECIFIER(const wchar_t*, wxFormatString::Arg_String)
 
 wxFORMAT_STRING_SPECIFIER(int*, wxFormatString::Arg_IntPtr | wxFormatString::Arg_Pointer)
 wxFORMAT_STRING_SPECIFIER(short int*, wxFormatString::Arg_ShortIntPtr | wxFormatString::Arg_Pointer)
 
 wxFORMAT_STRING_SPECIFIER(int*, wxFormatString::Arg_IntPtr | wxFormatString::Arg_Pointer)
 wxFORMAT_STRING_SPECIFIER(short int*, wxFormatString::Arg_ShortIntPtr | wxFormatString::Arg_Pointer)
@@ -503,8 +509,7 @@ struct wxArgNormalizerWithBuffer
                               unsigned index)
         : m_value(buf)
     {
                               unsigned index)
         : m_value(buf)
     {
-        wxASSERT_ARG_TYPE( fmt, index,
-                           wxFormatString::Arg_String | wxFormatString::Arg_Pointer );
+        wxASSERT_ARG_TYPE( fmt, index, wxFormatString::Arg_String );
     }
 
     const CharType *get() const { return m_value; }
     }
 
     const CharType *get() const { return m_value; }
@@ -538,8 +543,7 @@ struct WXDLLIMPEXP_BASE wxArgNormalizerNative<const wxCStrData&>
                           unsigned index)
         : m_value(value)
     {
                           unsigned index)
         : m_value(value)
     {
-        wxASSERT_ARG_TYPE( fmt, index,
-                           wxFormatString::Arg_String | wxFormatString::Arg_Pointer );
+        wxASSERT_ARG_TYPE( fmt, index, wxFormatString::Arg_String );
     }
 
     const wxStringCharType *get() const;
     }
 
     const wxStringCharType *get() const;
@@ -599,8 +603,7 @@ struct wxArgNormalizerUtf8<const char*>
                         const wxFormatString *fmt,
                         unsigned index)
     {
                         const wxFormatString *fmt,
                         unsigned index)
     {
-        wxASSERT_ARG_TYPE( fmt, index,
-                           wxFormatString::Arg_String | wxFormatString::Arg_Pointer );
+        wxASSERT_ARG_TYPE( fmt, index, wxFormatString::Arg_String );
 
         if ( wxLocaleIsUtf8 )
         {
 
         if ( wxLocaleIsUtf8 )
         {