diff options
author | Nicola Pero <nicola.pero@meta-innovation.com> | 2010-10-09 20:11:02 +0000 |
---|---|---|
committer | Nicola Pero <nicola@gcc.gnu.org> | 2010-10-09 20:11:02 +0000 |
commit | 6176c2a993ffb40b937e30bbce1f7cce171c92ec (patch) | |
tree | 0c429c12b12d0a09da825834eb01fa1e1dd730ef | |
parent | 5074d72c59a2d98e1c5162b1144d060d319bd519 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | libobjc/objc/message.h | 43 | ||||
-rw-r--r-- | libobjc/objc/objc-api.h | 36 |
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); |