#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
#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
// ----------------------------------------------------------------------------
typedef void* WXHWND ;
typedef void* WXEVENTREF ;
typedef void* WXEVENTHANDLERREF ;
-typedef void* WXEVENTHANDLERCALLREF ;
+typedef void* WXEVENTHANDLERCALLREF ;
typedef void* WXAPPLEEVENTREF ;
typedef void* WXHDC ;
typedef void* WXHMENU ;
#ifdef __WXCOCOA__
-#if defined(__OBJC__)
- #include <objc/objc.h>
- #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