]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/defs.h
Somehow, setting a tint color makes gauge work :/.
[wxWidgets.git] / include / wx / defs.h
index b83a43bd7a051b476f05a8d8c7531180a1851a99..00c6427636e09a398549f6acd69ba47f732d2a2c 100644 (file)
@@ -4,7 +4,6 @@
  *  Author:      Julian Smart and others
  *  Modified by: Ryan Norton (Converted to C)
  *  Created:     01/02/97
- *  RCS-ID:      $Id$
  *  Copyright:   (c) Julian Smart
  *  Licence:     wxWindows licence
  */
@@ -350,44 +349,37 @@ typedef short int WXTYPE;
     #endif
 #endif
 
-#ifndef HAVE_TYPE_TRAITS
-    #if defined(__has_include) && __has_include(<type_traits>)
-        #define HAVE_TYPE_TRAITS
+#ifndef HAVE_TR1_TYPE_TRAITS
+    #if defined(__VISUALC__) && (_MSC_FULL_VER >= 150030729)
+        #define HAVE_TR1_TYPE_TRAITS
     #endif
 #endif
 
-#ifndef HAVE_TR1_TYPE_TRAITS
-    #if defined(__has_include) && __has_include(<tr1/type_traits>)
-        #define HAVE_TR1_TYPE_TRAITS
+#if defined(__has_include)
+    #if !defined(HAVE_TYPE_TRAITS) && __has_include(<type_traits>)
+        #define HAVE_TYPE_TRAITS
     #endif
-    #elif defined(__VISUALC__) && (_MSC_FULL_VER >= 150030729)
+
+    #if !defined(HAVE_TR1_TYPE_TRAITS) && __has_include(<tr1/type_traits>)
         #define HAVE_TR1_TYPE_TRAITS
     #endif
-#endif
 
-#ifndef HAVE_STD_UNORDERED_MAP
-    #if defined(__has_include) && __has_include(<unordered_map>)
+    #if !defined(HAVE_STD_UNORDERED_MAP) && __has_include(<unordered_map>)
         #define HAVE_STD_UNORDERED_MAP
     #endif
-#endif
 
-#ifndef HAVE_TR1_UNORDERED_MAP
-    #if defined(__has_include) && __has_include(<tr1/unordered_map>)
+    #if !defined(HAVE_TR1_UNORDERED_MAP) && __has_include(<tr1/unordered_map>)
         #define HAVE_TR1_UNORDERED_MAP
     #endif
-#endif
 
-#ifndef HAVE_STD_UNORDERED_SET
-    #if defined(__has_include) && __has_include(<unordered_set>)
+    #if !defined(HAVE_STD_UNORDERED_SET) && __has_include(<unordered_set>)
         #define HAVE_STD_UNORDERED_SET
     #endif
-#endif
 
-#ifndef HAVE_TR1_UNORDERED_SET
-    #if defined(__has_include) && __has_include(<tr1/unordered_set>)
+    #if !defined(HAVE_TR1_UNORDERED_SET) && __has_include(<tr1/unordered_set>)
         #define HAVE_TR1_UNORDERED_SET
     #endif
-#endif
+#endif // defined(__has_include)
 
 /* provide replacement for C99 va_copy() if the compiler doesn't have it */
 
@@ -432,17 +424,6 @@ typedef short int WXTYPE;
     #endif /* va_copy/!va_copy */
 #endif /* wxVaCopy */
 
-#ifndef HAVE_VARIADIC_MACROS
-    #if wxCHECK_WATCOM_VERSION(1,2)
-        #define HAVE_VARIADIC_MACROS
-    #endif
-
-    #if wxCHECK_VISUALC_VERSION(9)
-        #define HAVE_VARIADIC_MACROS
-    #endif
-#endif /* HAVE_VARIADIC_MACROS */
-
-
 #ifndef HAVE_WOSTREAM
     /*
         Mingw <= 3.4 and all versions of Cygwin don't have std::wostream
@@ -577,15 +558,53 @@ typedef short int WXTYPE;
     #define WX_ATTRIBUTE_UNUSED
 #endif
 
-/*  Macro to issue warning when using deprecated functions with gcc3 or MSVC7: */
-#if wxCHECK_GCC_VERSION(3, 1)
-    #define wxDEPRECATED(x) __attribute__((deprecated)) x
+/*
+    Macros for marking functions as being deprecated.
+
+    The preferred macro in the new code is wxDEPRECATED_MSG() which allows to
+    explain why is the function deprecated. Almost all the existing code uses
+    the older wxDEPRECATED() or its variants currently, but this will hopefully
+    change in the future.
+ */
+
+/* The basic compiler-specific construct to generate a deprecation warning. */
+#ifdef __clang__
+    #define wxDEPRECATED_DECL __attribute__((deprecated))
+#elif wxCHECK_GCC_VERSION(3, 1)
+    #define wxDEPRECATED_DECL __attribute__((deprecated))
 #elif defined(__VISUALC__) && (__VISUALC__ >= 1300)
-    #define wxDEPRECATED(x) __declspec(deprecated) x
+    #define wxDEPRECATED_DECL __declspec(deprecated)
+#else
+    #define wxDEPRECATED_DECL
+#endif
+
+/*
+    Macro taking the deprecation message. It applies to the next declaration.
+
+    If the compiler doesn't support showing the message, this degrades to a
+    simple wxDEPRECATED(), i.e. at least gives a warning, if possible.
+ */
+#if defined(__clang__) && defined(__has_extension)
+    #if __has_extension(attribute_deprecated_with_message)
+        #define wxDEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
+    #else
+        #define wxDEPRECATED_MSG(msg) __attribute__((deprecated))
+    #endif
+#elif wxCHECK_GCC_VERSION(4, 5)
+    #define wxDEPRECATED_MSG(msg) __attribute__((deprecated(msg)))
+#elif wxCHECK_VISUALC_VERSION(8)
+    #define wxDEPRECATED_MSG(msg) __declspec(deprecated("deprecated: " msg))
 #else
-    #define wxDEPRECATED(x) x
+    #define wxDEPRECATED_MSG(msg) wxDEPRECATED_DECL
 #endif
 
+/*
+    Macro taking the declaration that it deprecates. Prefer to use
+    wxDEPRECATED_MSG() instead as it's simpler (wrapping the entire declaration
+    makes the code unclear) and allows to specify the explanation.
+ */
+#define wxDEPRECATED(x) wxDEPRECATED_DECL x
+
 #if defined(__GNUC__) && !wxCHECK_GCC_VERSION(3, 4)
     /*
         We need to add dummy "inline" to allow gcc < 3.4 to handle the
@@ -1073,7 +1092,7 @@ typedef wxUint32 wxDword;
    architectures to be able to pass wxLongLong_t to the standard functions
    prototyped as taking "long long" such as strtoll().
  */
-#if (defined(__VISUALC__) && defined(__WIN32__))
+#if (defined(__VISUALC__) || defined(__INTELC__)) && defined(__WIN32__)
     #define wxLongLong_t __int64
     #define wxLongLongSuffix i64
     #define wxLongLongFmtSpec "I64"