From 120d5f8ea40c87b7451278186dc60849e5455af9 Mon Sep 17 00:00:00 2001 From: Nicola Pero Date: Sun, 19 Dec 2010 02:12:42 +0000 Subject: [PATCH] In libobjc/: 2010-12-19 Nicola Pero In libobjc/: 2010-12-19 Nicola Pero * init.c: Updated comments. * objc/objc-api.h: Updated comments. * objc/runtime.h (_objc_load_callback): Declare. From-SVN: r168044 --- libobjc/ChangeLog | 6 ++++++ libobjc/init.c | 10 +++++----- libobjc/objc/objc-api.h | 35 ++++++++++++++++++++--------------- libobjc/objc/runtime.h | 8 ++++++++ 4 files changed, 39 insertions(+), 20 deletions(-) diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index b551ea4..7335e27 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,5 +1,11 @@ 2010-12-19 Nicola Pero + * init.c: Updated comments. + * objc/objc-api.h: Updated comments. + * objc/runtime.h (_objc_load_callback): Declare. + +2010-12-19 Nicola Pero + * objc/Object.h: Include deprecated/typedstream.h and deprecated/hash.h instead of typedstream.h. Updated comments. diff --git a/libobjc/init.c b/libobjc/init.c index 370dea9..a282d5e 100644 --- a/libobjc/init.c +++ b/libobjc/init.c @@ -83,11 +83,7 @@ static void __objc_init_protocol (struct objc_protocol *protocol); /* 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_exec_class (struct objc_module *module) 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 diff --git a/libobjc/objc/objc-api.h b/libobjc/objc/objc-api.h index d31e13f..521f79e 100644 --- a/libobjc/objc/objc-api.h +++ b/libobjc/objc/objc-api.h @@ -26,25 +26,28 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see #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 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. -*/ +/* 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. + + 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 @@ typedef struct objc_category Category, *Category_t; ** 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); diff --git a/libobjc/objc/runtime.h b/libobjc/objc/runtime.h index 94f5bf7..de8f701 100644 --- a/libobjc/objc/runtime.h +++ b/libobjc/objc/runtime.h @@ -876,6 +876,14 @@ objc_EXPORT Protocol **protocol_copyProtocolList (Protocol *protocol, unsigned i /* 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. */ -- 2.7.4