]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
In libobjc/: 2010-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
authorNicola Pero <nicola.pero@meta-innovation.com>
Sat, 9 Oct 2010 20:11:02 +0000 (20:11 +0000)
committerNicola Pero <nicola@gcc.gnu.org>
Sat, 9 Oct 2010 20:11:02 +0000 (20:11 +0000)
In libobjc/:
2010-10-09  Nicola Pero  <nicola.pero@meta-innovation.com>

        * objc/objc-api.h (struct objc_super, Super, Super_t,
        objc_msg_lookup_super, objc_msg_sendv, objc_msg_forward,
        objc_msg_forward2): Declarations moved to objc/message.h.  Include
        message.h here.
        * objc/message.h: Added such declarations; updated comments.

From-SVN: r165236

libobjc/ChangeLog
libobjc/objc/message.h
libobjc/objc/objc-api.h

index ac51fcb3c50517cfcf1b856781ab0205d94e1018..63c2a6410b156bdb74e75ac87109443025812e4f 100644 (file)
@@ -1,3 +1,11 @@
+2010-10-09  Nicola Pero  <nicola.pero@meta-innovation.com>
+
+       * objc/objc-api.h (struct objc_super, Super, Super_t,
+       objc_msg_lookup_super, objc_msg_sendv, objc_msg_forward,
+       objc_msg_forward2): Declarations moved to objc/message.h.  Include
+       message.h here.
+       * objc/message.h: Added such declarations; updated comments.
+
 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
 
        Implemented fast enumeration for Objective-C.
index 6d476363c69c972f134e2c2df43f1b6fff0cfcca..f0038e714acec7774a13c8935c8deed857264cf0 100644 (file)
@@ -33,7 +33,16 @@ extern "C" {
 #include "objc.h"
 #include "objc-decls.h"
 
-/* This file includes declarations of the messaging functions and types.  */
+/* This file includes declarations of the messaging functions and
+   types.
+*/
+
+/* Compatibility note: the messaging function is one area where the
+   GNU runtime and the Apple/NeXT runtime differ significantly.  If
+   you can, it is recommended that you use higher-level facilities
+   (provided by a Foundation library such as GNUstep Base) to perform
+   forwarding or other advanced messaging tricks.
+*/
 
 typedef void* retval_t;                /* return value */
 typedef void(*apply_t)(void);  /* function pointer */
@@ -44,7 +53,37 @@ typedef union arglist {
 
 objc_EXPORT IMP objc_msg_lookup(id receiver, SEL op);
 
-/* TODO: Add the remaining messaging declarations from objc-api.h.  */
+/*
+ * Structure used when a message is send to a class's super class.
+ * The compiler generates one of these structures and passes it to
+ * objc_msg_lookup_super.
+ */
+typedef struct objc_super {
+  id      self;       /* Id of the object sending the message. */
+#ifdef __cplusplus
+  /* The new version of the API will always use 'super_class'.  */
+  Class super_class;
+#else
+  Class class;        /* Object's super class. */
+#endif
+} Super, *Super_t;
+
+objc_EXPORT IMP objc_msg_lookup_super(Super_t super, SEL sel);
+
+objc_EXPORT retval_t objc_msg_sendv(id, SEL, arglist_t);
+
+/*
+ * Hooks for method forwarding. This makes it easy to substitute a
+ * library, such as ffcall, that implements closures, thereby avoiding
+ * gcc's __builtin_apply problems.  __objc_msg_forward2's result will
+ * be preferred over that of __objc_msg_forward if both are set and
+ * return non-NULL.
+ *
+ * TODO: The API should define objc_set_msg_forward_handler () or
+ * similar instead of these hooks.
+ */
+objc_EXPORT IMP (*__objc_msg_forward)(SEL);
+objc_EXPORT IMP (*__objc_msg_forward2)(id, SEL);
 
 #ifdef __cplusplus
 }
index be433cb9a0515aac0b5541c92de89ff0b4e0fa7c..ff457f2cec7c6a048ae37e15f679ed0b06d35729 100644 (file)
@@ -289,26 +289,12 @@ typedef struct objc_category {
                                                 conformed to */
 } Category, *Category_t;
 
-/*
-** Structure used when a message is send to a class's super class.  The
-** compiler generates one of these structures and passes it to
-** objc_msg_super.
-*/
-typedef struct objc_super {
-  id      self;                           /* Id of the object sending
-                                                the message. */
-#ifdef __cplusplus
-  Class super_class;
-#else
-  Class class;                              /* Object's super class. */
-#endif
-} Super, *Super_t;
-
-objc_EXPORT IMP objc_msg_lookup_super(Super_t super, SEL sel);
-
-objc_EXPORT retval_t objc_msg_sendv(id, SEL, arglist_t);
-
-
+/* We include message.h for compatibility with the old objc-api.h
+   which included the declarations currently in message.h.  The
+   Apple/NeXT runtime does not do this and only include message.h in
+   objc-runtime.h.  It does not matter that much since most of the
+   definitions in message.h are runtime-specific.  */
+#include "message.h"
 
 /*
 ** This is a hook which is called by objc_lookup_class and
@@ -359,16 +345,6 @@ objc_free(void *mem);
 #include "deprecated/objc_valloc.h"
 #include "deprecated/objc_malloc.h"
 
-/*
-**  Hooks for method forwarding. This makes it easy to substitute a
-**  library, such as ffcall, that implements closures, thereby avoiding
-**  gcc's __builtin_apply problems.  __objc_msg_forward2's result will
-**  be preferred over that of __objc_msg_forward if both are set and
-**  return non-NULL.
-*/
-objc_EXPORT IMP (*__objc_msg_forward)(SEL);
-objc_EXPORT IMP (*__objc_msg_forward2)(id, SEL);
-
 #include "deprecated/objc_unexpected_exception.h"
 
 objc_EXPORT Method_t class_get_class_method(MetaClass _class, SEL aSel);