Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -33,10 +33,17 @@ #ifdef OF_ATOMIC_OPS # import "atomic.h" #else # import "threading.h" #endif + +/* A few macros to reduce #ifdefs */ +#ifndef OF_APPLE_RUNTIME +# define class_getInstanceSize class_get_instance_size +# define class_getName class_get_name +# define class_getSuperclass class_get_super_class +#endif struct pre_ivar { void **memchunks; size_t memchunks_size; int32_t retain_count; /* int32_t because atomic ops use int32_t */ @@ -103,15 +110,11 @@ } + alloc { OFObject *instance; -#ifdef OF_APPLE_RUNTIME size_t isize = class_getInstanceSize(self); -#else - size_t isize = class_get_instance_size(self); -#endif if ((instance = malloc(isize + PRE_IVAR_ALIGN)) == NULL) { alloc_failed_exception.isa = [OFAllocFailedException class]; @throw (OFAllocFailedException*)&alloc_failed_exception; } @@ -139,39 +142,27 @@ return self; } + (const char*)className { -#ifdef OF_APPLE_RUNTIME return class_getName(self); -#else - return class_get_class_name(self); -#endif } + (BOOL)isSubclassOfClass: (Class)class { Class iter; -#ifdef OF_APPLE_RUNTIME for (iter = self; iter != Nil; iter = class_getSuperclass(iter)) -#else - for (iter = self; iter != Nil; iter = class_get_super_class(iter)) -#endif if (iter == class) return YES; return NO; } + (Class)superclass { -#ifdef OF_APPLE_RUNTIME return class_getSuperclass(self); -#else - return class_get_super_class(self); -#endif } + (BOOL)instancesRespondToSelector: (SEL)selector { #ifdef OF_APPLE_RUNTIME @@ -286,15 +277,11 @@ - (BOOL)isKindOfClass: (Class)class { Class iter; -#ifdef OF_APPLE_RUNTIME for (iter = isa; iter != Nil; iter = class_getSuperclass(iter)) -#else - for (iter = isa; iter != Nil; iter = class_get_super_class(iter)) -#endif if (iter == class) return YES; return NO; }