X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/622bc15f1105916107b140884c3693639ec30d0f..e733c4ce1e24cf7e4b0b0d8362fc59aaa7a7641c:/include/wx/defs.h diff --git a/include/wx/defs.h b/include/wx/defs.h index 76f97026d5..00c6427636 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -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 */ @@ -356,6 +355,32 @@ typedef short int WXTYPE; #endif #endif +#if defined(__has_include) + #if !defined(HAVE_TYPE_TRAITS) && __has_include() + #define HAVE_TYPE_TRAITS + #endif + + #if !defined(HAVE_TR1_TYPE_TRAITS) && __has_include() + #define HAVE_TR1_TYPE_TRAITS + #endif + + #if !defined(HAVE_STD_UNORDERED_MAP) && __has_include() + #define HAVE_STD_UNORDERED_MAP + #endif + + #if !defined(HAVE_TR1_UNORDERED_MAP) && __has_include() + #define HAVE_TR1_UNORDERED_MAP + #endif + + #if !defined(HAVE_STD_UNORDERED_SET) && __has_include() + #define HAVE_STD_UNORDERED_SET + #endif + + #if !defined(HAVE_TR1_UNORDERED_SET) && __has_include() + #define HAVE_TR1_UNORDERED_SET + #endif +#endif // defined(__has_include) + /* provide replacement for C99 va_copy() if the compiler doesn't have it */ /* could be already defined by configure or the user */ @@ -399,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 @@ -538,15 +552,59 @@ typedef short int WXTYPE; # endif #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 +#if defined(__GNUC__) + #define WX_ATTRIBUTE_UNUSED __attribute__ ((unused)) +#else + #define WX_ATTRIBUTE_UNUSED +#endif + +/* + 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 @@ -631,7 +689,7 @@ typedef short int WXTYPE; template inline void wxDELETE(T*& ptr) { - typedef char TypeIsCompleteCheck[sizeof(T)]; + typedef char TypeIsCompleteCheck[sizeof(T)] WX_ATTRIBUTE_UNUSED; if ( ptr != NULL ) { @@ -644,7 +702,7 @@ typedef short int WXTYPE; template inline void wxDELETEA(T*& ptr) { - typedef char TypeIsCompleteCheck[sizeof(T)]; + typedef char TypeIsCompleteCheck[sizeof(T)] WX_ATTRIBUTE_UNUSED; if ( ptr != NULL ) { @@ -1034,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" @@ -3050,6 +3108,7 @@ DECLARE_WXCOCOA_OBJC_CLASS(NSMutableArray); DECLARE_WXCOCOA_OBJC_CLASS(NSNotification); DECLARE_WXCOCOA_OBJC_CLASS(NSObject); DECLARE_WXCOCOA_OBJC_CLASS(NSPanel); +DECLARE_WXCOCOA_OBJC_CLASS(NSResponder); DECLARE_WXCOCOA_OBJC_CLASS(NSScrollView); DECLARE_WXCOCOA_OBJC_CLASS(NSSound); DECLARE_WXCOCOA_OBJC_CLASS(NSStatusItem);