* 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
*/
#endif
#endif
+#if defined(__has_include)
+ #if !defined(HAVE_TYPE_TRAITS) && __has_include(<type_traits>)
+ #define HAVE_TYPE_TRAITS
+ #endif
+
+ #if !defined(HAVE_TR1_TYPE_TRAITS) && __has_include(<tr1/type_traits>)
+ #define HAVE_TR1_TYPE_TRAITS
+ #endif
+
+ #if !defined(HAVE_STD_UNORDERED_MAP) && __has_include(<unordered_map>)
+ #define HAVE_STD_UNORDERED_MAP
+ #endif
+
+ #if !defined(HAVE_TR1_UNORDERED_MAP) && __has_include(<tr1/unordered_map>)
+ #define HAVE_TR1_UNORDERED_MAP
+ #endif
+
+ #if !defined(HAVE_STD_UNORDERED_SET) && __has_include(<unordered_set>)
+ #define HAVE_STD_UNORDERED_SET
+ #endif
+
+ #if !defined(HAVE_TR1_UNORDERED_SET) && __has_include(<tr1/unordered_set>)
+ #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 */
#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
# endif
#endif
+#if defined(__GNUC__)
+ #define WX_ATTRIBUTE_UNUSED __attribute__ ((unused))
+#else
+ #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
# define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x)
#endif
+/*
+ Macros to suppress and restore gcc warnings, requires g++ >= 4.6 and don't
+ do anything otherwise.
+
+ Example of use:
+
+ wxGCC_WARNING_SUPPRESS(float-equal)
+ inline bool wxIsSameDouble(double x, double y) { return x == y; }
+ wxGCC_WARNING_RESTORE(float-equal)
+ */
+#if wxCHECK_GCC_VERSION(4, 6)
+# define wxGCC_WARNING_SUPPRESS(x) \
+ _Pragma (wxSTRINGIZE(GCC diagnostic push)) \
+ _Pragma (wxSTRINGIZE(GCC diagnostic ignored wxSTRINGIZE(wxCONCAT(-W,x))))
+# define wxGCC_WARNING_RESTORE(x) \
+ _Pragma (wxSTRINGIZE(GCC diagnostic pop))
+#else /* gcc < 4.6 or not gcc at all */
+# define wxGCC_WARNING_SUPPRESS(x)
+# define wxGCC_WARNING_RESTORE(x)
+#endif
+
/*
Combination of the two variants above: should be used for deprecated
functions which are defined inline and are used by wxWidgets itself.
template <typename T>
inline void wxDELETE(T*& ptr)
{
- typedef char TypeIsCompleteCheck[sizeof(T)];
+ typedef char TypeIsCompleteCheck[sizeof(T)] WX_ATTRIBUTE_UNUSED;
if ( ptr != NULL )
{
template <typename T>
inline void wxDELETEA(T*& ptr)
{
- typedef char TypeIsCompleteCheck[sizeof(T)];
+ typedef char TypeIsCompleteCheck[sizeof(T)] WX_ATTRIBUTE_UNUSED;
if ( ptr != NULL )
{
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"
#endif
+/*
+ Helper macro for conditionally compiling some code only if wxLongLong_t is
+ available and is a type different from the other integer types (i.e. not
+ long).
+ */
+#ifdef wxHAS_LONG_LONG_T_DIFFERENT_FROM_LONG
+ #define wxIF_LONG_LONG_TYPE(x) x
+#else
+ #define wxIF_LONG_LONG_TYPE(x)
+#endif
+
/* Make sure ssize_t is defined (a signed type the same size as size_t). */
/* (HAVE_SSIZE_T is not already defined by configure) */
#endif
+/*
+ Helper macro expanding into the given "m" macro invoked with each of the
+ integer types as parameter (notice that this does not include char/unsigned
+ char and bool but does include wchar_t).
+ */
+#define wxDO_FOR_INT_TYPES(m) \
+ m(short) \
+ m(unsigned short) \
+ m(int) \
+ m(unsigned int) \
+ m(long) \
+ m(unsigned long) \
+ wxIF_LONG_LONG_TYPE( m(wxLongLong_t) ) \
+ wxIF_LONG_LONG_TYPE( m(wxULongLong_t) ) \
+ wxIF_WCHAR_T_TYPE( m(wchar_t) )
+
+/*
+ Same as wxDO_FOR_INT_TYPES() but does include char and unsigned char.
+
+ Notice that we use "char" and "unsigned char" here but not "signed char"
+ which would be more correct as "char" could be unsigned by default. But
+ wxWidgets code currently supposes that char is signed and we'd need to
+ clean up assumptions about it, notably in wx/unichar.h, to be able to use
+ "signed char" here.
+ */
+#define wxDO_FOR_CHAR_INT_TYPES(m) \
+ m(char) \
+ m(unsigned char) \
+ wxDO_FOR_INT_TYPES(m)
+
+/*
+ Same as wxDO_FOR_INT_TYPES() above except that m macro takes the
+ type as the first argument and some extra argument, passed from this macro
+ itself, as the second one.
+ */
+#define wxDO_FOR_INT_TYPES_1(m, arg) \
+ m(short, arg) \
+ m(unsigned short, arg) \
+ m(int, arg) \
+ m(unsigned int, arg) \
+ m(long, arg) \
+ m(unsigned long, arg) \
+ wxIF_LONG_LONG_TYPE( m(wxLongLong_t, arg) ) \
+ wxIF_LONG_LONG_TYPE( m(wxULongLong_t, arg) ) \
+ wxIF_WCHAR_T_TYPE( m(wchar_t, arg) )
+
+/*
+ Combination of wxDO_FOR_CHAR_INT_TYPES() and wxDO_FOR_INT_TYPES_1():
+ invokes the given macro with the specified argument as its second parameter
+ for all char and int types.
+ */
+#define wxDO_FOR_CHAR_INT_TYPES_1(m, arg) \
+ m(char, arg) \
+ m(unsigned char, arg) \
+ wxDO_FOR_INT_TYPES_1(m, arg)
+
+
/* ---------------------------------------------------------------------------- */
/* byte ordering related definition and macros */
/* ---------------------------------------------------------------------------- */
#define wxMORE 0x00010000
#define wxSETUP 0x00020000
#define wxICON_NONE 0x00040000
+#define wxICON_AUTH_NEEDED 0x00080000
#define wxICON_MASK \
- (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE)
+ (wxICON_EXCLAMATION|wxICON_HAND|wxICON_QUESTION|wxICON_INFORMATION|wxICON_NONE|wxICON_AUTH_NEEDED)
/*
* Background styles. See wxWindow::SetBackgroundStyle
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);
#define DECLARE_NO_ASSIGN_CLASS(classname) \
wxDECLARE_NO_ASSIGN_CLASS(classname);
-/* Macro that can be used to indicate that a function doesn't throw. */
-#if defined(__cplusplus) && __cplusplus >= 199711L /* C++98 */
-# if __cplusplus >= 201103L /* >= C++11 */
-# define wxNOEXCEPT noexcept
-# else
-# define wxNOEXCEPT throw()
-# endif
-#else
-# define wxNOEXCEPT
-#endif
-
/* --------------------------------------------------------------------------- */
/* If a manifest is being automatically generated, add common controls 6 to it */
/* --------------------------------------------------------------------------- */
-#if (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \
+#if wxUSE_GUI && \
+ (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \
( defined _MSC_FULL_VER && _MSC_FULL_VER >= 140040130 )
#define WX_CC_MANIFEST(cpu) \
#endif /* !wxUSE_NO_MANIFEST && _MSC_FULL_VER >= 140040130 */
+/* wxThread and wxProcess priorities */
+enum
+{
+ wxPRIORITY_MIN = 0u, /* lowest possible priority */
+ wxPRIORITY_DEFAULT = 50u, /* normal priority */
+ wxPRIORITY_MAX = 100u /* highest possible priority */
+};
+
#endif
/* _WX_DEFS_H_ */