Index: sendmsg.c
===================================================================
--- sendmsg.c   (revision 165239)
+++ sendmsg.c   (working copy)
@@ -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. */
Index: Makefile.in
===================================================================
--- Makefile.in (revision 165239)
+++ Makefile.in (working copy)
@@ -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: objc-foreach.c
===================================================================
--- objc-foreach.c      (revision 165239)
+++ objc-foreach.c      (working copy)
@@ -27,8 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME respect
   objc_set_enumeration_mutation_handler(), the two functions required
   to handle mutations during a fast enumeration.
 */
+#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() */
-#include "objc-private/error.h"     /* For _objc_abort() */
 
 /* The enumeration mutation handler currently in use.  */
 static void (*__objc_enumeration_mutation_handler)(id) = NULL;
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 165239)
+++ ChangeLog   (working copy)
@@ -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: Object.m
===================================================================
--- Object.m    (revision 165239)
+++ Object.m    (working copy)
@@ -172,14 +172,14 @@ see the files COPYING3 and COPYING.RUNTIME respect
 
 + (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: objc/deprecated/METHOD_NULL.h
===================================================================
--- objc/deprecated/METHOD_NULL.h       (revision 0)
+++ objc/deprecated/METHOD_NULL.h       (revision 0)
@@ -0,0 +1,2 @@
+/* For functions which return Method_t */
+#define METHOD_NULL    (Method_t)0
Index: objc/objc-api.h
===================================================================
--- objc/objc-api.h     (revision 165239)
+++ objc/objc-api.h     (working copy)
@@ -40,9 +40,8 @@ see the files COPYING3 and COPYING.RUNTIME respect
 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 _cla
                                        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);
 
