In libobjc/: 2010-10-10 Nicola Pero <nicola.pero@meta-innovation.com>
authorNicola Pero <nicola.pero@meta-innovation.com>
Sat, 9 Oct 2010 22:22:23 +0000 (22:22 +0000)
committerNicola Pero <nicola@gcc.gnu.org>
Sat, 9 Oct 2010 22:22:23 +0000 (22:22 +0000)
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

libobjc/ChangeLog
libobjc/Makefile.in
libobjc/Object.m
libobjc/objc-foreach.c
libobjc/objc/deprecated/METHOD_NULL.h [new file with mode: 0644]
libobjc/objc/objc-api.h
libobjc/sendmsg.c

index 63c2a64..f388a68 100644 (file)
@@ -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,
index d99ab26..25d6077 100644 (file)
@@ -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 \
index 3a5bcb3..441c471 100644 (file)
@@ -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
index 83a9101..a06a77e 100644 (file)
@@ -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;
diff --git a/libobjc/objc/deprecated/METHOD_NULL.h b/libobjc/objc/deprecated/METHOD_NULL.h
new file mode 100644 (file)
index 0000000..6912be3
--- /dev/null
@@ -0,0 +1,2 @@
+/* For functions which return Method_t */
+#define METHOD_NULL    (Method_t)0
index ff457f2..5f90430 100644 (file)
@@ -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);
 
index 621d531..a822af4 100644 (file)
@@ -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. */