X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f1a19f14780496f7bf114dfc8d178dfc34258f75..d9ef4e06edb1dc80e4880ebc534100b43e9675ca:/include/wx/defs.h?ds=sidebyside diff --git a/include/wx/defs.h b/include/wx/defs.h index 14df71c1d9..bde449e9c8 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -26,8 +26,9 @@ #if defined(__WXMSW__) && defined(__X__) #error "Target can't be both X and Windows" #elif !defined(__WXMOTIF__) && !defined(__WXMSW__) && !defined(__WXGTK__) && \ - !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__X__) && \ - !defined(__WXMGL__) && !defined(__WXX11__) && wxUSE_GUI + !defined(__WXPM__) && !defined(__WXMAC__) && !defined(__WXCOCOA__) && \ + !defined(__X__) && !defined(__WXMGL__) && !defined(__WXX11__) && \ + wxUSE_GUI #ifdef __UNIX__ #error "No Target! You should use wx-config program for compilation flags!" #else // !Unix @@ -156,12 +157,17 @@ #elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100) // 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 #endif // compilers @@ -222,8 +228,12 @@ typedef int wxWindowID; // check for explicit keyword support #ifndef HAVE_EXPLICIT - #if defined(__VISUALC__) && (__VISUALC__ >= 1200) - // VC++ 6.0 has explicit (what about the earlier versions?) + #if defined(__VISUALC__) && (__VISUALC__ >= 1100) + // VC++ 6.0 and 5.0 have explicit (what about the earlier versions?) + #define HAVE_EXPLICIT + #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ + && wxCHECK_GCC_VERSION(2, 95) + // GCC 2.95 has explicit, what about earlier versions? #define HAVE_EXPLICIT #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x0520) // BC++ 4.52 doesn't support explicit, CBuilder 1 does @@ -231,6 +241,8 @@ typedef int wxWindowID; #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400) // Metrowerks CW6 or higher has explicit #define HAVE_EXPLICIT + #elif defined(__DIGITALMARS__) + #define HAVE_EXPLICIT #endif #endif // !HAVE_EXPLICIT @@ -240,6 +252,24 @@ typedef int wxWindowID; #define wxEXPLICIT #endif // HAVE_EXPLICIT/!HAVE_EXPLICIT +// check for static/const/reinterpret_cast<>() +#ifndef HAVE_STATIC_CAST + #if defined(__VISUALC__) && (__VISUALC__ >= 1100) + // VC++ 6.0 and 5.0 have C++ casts (what about the earlier versions?) + #define HAVE_CXX_CASTS + #elif ( defined(__MINGW32__) || defined(__CYGWIN32__) ) \ + && wxCHECK_GCC_VERSION(2, 95) + // GCC 2.95 has C++ casts, what about earlier versions? + #define HAVE_CXX_CASTS + #endif +#endif // HAVE_STATIC_CAST + +#ifdef HAVE_CXX_CASTS + #ifndef HAVE_CONST_CAST + #define HAVE_CONST_CAST + #endif +#endif // HAVE_CXX_CASTS + // ---------------------------------------------------------------------------- // portable calling conventions macros // ---------------------------------------------------------------------------- @@ -312,7 +342,7 @@ typedef int wxWindowID; #define WXEXPORT _Export #define WXIMPORT _Export #endif -#elif defined(__WXMAC__) +#elif defined(__WXMAC__) || defined(__WXCOCOA__) #ifdef __MWERKS__ #define WXEXPORT __declspec(export) #define WXIMPORT __declspec(import) @@ -591,7 +621,7 @@ enum // precision, so use the IEEE types for storage , and this for calculations typedef float wxFloat32 ; -#if defined( __WXMAC__ ) && defined (__MWERKS__) +#if (defined( __WXMAC__ ) || defined(__WXCOCOA__)) && defined (__MWERKS__) typedef short double wxFloat64; #else typedef double wxFloat64; @@ -771,6 +801,12 @@ typedef float wxFloat32 ; #define wxUINT64_SWAP_ON_BE(val) (val) #endif +// Macros to convert from unsigned long to void pointer. +// High order truncation occurs if the respective type is not large enough. +#define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0) +#define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE]) +#define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p) + // ---------------------------------------------------------------------------- // Geometric flags // ---------------------------------------------------------------------------- @@ -976,7 +1012,7 @@ enum wxBorder #define wxICONIZE 0x4000 #define wxMINIMIZE wxICONIZE #define wxMAXIMIZE 0x2000 -#define wxCLOSE 0x1000 +#define wxCLOSE_BOX 0x1000 #define wxSYSTEM_MENU 0x0800 #define wxMINIMIZE_BOX 0x0400 @@ -989,6 +1025,7 @@ enum wxBorder #define wxFRAME_NO_TASKBAR 0x0002 // No taskbar button (MSW only) #define wxFRAME_TOOL_WINDOW 0x0004 // No taskbar button, no system menu #define wxFRAME_FLOAT_ON_PARENT 0x0008 // Always above its parent +#define wxFRAME_SHAPED 0x0010 // Create a window that is able to be shaped // deprecated versions defined for compatibility reasons #define wxRESIZE_BOX wxMAXIMIZE_BOX @@ -1011,10 +1048,10 @@ enum wxBorder #define wxDEFAULT_FRAME_STYLE \ (wxSYSTEM_MENU | wxRESIZE_BORDER | \ - wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE | \ + wxMINIMIZE_BOX | wxMAXIMIZE_BOX | wxCLOSE_BOX | \ wxCAPTION | wxCLIP_CHILDREN) -#define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU | wxCAPTION | wxCLOSE) +#define wxDEFAULT_DIALOG_STYLE (wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX) /* * wxExtDialog style flags @@ -1651,7 +1688,11 @@ enum wxKeyCode WXK_NUMPAD_SEPARATOR, WXK_NUMPAD_SUBTRACT, WXK_NUMPAD_DECIMAL, - WXK_NUMPAD_DIVIDE + WXK_NUMPAD_DIVIDE, + + WXK_WINDOWS_LEFT, + WXK_WINDOWS_RIGHT, + WXK_WINDOWS_MENU }; // Mapping modes (same values as used by Windows, don't change) @@ -1820,7 +1861,7 @@ typedef void* WXPOINTPTR ; typedef void* WXHWND ; typedef void* WXEVENTREF ; typedef void* WXEVENTHANDLERREF ; -typedef void* WXEVENTHANDLERCALLREF ; +typedef void* WXEVENTHANDLERCALLREF ; typedef void* WXAPPLEEVENTREF ; typedef void* WXHDC ; typedef void* WXHMENU ; @@ -1863,6 +1904,34 @@ typedef ControlHandle WXWidget; */ #endif +#ifdef __WXCOCOA__ + +// NOTE: typedef struct objc_object *id; +// IOW, we're declaring these using the id type without using that name, +// since "id" is used extensively not only within wxWindows itself, but +// also in wxWindows application code. The following works fine when +// compiling C++ code, and works without typesafety for Obj-C++ code +#define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ +typedef struct objc_object *WX_##klass + +DECLARE_WXCOCOA_OBJC_CLASS(NSApplication); +DECLARE_WXCOCOA_OBJC_CLASS(NSBox); +DECLARE_WXCOCOA_OBJC_CLASS(NSButton); +DECLARE_WXCOCOA_OBJC_CLASS(NSControl); +DECLARE_WXCOCOA_OBJC_CLASS(NSEvent); +DECLARE_WXCOCOA_OBJC_CLASS(NSLayoutManager); +DECLARE_WXCOCOA_OBJC_CLASS(NSMenu); +DECLARE_WXCOCOA_OBJC_CLASS(NSMenuItem); +DECLARE_WXCOCOA_OBJC_CLASS(NSPanel); +DECLARE_WXCOCOA_OBJC_CLASS(NSTableView); +DECLARE_WXCOCOA_OBJC_CLASS(NSTextContainer); +DECLARE_WXCOCOA_OBJC_CLASS(NSTextField); +DECLARE_WXCOCOA_OBJC_CLASS(NSTextStorage); +DECLARE_WXCOCOA_OBJC_CLASS(NSWindow); +DECLARE_WXCOCOA_OBJC_CLASS(NSView); +typedef WX_NSView WXWidget; // wxWindows BASE definition +#endif // __WXCOCOA__ + #if defined(__WXMSW__) || defined(__WXPM__) // the keywords needed for WinMain() declaration @@ -2020,6 +2089,10 @@ typedef void* WXRegion; typedef void* WXFont; typedef void* WXImage; typedef void* WXFontList; +typedef void* WXRendition; +typedef void* WXRenderTable; +typedef void* WXFontType; /* either a XmFontList or XmRenderTable */ +typedef void* WXString; typedef unsigned long Atom; /* this might fail on a few architectures */