From 7875262d294fe007e48c5e300149bd43055e142a Mon Sep 17 00:00:00 2001 From: David Elliott Date: Sat, 12 Apr 2003 04:17:37 +0000 Subject: [PATCH] DECLARE_WXCOCOA_OBJC_CLASS now declares types as struct objc_object* so that they are exactly the same type for C++ and Objective-C++ code. This allows them to be used as arguments to functions, especially virtuals, because the C++ name mangling will be the same. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 6aabd7f2b2..3133167dfe 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -1898,17 +1898,13 @@ 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);