In libobjc/: 2010-10-10 Nicola Pero <nicola.pero@meta-innovation.com>
In libobjc/: 2010-10-10 Nicola Pero <nicola.pero@meta-innovation.com> * objc-foreach.c: Include objc-private/common.h. * objc/deprecated/METHOD_NULL.h: New file. * objc/objc-api.h: Include deprecated/METHOD_NULL.h instead of defining METHOD_NULL here. * Makefile.in (OBJC_DEPRECATED_H): Added METHOD_NULL.h. * Object.m ([+instancesRespondTo:]): Use (Method_t)0 instead of METHOD_NULL. ([-respondsTo:]): Same change. * objc/objc-api.h (method_get_imp): Converted it into a normal function so that we can hide the internals of struct objc_method. * sendmsg.c (method_get_imp): Implemented. From-SVN: r165241
This commit is contained in:
parent
3a42502df4
commit
cf3822f181
7 changed files with 31 additions and 11 deletions
|
@ -1,3 +1,17 @@
|
|||
2010-10-10 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
* objc-foreach.c: Include objc-private/common.h.
|
||||
* objc/deprecated/METHOD_NULL.h: New file.
|
||||
* objc/objc-api.h: Include deprecated/METHOD_NULL.h instead of
|
||||
defining METHOD_NULL here.
|
||||
* Makefile.in (OBJC_DEPRECATED_H): Added METHOD_NULL.h.
|
||||
* Object.m ([+instancesRespondTo:]): Use (Method_t)0 instead of
|
||||
METHOD_NULL.
|
||||
([-respondsTo:]): Same change.
|
||||
* objc/objc-api.h (method_get_imp): Converted it into a normal
|
||||
function so that we can hide the internals of struct objc_method.
|
||||
* sendmsg.c (method_get_imp): Implemented.
|
||||
|
||||
2010-10-09 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
* objc/objc-api.h (struct objc_super, Super, Super_t,
|
||||
|
|
|
@ -131,6 +131,7 @@ OBJC_H = \
|
|||
# User-visible header files containing deprecated APIs, from the
|
||||
# objc/deprecated directory
|
||||
OBJC_DEPRECATED_H = \
|
||||
METHOD_NULL.h \
|
||||
MetaClass.h \
|
||||
Object.h \
|
||||
STR.h \
|
||||
|
|
|
@ -172,14 +172,14 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
|
||||
+ (BOOL)instancesRespondTo:(SEL)aSel
|
||||
{
|
||||
return class_get_instance_method(self, aSel)!=METHOD_NULL;
|
||||
return class_get_instance_method(self, aSel) != (Method_t)0;
|
||||
}
|
||||
|
||||
- (BOOL)respondsTo:(SEL)aSel
|
||||
{
|
||||
return ((object_is_instance(self)
|
||||
?class_get_instance_method(self->isa, aSel)
|
||||
:class_get_class_method(self->isa, aSel))!=METHOD_NULL);
|
||||
:class_get_class_method(self->isa, aSel)) != (Method_t)0);
|
||||
}
|
||||
|
||||
+ (IMP)instanceMethodFor:(SEL)aSel
|
||||
|
|
|
@ -27,8 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
objc_set_enumeration_mutation_handler(), the two functions required
|
||||
to handle mutations during a fast enumeration.
|
||||
*/
|
||||
#include "objc/runtime.h" /* For objc_enumerationMutation() and objc_set_enumeration_mutation_handler() */
|
||||
#include "objc-private/common.h"
|
||||
#include "objc-private/error.h" /* For _objc_abort() */
|
||||
#include "objc/runtime.h" /* For objc_enumerationMutation() and objc_set_enumeration_mutation_handler() */
|
||||
|
||||
/* The enumeration mutation handler currently in use. */
|
||||
static void (*__objc_enumeration_mutation_handler)(id) = NULL;
|
||||
|
|
2
libobjc/objc/deprecated/METHOD_NULL.h
Normal file
2
libobjc/objc/deprecated/METHOD_NULL.h
Normal file
|
@ -0,0 +1,2 @@
|
|||
/* For functions which return Method_t */
|
||||
#define METHOD_NULL (Method_t)0
|
|
@ -40,9 +40,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/* For functions which return Method_t */
|
||||
#define METHOD_NULL (Method_t)0
|
||||
/* Boolean typedefs */
|
||||
#include "deprecated/METHOD_NULL.h"
|
||||
|
||||
/* Method descriptor returned by introspective Object methods.
|
||||
This is really just the first part of the more complete objc_method
|
||||
structure defined below and used internally by the runtime. */
|
||||
|
@ -441,11 +440,7 @@ extern void class_ivar_set_gcinvisible (Class _class,
|
|||
const char* ivarname,
|
||||
BOOL gcInvisible);
|
||||
|
||||
static inline IMP
|
||||
method_get_imp(Method_t method)
|
||||
{
|
||||
return (method!=METHOD_NULL)?method->method_imp:(IMP)0;
|
||||
}
|
||||
objc_EXPORT IMP method_get_imp(Method_t method);
|
||||
|
||||
objc_EXPORT IMP get_imp (Class _class, SEL sel);
|
||||
|
||||
|
|
|
@ -194,6 +194,13 @@ get_imp (Class class, SEL sel)
|
|||
return res;
|
||||
}
|
||||
|
||||
/* Given a method, return its implementation. */
|
||||
IMP
|
||||
method_get_imp (Method_t method)
|
||||
{
|
||||
return (method != (Method_t)0) ? method->method_imp : (IMP)0;
|
||||
}
|
||||
|
||||
/* Query if an object can respond to a selector, returns YES if the
|
||||
object implements the selector otherwise NO. Does not check if the
|
||||
method can be forwarded. */
|
||||
|
|
Loading…
Add table
Reference in a new issue