]> git.saurik.com Git - wxWidgets.git/commitdiff
DECLARE_WXCOCOA_OBJC_CLASS now declares types as struct objc_object* so that
authorDavid Elliott <dfe@tgwbd.org>
Sat, 12 Apr 2003 04:17:37 +0000 (04:17 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Sat, 12 Apr 2003 04:17:37 +0000 (04:17 +0000)
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

index 6aabd7f2b2bed8b938c15750c278da6787673a28..3133167dfe8528f9da4d00c12bcfd1b1fdacd5ae 100644 (file)
@@ -1898,17 +1898,13 @@ typedef ControlHandle   WXWidget;
 
 #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);