Patchwork =?UTF-8?Q?libobjc:=20header=20cleanup=20for=20new=20API=20(6)?=

login
register
mail settings
Submitter Nicola Pero
Date Dec. 19, 2010, 2:13 a.m.
Message ID <1292724780.152826388@192.168.2.229>
Download mbox | patch
Permalink /patch/76111/
State New
Headers show

Comments

Nicola Pero - Dec. 19, 2010, 2:13 a.m.
This patch adds a declaration of a hook that was available in the old API
and should be available in the new API as well, but I had forgotten to declare
it in the headers. :-(

Committed to trunk.

Thanks

Patch

Index: init.c
===================================================================
--- init.c      (revision 168043)
+++ init.c      (working copy)
@@ -83,11 +83,7 @@ 
 /* Add protocol to class.  */
 static void __objc_class_add_protocols (Class, struct objc_protocol_list *);
 
-/* This is a hook which is called by __objc_exec_class every time a
-   class or a category is loaded into the runtime.  This may e.g. help
-   a dynamic loader determine the classes that have been loaded when
-   an object file is dynamically linked in.  */
-/* TODO: This needs to be declared in a public file with the new API.  */
+/* Load callback hook.  */
 void (*_objc_load_callback) (Class class, struct objc_category *category); /* !T:SAFE */
 
 /* Are all categories/classes resolved?  */
@@ -724,6 +720,10 @@ 
   objc_send_load ();
 
   objc_mutex_unlock (__objc_runtime_mutex);
+
+  /* TODO: Do we need to add a call to __objc_resolve_class_links()
+     here ?  gnustep-base does it manually after it loads a module.
+     Shouldn't we do it automatically ?  */
 }
 
 static void
Index: ChangeLog
===================================================================
--- ChangeLog   (revision 168043)
+++ ChangeLog   (working copy)
@@ -1,5 +1,11 @@ 
 2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>
 
+       * init.c: Updated comments.
+       * objc/objc-api.h: Updated comments.
+       * objc/runtime.h (_objc_load_callback): Declare.
+       
+2010-12-19  Nicola Pero  <nicola.pero@meta-innovation.com>
+
        * objc/Object.h: Include deprecated/typedstream.h and
        deprecated/hash.h instead of typedstream.h.  Updated comments.
 
Index: objc/runtime.h
===================================================================
--- objc/runtime.h      (revision 168043)
+++ objc/runtime.h      (working copy)
@@ -876,7 +876,15 @@ 
 
 /* TODO: Add all the other functions in the API.  */
 
+/** Implementation: the following hook is in init.c.  */
 
+/* This is a hook which is called by __objc_exec_class every time a
+   class or a category is loaded into the runtime.  This may e.g. help
+   a dynamic loader determine the classes that have been loaded when
+   an object file is dynamically linked in.  */
+objc_EXPORT void (*_objc_load_callback)(Class _class, struct objc_category *category);
+
+
 /** Implementation: the following functions are in objc-foreach.c.  */
 
 /* 'objc_enumerationMutation()' is called when a collection is
Index: objc/objc-api.h
===================================================================
--- objc/objc-api.h     (revision 168043)
+++ objc/objc-api.h     (working copy)
@@ -26,25 +26,28 @@ 
 #ifndef __objc_api_INCLUDE_GNU
 #define __objc_api_INCLUDE_GNU
 
-/*
-  This file declares the "traditional" GNU Objective-C Runtime API.
-  It is the API supported by older versions of the GNU Objective-C
-  Runtime.  Include this file to use it.
+/* This file declares the "traditional" GNU Objective-C Runtime API.
+   It is the API supported by older versions of the GNU Objective-C
+   Runtime.  Include this file to use it.
 
-  This API is being replaced by the "modern" GNU Objective-C Runtime
-  API, which is declared in objc/runtime.h.  The "modern" API is very
-  similar to the API used by the modern Apple/NeXT runtime.
+   This API is being replaced by the "modern" GNU Objective-C Runtime
+   API, which is declared in objc/runtime.h.  The "modern" API is very
+   similar to the API used by the modern Apple/NeXT runtime.
 
-  Because the two APIs have some conflicting definitions (in
-  particular, Method and Category are defined differently) you should
-  include either objc/objc-api.h (to use the traditional GNU
-  Objective-C Runtime API) or objc/runtime.h (to use the modern GNU
-  Objective-C Runtime API), but not both.
-*/
+   The last version of GCC supporting the traditional API is GCC 4.6.
+   This file will not exist in later versions of GCC.
+
+   Because the two APIs have some conflicting definitions (in
+   particular, Method and Category are defined differently) you should
+   include either objc/objc-api.h (to use the traditional GNU
+   Objective-C Runtime API) or objc/runtime.h (to use the modern GNU
+   Objective-C Runtime API), but not both.  */
 #ifdef __objc_runtime_INCLUDE_GNU
 # error You can not include both objc/objc-api.h and objc/runtime.h.  Include objc/objc-api.h for the traditional GNU Objective-C Runtime API and objc/runtime.h for the modern one.
 #endif
 
+/* TODO: A deprecation warning any time the file is included ? */
+
 #include "objc.h"
 #ifndef GNU_LIBOBJC_COMPILING_LIBOBJC_ITSELF
 # include "deprecated/hash.h"
@@ -182,6 +185,8 @@ 
 ** objc_get_class if the runtime is not able to find the class.
 ** This may e.g. try to load in the class using dynamic loading.
 ** The function is guaranteed to be passed a non-NULL name string.
+** In the Modern API, this is replaced by
+** objc_setGetUnknownClassHandler ().
 */
 objc_EXPORT Class (*_objc_lookup_class)(const char *name);