X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43225e09fe12d942cf9e421ae7c469f9df4e2ef2..56689e1b3a3f573d8adc3f840823547d8478ef75:/include/wx/defs.h?ds=sidebyside diff --git a/include/wx/defs.h b/include/wx/defs.h index e86ebff8d7..25cb52771a 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -157,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 @@ -794,6 +799,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 // ---------------------------------------------------------------------------- @@ -1847,7 +1858,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 ; @@ -1892,27 +1903,27 @@ typedef ControlHandle WXWidget; #ifdef __WXCOCOA__ -#if defined(__OBJC__) - #include - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - @class klass; typedef klass *WX_##klass -#elif defined(wxI_LIKE_OBJC_ID) - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - typedef id WX_##klass -#else // the goal is to get rid of this secion at some time! - #define DECLARE_WXCOCOA_OBJC_CLASS(klass) \ - typedef void *WX_##klass -#endif +// 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