Commit 53f672ca by Nicola Pero Committed by Nicola Pero

In libobjc/: 2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>

In libobjc/:
2010-12-15  Nicola Pero  <nicola.pero@meta-innovation.com>

	* objc/message.h (objc_super): When using the modern API, do not
	define Super and Super_t, and always use 'super_class' for the
	super class field.	
	(objc_msg_lookup_super): Updated prototype to use 'struct
	objc_super *' instead of 'Super_t'.
	* sendmsg.c (objc_msg_lookup_super): Updated prototype to use
	'struct objc_super *' instead of 'Super_t'.

From-SVN: r167869
parent 2a3b37c3
2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com> 2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
* objc/message.h (objc_super): When using the modern API, do not
define Super and Super_t, and always use 'super_class' for the
super class field.
(objc_msg_lookup_super): Updated prototype to use 'struct
objc_super *' instead of 'Super_t'.
* sendmsg.c (objc_msg_lookup_super): Updated prototype to use
'struct objc_super *' instead of 'Super_t'.
2010-12-15 Nicola Pero <nicola.pero@meta-innovation.com>
* objc/message.h: Update comments, reindented code and moved * objc/message.h: Update comments, reindented code and moved
deprecated types and functions at the end of the file. No code deprecated types and functions at the end of the file. No code
changes. changes.
......
...@@ -91,25 +91,40 @@ objc_EXPORT IMP objc_msg_lookup (id receiver, SEL op); ...@@ -91,25 +91,40 @@ objc_EXPORT IMP objc_msg_lookup (id receiver, SEL op);
/* Structure used when a message is send to a class's super class. /* Structure used when a message is send to a class's super class.
The compiler generates one of these structures and passes it to The compiler generates one of these structures and passes it to
objc_msg_lookup_super() when a [super method] call is compiled. */ objc_msg_lookup_super() when a [super method] call is compiled. */
/* In the traditional API, the super class field is called 'class' in
Objective-C and 'super_class' in Objective-C++. In the new API
(objc/runtime.h) it is always called 'super_class'. We detect the
"traditional API" by the fact that the objc/objc-api.h header
include guards are defined, which means objc/objc-api.h has been
included. This works because objc/message.h does not exist in the
Traditional API and is only read because objc-api.h itself includes
it. */
#ifdef __objc_api_INCLUDE_GNU
/* Traditional API. */
typedef struct objc_super typedef struct objc_super
{ {
id self; /* Id of the object sending the message. */ id self; /* Id of the object sending the message. */
/* The new version of the API will always use 'super_class'. TODO:
Use class only if objc-api.h is included, otherwise always use
super_class. */
#ifdef __cplusplus #ifdef __cplusplus
Class super_class; Class super_class;
#else #else
Class class; /* Object's super class. */ Class class; /* Object's super class. */
#endif #endif
} Super, *Super_t; } Super, *Super_t;
#else
/* Modern API. */
struct objc_super
{
id self; /* The receiver of the message. */
Class super_class; /* The superclass of the receiver. */
};
#endif
/* This is used by the compiler instead of objc_msg_lookup () when /* This is used by the compiler instead of objc_msg_lookup () when
compiling a call to 'super', such as [super method]. This requires compiling a call to 'super', such as [super method]. This requires
sending a message to super->self, but looking up the method as if sending a message to super->self, but looking up the method as if
super->self was in class super->super_class. */ super->self was in class super->super_class. */
objc_EXPORT IMP objc_msg_lookup_super (Super_t super, SEL sel); objc_EXPORT IMP objc_msg_lookup_super (struct objc_super *super, SEL sel);
/* Hooks for method forwarding. They make it easy to substitute the /* Hooks for method forwarding. They make it easy to substitute the
built-in forwarding with one based on a library, such as ffi, that built-in forwarding with one based on a library, such as ffi, that
......
...@@ -445,7 +445,7 @@ objc_msg_lookup (id receiver, SEL op) ...@@ -445,7 +445,7 @@ objc_msg_lookup (id receiver, SEL op)
} }
IMP IMP
objc_msg_lookup_super (Super_t super, SEL sel) objc_msg_lookup_super (struct objc_super *super, SEL sel)
{ {
if (super->self) if (super->self)
return get_imp (super->class, sel); return get_imp (super->class, sel);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment