diff --git a/ChangeLog b/ChangeLog index 839c1de60..256f50e1c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2001-07-16 Adam Fedor + + * Headers/gnustep/base/objc-gnu2next.h: New definitions for sel + functions, rearrange some things. + * Headers/gnustep/base/objc-load.h: Change category type for + compatibility with NeXT. + * Source/objc-load.m: Likewise. + + * Source/GSCompatibility.m (+defaultsChanged:): Typo in method name. + 2001-07-16 Richard Frith-Macdonald * Source/NSString.m: Finish off and enable XML property list code diff --git a/Headers/gnustep/base/objc-gnu2next.h b/Headers/gnustep/base/objc-gnu2next.h index 19285f347..7bcdc3d38 100644 --- a/Headers/gnustep/base/objc-gnu2next.h +++ b/Headers/gnustep/base/objc-gnu2next.h @@ -43,26 +43,27 @@ typedef void(*apply_t)(void); /* function pointer */ #define class_pointer isa typedef struct objc_super Super; -#define class_create_instance(CLASS) class_createInstance(CLASS, 0) - -#define sel_get_name sel_getName -#define sel_get_uid sel_getUid -#define sel_eq(s1, s2) (s1 == s2) - -/* FIXME: Any equivalent for this ? */ -#define sel_get_type(SELECTOR) \ - (NULL) - +#define class_create_instance(CLASS) class_createInstance(CLASS, 0) #define class_get_instance_method class_getInstanceMethod #define class_get_class_method class_getClassMethod #define class_add_method_list class_addMethods +#define class_get_version class_getVersion #define method_get_sizeof_arguments method_getSizeOfArguments #define objc_lookup_class objc_lookUpClass -#define sel_get_any_uid sel_getUid #define objc_get_class objc_getClass -#define class_get_version class_getVersion + #define sel_register_name sel_registerName #define sel_is_mapped sel_isMapped +#define sel_get_name sel_getName +#define sel_get_any_uid sel_getUid +#define sel_get_uid sel_getUid +#define sel_eq(s1, s2) (s1 == s2) + +/* There's no support for typed sels in NeXT. These may not work */ +#define sel_get_typed_uid(_s, _t) sel_getUid(_s) +#define sel_get_any_typed_uid sel_getUid +#define sel_register_typed_name(_s, _t) sel_registerName(_s) +#define sel_get_type(_s) (NULL) #define class_get_class_name(CLASSPOINTER) \ (((struct objc_class*)(CLASSPOINTER))->name) @@ -70,6 +71,8 @@ typedef struct objc_super Super; (((struct objc_class*)(OBJECT))->isa) #define class_get_super_class(CLASSPOINTER) \ (((struct objc_class*)(CLASSPOINTER))->super_class) +#define object_get_super_class(OBJ) \ + (((struct objc_class*)(object_get_class(OBJECT)))->super_class) #define object_get_class_name(OBJECT) \ (((struct objc_class*)(object_get_class(OBJECT)))->name) @@ -124,6 +127,12 @@ method_get_imp(Method method) return (method!=0)?method->method_imp:(IMP)0; } +static inline IMP +get_imp(Class class, SEL aSel) +{ + return method_get_imp(class_getInstanceMethod(class, aSel)); +} + static inline BOOL object_is_instance(id object) { diff --git a/Headers/gnustep/base/objc-load.h b/Headers/gnustep/base/objc-load.h index 7e3652099..dc71a2dc4 100644 --- a/Headers/gnustep/base/objc-load.h +++ b/Headers/gnustep/base/objc-load.h @@ -21,24 +21,24 @@ extern long objc_load_module( const char *filename, FILE *errorStream, - void (*loadCallback)(Class, Category*), + void (*loadCallback)(Class, struct objc_category *), void **header, char *debugFilename); extern long objc_unload_module( FILE *errorStream, - void (*unloadCallback)(Class, Category*)); + void (*unloadCallback)(Class, struct objc_category *)); extern long objc_load_modules( char *files[], FILE *errorStream, - void (*callback)(Class,Category*), + void (*callback)(Class,struct objc_category *), void **header, char *debugFilename); extern long objc_unload_modules( FILE *errorStream, - void (*unloadCallback)(Class, Category*)); + void (*unloadCallback)(Class, struct objc_category *)); extern NSString *objc_get_symbol_path( Class theClass, diff --git a/Source/GSCompatibility.m b/Source/GSCompatibility.m index 31045c475..29d06ede6 100644 --- a/Source/GSCompatibility.m +++ b/Source/GSCompatibility.m @@ -76,7 +76,7 @@ static BOOL MacOSXCompatiblePropertyLists = NO; def = [defaults objectForKey: @"NSWriteOldStylePropertyLists"]; if (def != nil && [def isKindOfClass: sClass] == YES) { - if ([def boolBalue] == YES) + if ([def boolValue] == YES) { MacOSXCompatiblePropertyLists = NO; } diff --git a/Source/objc-load.m b/Source/objc-load.m index 42d69cfbc..275737fc2 100644 --- a/Source/objc-load.m +++ b/Source/objc-load.m @@ -69,7 +69,7 @@ const char *objc_executable_location( void ); static BOOL dynamic_loaded; /* Our current callback function */ -void (*_objc_load_load_callback)(Class, Category*) = 0; +void (*_objc_load_load_callback)(Class, struct objc_category *) = 0; /* List of modules we have loaded (by handle) */ #ifndef NeXT_RUNTIME @@ -139,7 +139,7 @@ objc_initialize_loading(FILE *errorStream) Do what we need to do and call our own callback. */ static void -objc_load_callback(Class class, Category* category) +objc_load_callback(Class class, struct objc_category * category) { /* Invalidate the dtable, so it will be rebuilt correctly */ if (class != 0 && category != 0) { @@ -155,7 +155,7 @@ long objc_load_module( const char *filename, FILE *errorStream, - void (*loadCallback)(Class, Category*), + void (*loadCallback)(Class, struct objc_category *), void **header, char *debugFilename) @@ -223,7 +223,7 @@ objc_load_module( long objc_unload_module( FILE *errorStream, - void (*unloadCallback)(Class, Category*)) + void (*unloadCallback)(Class, struct objc_category *)) { if (!dynamic_loaded) return 1; @@ -234,7 +234,7 @@ objc_unload_module( } long objc_load_modules(char *files[],FILE *errorStream, - void (*callback)(Class,Category*), + void (*callback)(Class,struct objc_category *), void **header, char *debugFilename) { @@ -250,7 +250,7 @@ long objc_load_modules(char *files[],FILE *errorStream, long objc_unload_modules( FILE *errorStream, - void (*unloadCallback)(Class, Category*)) + void (*unloadCallback)(Class, struct objc_category *)) { if (!dynamic_loaded) return 1;