!defined(__WXPALMOS__)&& \
!defined(__WXGTK__) && \
!defined(__WXPM__) && \
- !defined(__WXMAC__) && \
+ !defined(__WXOSX_CARBON__) && \
+ !defined(__WXOSX_COCOA__) && \
+ !defined(__WXOSX_IPHONE__) && \
!defined(__WXCOCOA__) && \
!defined(__X__) && \
!defined(__WXMGL__) && \
# pragma warning(disable:4355) /* 'this' used in base member initializer list */
# pragma warning(disable:4511) /* copy ctor couldn't be generated */
# pragma warning(disable:4512) /* operator=() couldn't be generated */
+# pragma warning(disable:4514) /* unreferenced inline func has been removed */
# pragma warning(disable:4710) /* function not inlined */
+ // TODO: this warning should really be enabled as it can be genuinely
+ // useful, check where does it occur in wxWidgets
+ #pragma warning(disable: 4127) /* conditional expression is constant */
+
/* There are too many false positivies for this one, particularly when
using templates like wxVector<T> */
/* class 'foo' needs to have dll-interface to be used by clients of
class 'bar'" */
# pragma warning(disable:4251)
+# ifdef __VISUALC5__
/* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */
/* is buggy, and occurs for code that does actually get executed */
-# if !defined __WXDEBUG__ && __VISUALC__ <= 1100
+# ifndef __WXDEBUG__
# pragma warning(disable:4702) /* unreachable code */
# endif
+
/* The VC++ 5.0 warning 'C4003: not enough actual parameters for macro'
* is incompatible with the wxWidgets headers since it is given when
* parameters are empty but not missing. */
-# if __VISUALC__ <= 1100
# pragma warning(disable:4003) /* not enough actual parameters for macro */
# endif
+ /*
+ VC6 insists on complaining about
+
+ return type for 'wxVector<T>::reverse_iterator::operator ->' is 'T **'
+ (ie; not a UDT or reference to a UDT. Will produce errors if applied
+ using infix notation)
+
+ which is perfectly fine because template classes do routinely define
+ operators which don't make sense for all template parameter values
+ (besides this warning was removed in subsequent versions).
+ */
+ #ifdef __VISUALC6__
+ #pragma warning(disable: 4284)
+ #endif // VC6
+
/*
When compiling with VC++ 7 /Wp64 option we get thousands of warnings for
conversion from size_t to int or long. Some precious few of them might
/* check for native bool type and TRUE/FALSE constants */
/* ---------------------------------------------------------------------------- */
-/* Add more tests here for Windows compilers that already define bool */
-/* (under Unix, configure tests for this) */
-#ifndef HAVE_BOOL
- #if defined( __MWERKS__ )
- #if (__MWERKS__ >= 0x1000) && __option(bool)
- #define HAVE_BOOL
- #endif
- #elif defined(__APPLE__) && defined(__APPLE_CC__)
- /* Apple bundled gcc supports bool */
- #define HAVE_BOOL
- #elif defined(__VISUALC__) && (__VISUALC__ == 1020)
- /* in VC++ 4.2 the bool keyword is reserved (hence can't be typedefed) */
- /* but not implemented, so we must #define it */
- #define bool unsigned int
- #elif defined(__VISUALC__) && (__VISUALC__ == 1010)
- /* For VisualC++ 4.1, we need to define */
- /* bool as something between 4.0 & 5.0... */
- typedef unsigned int wxbool;
- #define bool wxbool
- #define HAVE_BOOL
- #elif defined(__VISUALC__) && (__VISUALC__ > 1020)
- /* VC++ supports bool since 4.2 */
- #define HAVE_BOOL
- #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x500)
- /* Borland 5.0+ supports bool */
- #define HAVE_BOOL
- #elif wxCHECK_WATCOM_VERSION(1,0)
- /* Watcom 11+ supports bool */
- #define HAVE_BOOL
- #elif defined(__DIGITALMARS__)
- /* DigitalMars supports bool */
- #define HAVE_BOOL
- #elif defined(__GNUWIN32__) || defined(__MINGW32__) || defined(__CYGWIN__)
- /* Cygwin supports bool */
- #define HAVE_BOOL
- #elif defined(__VISAGECPP__)
- #if __IBMCPP__ < 400
- typedef unsigned long bool;
- #define true ((bool)1)
- #define false ((bool)0)
- #endif
- #define HAVE_BOOL
- #elif defined(__WXPALMOS__)
- /* Palm OS supports bool */
- #define HAVE_BOOL
- #endif /* compilers */
-#endif /* HAVE_BOOL */
-
-#if !defined(__MWERKS__) || !defined(true)
-#if !defined(HAVE_BOOL) && !defined(bool) && !defined(VMS)
- /* NB: of course, this doesn't replace the standard type, because, for */
- /* example, overloading based on bool/int parameter doesn't work and */
- /* so should be avoided in portable programs */
- typedef unsigned int bool;
-#endif /* bool */
-
-/* deal with TRUE/true stuff: we assume that if the compiler supports bool, it */
-/* supports true/false as well and that, OTOH, if it does _not_ support bool, */
-/* it doesn't support these keywords (this is less sure, in particular VC++ */
-/* 4.x could be a problem here) */
-#ifndef HAVE_BOOL
- #define true ((bool)1)
- #define false ((bool)0)
-#endif
-#endif
-
/* for backwards compatibility, also define TRUE and FALSE */
/* */
/* note that these definitions should work both in C++ and C code, so don't */
#define wxEXPLICIT
#endif /* HAVE_EXPLICIT/!HAVE_EXPLICIT */
-/* check for static/const_cast<>() (we don't use the other ones for now) */
-#ifndef HAVE_CXX_CASTS
- #if defined(__VISUALC__) && (__VISUALC__ >= 1100)
- /* VC++ 6.0 and 5.0 have C++ casts (what about earlier versions?) */
- #define HAVE_CXX_CASTS
- #elif defined(__MINGW32__) || defined(__CYGWIN32__)
- #if wxCHECK_GCC_VERSION(2, 95)
- /* GCC 2.95 has C++ casts, what about earlier versions? */
- #define HAVE_CXX_CASTS
- #endif
- #endif
-#endif /* !HAVE_CXX_CASTS */
-
-#ifdef HAVE_CXX_CASTS
- #ifndef HAVE_CONST_CAST
- #define HAVE_CONST_CAST
- #endif
- #ifndef HAVE_REINTERPRET_CAST
- #define HAVE_REINTERPRET_CAST
- #endif
- #ifndef HAVE_STATIC_CAST
- #define HAVE_STATIC_CAST
- #endif
- #ifndef HAVE_DYNAMIC_CAST
- #define HAVE_DYNAMIC_CAST
- #endif
-#endif /* HAVE_CXX_CASTS */
-
-#ifdef HAVE_STATIC_CAST
- #define wx_static_cast(t, x) static_cast<t>(x)
-#else
- #define wx_static_cast(t, x) ((t)(x))
-#endif
-
-#ifdef HAVE_CONST_CAST
- #define wx_const_cast(t, x) const_cast<t>(x)
-#else
- #define wx_const_cast(t, x) ((t)(x))
-#endif
-
-#ifdef HAVE_REINTERPRET_CAST
- #define wx_reinterpret_cast(t, x) reinterpret_cast<t>(x)
-#else
- #define wx_reinterpret_cast(t, x) ((t)(x))
-#endif
+/* these macros are obsolete, use the standard C++ casts directly now */
+#define wx_static_cast(t, x) static_cast<t>(x)
+#define wx_const_cast(t, x) const_cast<t>(x)
+#define wx_reinterpret_cast(t, x) reinterpret_cast<t>(x)
/*
This one is a wx invention: like static cast but used when we intentionally
#pragma warning(disable: 1682)
/* conversion from "X" to "T" may lose significant bits */
#pragma warning(disable: 810)
+ /* non-pointer conversion from "foo" to "bar" may lose significant bits */
+ #pragma warning(disable: 2259)
return x;
#define wxDEPRECATED(x) x
#endif
+/*
+ explicitly specifying inline allows gcc < 3.4 to
+ handle the deprecation attribute even in the constructor.
+ doesn't seem to work on Apple's gcc 4.0.1 unless using -O0
+*/
+#if defined( __DARWIN__ ) && !defined(__WXDEBUG__)
+ #define wxDEPRECATED_CONSTRUCTOR(x) x
+#else
+ #define wxDEPRECATED_CONSTRUCTOR(x) wxDEPRECATED( inline x)
+#endif
+
/*
Macro which marks the function as being deprecated but also defines it
inline.
ptr = NULL;
}
}
+
+ // trivial implementation of std::swap() for primitive types
+ template <typename T>
+ inline void wxSwap(T& first, T& second)
+ {
+ T tmp(first);
+ first = second;
+ second = tmp;
+ }
#endif /*__cplusplus*/
/* size of statically declared array */
/* compiler specific settings */
/* ---------------------------------------------------------------------------- */
-/* to allow compiling with warning level 4 under Microsoft Visual C++ some */
-/* warnings just must be disabled */
-#ifdef __VISUALC__
- #pragma warning(disable: 4514) /* unreferenced inline func has been removed */
-/*
- you might be tempted to disable this one also: triggered by CHECK and FAIL
- macros in debug.h, but it's, overall, a rather useful one, so I leave it and
- will try to find some way to disable this warning just for CHECK/FAIL. Anyone?
-*/
- #pragma warning(disable: 4127) /* conditional expression is constant */
-#endif /* VC++ */
-
#if defined(__MWERKS__)
#undef try
#undef except
#endif
-/* Make sure ssize_t is defined (a signed type the same size as size_t) */
-/* HAVE_SSIZE_T should be defined for compiliers that already have it */
+/* Make sure ssize_t is defined (a signed type the same size as size_t). */
+/* (HAVE_SSIZE_T is not already defined by configure) */
+#ifndef HAVE_SSIZE_T
#ifdef __MINGW32__
- #if defined(_SSIZE_T_) && !defined(HAVE_SSIZE_T)
+ #if defined(_SSIZE_T_) || defined(_SSIZE_T_DEFINED)
#define HAVE_SSIZE_T
#endif
-#endif
-#if defined(__PALMOS__) && !defined(HAVE_SSIZE_T)
+#elif defined(__PALMOS__)
#define HAVE_SSIZE_T
-#endif
-#if wxCHECK_WATCOM_VERSION(1,4)
+#elif wxCHECK_WATCOM_VERSION(1,4)
#define HAVE_SSIZE_T
#endif
+#endif /* !HAVE_SSIZE_T */
+
+/* If we really don't have ssize_t, provide our own version. */
#ifdef HAVE_SSIZE_T
#ifdef __UNIX__
#include <sys/types.h>
#if wxUSE_WCHAR_T && (!defined(SIZEOF_WCHAR_T) || (SIZEOF_WCHAR_T == 2))
#define wxWCHAR_T_IS_WXCHAR16
- typedef wchar_t wxChar16;
+ typedef wchar_t wxChar16;
#else
typedef wxUint16 wxChar16;
#endif
enum wxSizerFlagBits
{
/* for compatibility only, default now, don't use explicitly any more */
-#if WXWIN_COMPATIBILITY_2_6
+#if WXWIN_COMPATIBILITY_2_8
wxADJUST_MINSIZE = 0,
#endif
wxFIXED_MINSIZE = 0x8000,
#define wxAPPLY 0x00000020
#define wxCLOSE 0x00000040
-#define wxYES_DEFAULT 0x00000000 /* has no effect (default) */
-#define wxNO_DEFAULT 0x00000080
+#define wxOK_DEFAULT 0x00000000 /* has no effect (default) */
+#define wxYES_DEFAULT 0x00000000 /* has no effect (default) */
+#define wxNO_DEFAULT 0x00000080 /* only valid with wxYES_NO */
+#define wxCANCEL_DEFAULT 0x80000000 /* only valid with wxCANCEL */
#define wxICON_EXCLAMATION 0x00000100
#define wxICON_HAND 0x00000200
/* GDI descriptions */
/* ---------------------------------------------------------------------------- */
+/*
+ WARNING: the following styles are deprecated; use the
+ wxFontFamily, wxFontStyle, wxFontWeight, wxBrushStyle,
+ wxPenStyle, wxPenCap, wxPenJoin enum values instead!
+*/
+
+#if FUTURE_WXWIN_COMPATIBILITY_3_0
+
/* don't use any elements of this enum in the new code */
enum wxDeprecatedGUIConstants
{
wxITALIC,
wxSLANT,
-
-#if FUTURE_WXWIN_COMPATIBILITY_3_0
- /*
- WARNING: the following styles are deprecated; use the wxBrushStyle,
- wxPenStyle, wxPenCap, wxPenJoin enum values instead!
- */
-
/* Pen styles */
wxSOLID = 100,
wxDOT,
wxVERTICAL_HATCH,
wxFIRST_HATCH = wxBDIAGONAL_HATCH,
wxLAST_HATCH = wxVERTICAL_HATCH
-#endif
-};
-
-/* Logical ops */
-typedef enum
-{
- wxCLEAR, wxROP_BLACK = wxCLEAR, wxBLIT_BLACKNESS = wxCLEAR, /* 0 */
- wxXOR, wxROP_XORPEN = wxXOR, wxBLIT_SRCINVERT = wxXOR, /* src XOR dst */
- wxINVERT, wxROP_NOT = wxINVERT, wxBLIT_DSTINVERT = wxINVERT, /* NOT dst */
- wxOR_REVERSE, wxROP_MERGEPENNOT = wxOR_REVERSE, wxBLIT_00DD0228 = wxOR_REVERSE, /* src OR (NOT dst) */
- wxAND_REVERSE, wxROP_MASKPENNOT = wxAND_REVERSE, wxBLIT_SRCERASE = wxAND_REVERSE, /* src AND (NOT dst) */
- wxCOPY, wxROP_COPYPEN = wxCOPY, wxBLIT_SRCCOPY = wxCOPY, /* src */
- wxAND, wxROP_MASKPEN = wxAND, wxBLIT_SRCAND = wxAND, /* src AND dst */
- wxAND_INVERT, wxROP_MASKNOTPEN = wxAND_INVERT, wxBLIT_00220326 = wxAND_INVERT, /* (NOT src) AND dst */
- wxNO_OP, wxROP_NOP = wxNO_OP, wxBLIT_00AA0029 = wxNO_OP, /* dst */
- wxNOR, wxROP_NOTMERGEPEN = wxNOR, wxBLIT_NOTSRCERASE = wxNOR, /* (NOT src) AND (NOT dst) */
- wxEQUIV, wxROP_NOTXORPEN = wxEQUIV, wxBLIT_00990066 = wxEQUIV, /* (NOT src) XOR dst */
- wxSRC_INVERT, wxROP_NOTCOPYPEN = wxSRC_INVERT, wxBLIT_NOTSCRCOPY = wxSRC_INVERT, /* (NOT src) */
- wxOR_INVERT, wxROP_MERGENOTPEN = wxOR_INVERT, wxBLIT_MERGEPAINT = wxOR_INVERT, /* (NOT src) OR dst */
- wxNAND, wxROP_NOTMASKPEN = wxNAND, wxBLIT_007700E6 = wxNAND, /* (NOT src) OR (NOT dst) */
- wxOR, wxROP_MERGEPEN = wxOR, wxBLIT_SRCPAINT = wxOR, /* src OR dst */
- wxSET, wxROP_WHITE = wxSET, wxBLIT_WHITENESS = wxSET /* 1 */
-} form_ops_t;
-
-/* Flood styles */
-enum
-{
- wxFLOOD_SURFACE = 1,
- wxFLOOD_BORDER
-};
-
-/* Polygon filling mode */
-enum
-{
- wxODDEVEN_RULE = 1,
- wxWINDING_RULE
};
+#endif
/* ToolPanel in wxFrame (VZ: unused?) */
enum
wxMOD_ALL = 0xffff
};
-/* Mapping modes (same values as used by Windows, don't change) */
-enum
-{
- wxMM_TEXT = 1,
- wxMM_LOMETRIC,
- wxMM_HIMETRIC,
- wxMM_LOENGLISH,
- wxMM_HIENGLISH,
- wxMM_TWIPS,
- wxMM_ISOTROPIC,
- wxMM_ANISOTROPIC,
- wxMM_POINTS,
- wxMM_METRIC
-};
-
/* Shortcut for easier dialog-unit-to-pixel conversion */
#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
wxUPDATE_UI_FROMIDLE = 0x0002 /* Invoked from On(Internal)Idle */
};
+
+/* ---------------------------------------------------------------------------- */
+/* wxList types */
+/* ---------------------------------------------------------------------------- */
+
+/* type of compare function for list sort operation (as in 'qsort'): it should
+ return a negative value, 0 or positive value if the first element is less
+ than, equal or greater than the second */
+
+typedef int (* LINKAGEMODE wxSortCompareFunction)(const void *elem1, const void *elem2);
+
+/* wxList iterator function */
+typedef int (* LINKAGEMODE wxListIterateFunction)(void *current);
+
+
/* ---------------------------------------------------------------------------- */
/* miscellaneous */
/* ---------------------------------------------------------------------------- */
typedef void* WXEVENTHANDLERREF;
typedef void* WXEVENTHANDLERCALLREF;
typedef void* WXAPPLEEVENTREF;
-typedef void* WXHMENU;
typedef unsigned int WXUINT;
typedef unsigned long WXDWORD;
#if wxOSX_USE_CARBON
typedef WX_OPAQUE_TYPE(ControlRef ) * WXWidget ;
typedef WX_OPAQUE_TYPE(WindowRef) * WXWindow ;
+typedef struct __AGLPixelFormatRec *WXGLPixelFormat;
+typedef struct __AGLContextRec *WXGLContext;
#endif
typedef void* WXDisplay;
DECLARE_WXMAC_OPAQUE_REF( PasteboardRef )
DECLARE_WXMAC_OPAQUE_REF( IconRef )
+DECLARE_WXMAC_OPAQUE_REF( MenuRef )
typedef IconRef WXHICON ;
typedef HIShapeRef WXHRGN;
+#if wxOSX_USE_CARBON
+typedef MenuRef WXHMENU;
+#endif
#endif
DECLARE_WXCOCOA_OBJC_CLASS(NSThread);
DECLARE_WXCOCOA_OBJC_CLASS(NSWindow);
DECLARE_WXCOCOA_OBJC_CLASS(NSView);
+DECLARE_WXCOCOA_OBJC_CLASS(NSOpenGLContext);
+DECLARE_WXCOCOA_OBJC_CLASS(NSOpenGLPixelFormat);
#ifndef __WXMAC__
typedef WX_NSView WXWidget; /* wxWidgets BASE definition */
#endif
typedef WX_NSWindow WXWindow;
typedef WX_NSView WXWidget;
+typedef WX_NSMenu WXHMENU;
+typedef WX_NSOpenGLPixelFormat WXGLPixelFormat;
+typedef WX_NSOpenGLContext WXGLContext;
#elif wxOSX_USE_IPHONE
classname(const classname&); \
classname& operator=(const classname&);
+#define DECLARE_NO_COPY_TEMPLATE_CLASS(classname, arg) \
+ private: \
+ classname(const classname<arg>&); \
+ classname& operator=(const classname<arg>&);
+
#define DECLARE_NO_ASSIGN_CLASS(classname) \
private: \
classname& operator=(const classname&);