#define HAVE_EXPLICIT
#elif defined(__DIGITALMARS__)
#define HAVE_EXPLICIT
+ #elif defined(__WATCOMC__)
+ #define HAVE_EXPLICIT
#endif
#endif /* !HAVE_EXPLICIT */
#endif /* va_copy/!va_copy */
#endif /* wxVaCopy */
+#ifndef HAVE_VARIADIC_MACROS
+ #if wxCHECK_WATCOM_VERSION(1,2)
+ #define HAVE_VARIADIC_MACROS
+ #endif
+#endif /* HAVE_VARIADIC_MACROS */
+
/* ---------------------------------------------------------------------------- */
/* portable calling conventions macros */
#define wxDEPRECATED(x) x
#endif
+/*
+ Special variant of the macro above which should be used for the functions
+ which are deprecated but called by wx itself: this often happens with
+ deprecated virtual functions which are called by the library.
+ */
+#ifdef WXBUILDING
+# define wxDEPRECATED_BUT_USED_INTERNALLY(x) x
+#else
+# define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x)
+#endif
+
/* everybody gets the assert and other debug macros */
#include "wx/debug.h"
#define wxFOR_ALL_COMPARISONS_3(m, x, y, z) \
m(==,x,y,z) m(!=,x,y,z) m(>=,x,y,z) m(<=,x,y,z) m(>,x,y,z) m(<,x,y,z)
+/*
+ This is only used with wxDEFINE_COMPARISON_REV: it passes both the normal
+ and the reversed comparison operators to the macro.
+ */
+#define wxFOR_ALL_COMPARISONS_3_REV(m, x, y, z) \
+ m(==,x,y,z,==) m(!=,x,y,z,!=) m(>=,x,y,z,<=) \
+ m(<=,x,y,z,>=) m(>,x,y,z,<) m(<,x,y,z,>)
+
#define wxDEFINE_COMPARISON(op, T1, T2, cmp) \
inline bool operator op(T1 x, T2 y) { return cmp(x, y, op); }
-#define wxDEFINE_COMPARISON_REV(op, T1, T2, cmp) \
- inline bool operator op(T2 y, T1 x) { return cmp(x, y, op); }
+#define wxDEFINE_COMPARISON_REV(op, T1, T2, cmp, oprev) \
+ inline bool operator op(T2 y, T1 x) { return cmp(x, y, oprev); }
/*
Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given
*/
#define wxDEFINE_ALL_COMPARISONS(T1, T2, cmp) \
wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON, T1, T2, cmp) \
- wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON_REV, T1, T2, cmp)
+ wxFOR_ALL_COMPARISONS_3_REV(wxDEFINE_COMPARISON_REV, T1, T2, cmp)
/* ---------------------------------------------------------------------------- */
/* macros to avoid compiler warnings */
|short | 16 16 16 16 16 |
|int | 32 64 32 32 16 |
|long | 64 64 32 32 32 |
- |long long | 64 |
+ |long long | 64 64 64 -- -- |
|void * | 64 64 64 32 32 |
+-----------+----------------------------+
#endif
#endif /* Win/!Win */
+/* also define C99-like sized MIN/MAX constants */
+#define wxINT8_MIN CHAR_MIN
+#define wxINT8_MAX CHAR_MAX
+
+#define wxINT16_MIN SHRT_MIN
+#define wxINT16_MAX SHRT_MAX
+
+#if SIZEOF_INT == 4
+ #define wxINT32_MIN INT_MIN
+ #define wxINT32_MAX INT_MAX
+#elif SIZEOF_LONG == 4
+ #define wxINT32_MIN LONG_MIN
+ #define wxINT32_MAX LONG_MAX
+#else
+ #error "Unknown 32 bit type"
+#endif
+
typedef wxUint32 wxDword;
+#ifdef LLONG_MAX
+ #define wxINT64_MAX LLONG_MAX
+ #define wxINT64_MIN LLONG_MIN
+#else
+ #define wxINT64_MAX wxLL(9223372036854775807)
+ #define wxINT64_MIN wxLL(-9223372036854775807-1)
+#endif
+
/*
Define an integral type big enough to contain all of long, size_t and void *.
*/
typedef double wxFloat64;
#endif
-#if defined( __WXMAC__ ) && !defined( __POWERPC__ )
- typedef long double wxDouble;
-#else
- typedef double wxDouble;
-#endif
+typedef double wxDouble;
/*
Some (non standard) compilers typedef wchar_t as an existing type instead
of treating it as a real fundamental type, set wxWCHAR_T_IS_REAL_TYPE to 0
for them and to 1 for all the others.
*/
-#if wxUSE_WCHAR_T
+#ifndef wxWCHAR_T_IS_REAL_TYPE
/*
- VC++ typedefs wchar_t as unsigned short by default, that is unless
- /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED is
- defined.
+ VC++ typedefs wchar_t as unsigned short by default until VC8, that is
+ unless /Za or /Zc:wchar_t option is used in which case _WCHAR_T_DEFINED
+ is defined.
*/
# if defined(__VISUALC__) && !defined(_NATIVE_WCHAR_T_DEFINED)
# define wxWCHAR_T_IS_REAL_TYPE 0
# else /* compiler having standard-conforming wchar_t */
# define wxWCHAR_T_IS_REAL_TYPE 1
# endif
-#endif /* wxUSE_WCHAR_T */
+#endif /* !defined(wxWCHAR_T_IS_REAL_TYPE) */
+
+/* Helper macro for doing something dependent on whether wchar_t is or isn't a
+ typedef inside another macro. */
+#if wxWCHAR_T_IS_REAL_TYPE
+ #define wxIF_WCHAR_T_TYPE(x) x
+#else /* !wxWCHAR_T_IS_REAL_TYPE */
+ #define wxIF_WCHAR_T_TYPE(x)
+#endif /* wxWCHAR_T_IS_REAL_TYPE/!wxWCHAR_T_IS_REAL_TYPE */
+
+/*
+ This constant should be used instead of NULL in vararg functions taking
+ wxChar* arguments: passing NULL (which is the same as 0, unless the compiler
+ defines it specially, e.g. like gcc does with its __null built-in) doesn't
+ work in this case as va_arg() wouldn't interpret the integer 0 correctly
+ when trying to convert it to a pointer on architectures where sizeof(int) is
+ strictly less than sizeof(void *).
+
+ Examples of places where this must be used include wxFileTypeInfo ctor.
+ */
+#define wxNullPtr ((void *)NULL)
/* ---------------------------------------------------------------------------- */
/* byte ordering related definition and macros */
wxBORDER_SIMPLE = 0x02000000,
wxBORDER_RAISED = 0x04000000,
wxBORDER_SUNKEN = 0x08000000,
- wxBORDER_DOUBLE = 0x10000000,
+ wxBORDER_DOUBLE = 0x10000000, /* deprecated */
+ wxBORDER_THEME = wxBORDER_DEFAULT,
/* a mask to extract border style from the combination of flags */
wxBORDER_MASK = 0x1f200000
*/
#define wxST_SIZEGRIP 0x0010
-/*
- * wxStaticText flags
- */
-#define wxST_NO_AUTORESIZE 0x0001
-#define wxST_DOTS_MIDDLE 0x0002
-#define wxST_DOTS_END 0x0004
-
/*
* wxStaticBitmap flags
*/
#define wxNO 0x00000008
#define wxYES_NO (wxYES | wxNO)
#define wxCANCEL 0x00000010
+#define wxAPPLY 0x00000020
+#define wxCLOSE 0x00000040
#define wxYES_DEFAULT 0x00000000 /* has no effect (default) */
#define wxNO_DEFAULT 0x00000080
wxBG_STYLE_CUSTOM
};
+/*
+ * Key types used by (old style) lists and hashes.
+ */
+enum wxKeyType
+{
+ wxKEY_NONE,
+ wxKEY_INTEGER,
+ wxKEY_STRING
+};
+
/* ---------------------------------------------------------------------------- */
/* standard IDs */
/* ---------------------------------------------------------------------------- */
wxITEM_NORMAL,
wxITEM_CHECK,
wxITEM_RADIO,
+ wxITEM_DROPDOWN,
wxITEM_MAX
};
#ifdef __WXCOCOA__
+/* Definitions of 32-bit/64-bit types
+ * These are typedef'd exactly the same way in newer OS X headers so
+ * redefinition when real headers are included should not be a problem. If
+ * it is, the types are being defined wrongly here.
+ * The purpose of these types is so they can be used from public wx headers.
+ * and also because the older (pre-Leopard) headers don't define them.
+ */
+
+/* NOTE: We don't pollute namespace with CGFLOAT_MIN/MAX/IS_DOUBLE macros
+ * since they are unlikely to be needed in a public header.
+ */
+#if defined(__LP64__) && __LP64__
+ typedef double CGFloat;
+#else
+ typedef float CGFloat;
+#endif
+
+#if (defined(__LP64__) && __LP64__) || (defined(NS_BUILD_32_LIKE_64) && NS_BUILD_32_LIKE_64)
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+#else
+typedef int NSInteger;
+typedef unsigned int NSUInteger;
+#endif
+
+/* Objective-C type declarations.
+ * These are to be used in public headers in lieu of NSSomething* because
+ * Objective-C class names are not available in C/C++ code.
+ */
+
/* NOTE: This ought to work with other compilers too, but I'm being cautious */
#if (defined(__GNUC__) && defined(__APPLE__)) || defined(__MWERKS__)
/* It's desirable to have type safety for Objective-C(++) code as it does
typedef struct _GtkSelectionData GtkSelectionData;
typedef struct _GtkTextBuffer GtkTextBuffer;
typedef struct _GtkRange GtkRange;
+typedef struct _GtkCellRenderer GtkCellRenderer;
typedef GtkWidget *WXWidget;