aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Pero <nicola.pero@meta-innovation.com>2010-10-09 20:11:02 +0000
committerNicola Pero <nicola@gcc.gnu.org>2010-10-09 20:11:02 +0000
commit6176c2a993ffb40b937e30bbce1f7cce171c92ec (patch)
tree0c429c12b12d0a09da825834eb01fa1e1dd730ef
parent5074d72c59a2d98e1c5162b1144d060d319bd519 (diff)
downloadgcc-6176c2a993ffb40b937e30bbce1f7cce171c92ec.zip
gcc-6176c2a993ffb40b937e30bbce1f7cce171c92ec.tar.gz
gcc-6176c2a993ffb40b937e30bbce1f7cce171c92ec.tar.bz2
In libobjc/: 2010-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
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
-rw-r--r--libobjc/ChangeLog8
-rw-r--r--libobjc/objc/message.h43
-rw-r--r--libobjc/objc/objc-api.h36
3 files changed, 55 insertions, 32 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index ac51fcb..63c2a64 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -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.
diff --git a/libobjc/objc/message.h b/libobjc/objc/message.h
index 6d47636..f0038e7 100644
--- a/libobjc/objc/message.h
+++ b/libobjc/objc/message.h
@@ -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
}
diff --git a/libobjc/objc/objc-api.h b/libobjc/objc/objc-api.h
index be433cb..ff457f2 100644
--- a/libobjc/objc/objc-api.h
+++ b/libobjc/objc/objc-api.h
@@ -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);