diff options
-rw-r--r-- | libobjc/ChangeLog | 8 | ||||
-rw-r--r-- | libobjc/Object.m | 33 | ||||
-rw-r--r-- | libobjc/objc/Object.h | 110 | ||||
-rw-r--r-- | libobjc/objc/deprecated/Object.h | 77 |
4 files changed, 115 insertions, 113 deletions
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index bbf4696..94caca3 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,5 +1,13 @@ 2010-12-14 Nicola Pero <nicola.pero@meta-innovation.com> + * objc/Object.h: Moved all the methods, with the exception of + -class and -isEqual:, into ... + * objc/deprecated/Object.h: here. + * Object.m: Moved all the methods, with the exception of -class + and -isEqual: into the 'Deprecated' category. + +2010-12-14 Nicola Pero <nicola.pero@meta-innovation.com> + * objects.c (object_copy): Do not #undef as we are no longer including objc/objc-api.h. * selector.c: Include objc/runtime.h and diff --git a/libobjc/Object.m b/libobjc/Object.m index 441c471..0b7c49f 100644 --- a/libobjc/Object.m +++ b/libobjc/Object.m @@ -31,6 +31,22 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see @implementation Object +- (Class)class +{ + return object_get_class (self); +} + +- (BOOL)isEqual: (id)anObject +{ + return self == anObject; +} + +@end + +/* The following methods were deprecated in GCC 4.6.0 and will be + removed in the next GCC release. */ +@implementation Object (Deprecated) + + initialize { return self; @@ -76,11 +92,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see return [self copy]; } -- (Class)class -{ - return object_get_class(self); -} - - (Class)superClass { return object_get_super_class(self); @@ -106,11 +117,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see return (size_t)self; } -- (BOOL)isEqual:anObject -{ - return self==anObject; -} - - (int)compare:(id)anotherObject; { if ([self isEqual:anotherObject]) @@ -344,13 +350,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see class_set_version(self, aVersion); return self; } -@end - -/* The following methods were deprecated in GCC 4.6.0 and will be - removed in the next GCC release. -*/ - -@implementation Object (Deprecated) + (int)streamVersion: (TypedStream*)aStream { diff --git a/libobjc/objc/Object.h b/libobjc/objc/Object.h index e5c32f1..379e906 100644 --- a/libobjc/objc/Object.h +++ b/libobjc/objc/Object.h @@ -33,103 +33,27 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see extern "C" { #endif -/* The Object class is a minimal (but fully functional) root class - included with the runtime. - - It is mostly for testing the runtime; very handy in configure - tests, and when writing language/runtime testcases. - - Because Objective-C allows multiple root classes, a Foundation - library (such as GNUstep Base) is expected to provide its own root - class (typically called NSObject), fully integrated with the - library's own high-level features. If you are using such a - Foundation library, you should most likely use its root class for - everything and ignore Object. -*/ - -/* - All classes are derived from Object. As such, - this is the overhead tacked onto those objects. - */ -@interface Object -{ - Class isa; /* A pointer to the instance's class structure */ -} +/* The Object class is a very minimal root class included with the + runtime. It is used as superclass for the two classes included + with the runtime, Protocol and NXConstantString. - /* Initializing classes and instances */ -+ initialize; -- init; + Because Objective-C allows multiple root classes, you can define + your own root class, different from Object. - /* Creating, freeing, and copying instances */ -+ new; -+ alloc; -- free; -- copy; -- shallowCopy; -- deepen; -- deepCopy; + In particular, a Foundation library (such as GNUstep Base) is + expected to provide its own root class (typically called NSObject), + fully integrated with the library's own high-level features. It is + expected that you should always use and interact with NSObject, and + mostly ignore Object. */ - /* Identifying classes */ +/* All classes are derived from Object. As such, this is the overhead + tacked onto those objects. */ +@interface Object +{ + Class isa; /* A pointer to the instance's class structure. */ +} - (Class)class; -- (Class)superClass; -- (MetaClass)metaClass; -- (const char *)name; - - /* Identifying and comparing objects */ -- self; -- (unsigned int)hash; -- (BOOL)isEqual:anObject; -- (int)compare:(id)anotherObject; - - /* Testing object type */ -- (BOOL)isMetaClass; -- (BOOL)isClass; -- (BOOL)isInstance; - - /* Testing inheritance relationships */ -- (BOOL)isKindOf:(Class)aClassObject; -- (BOOL)isMemberOf:(Class)aClassObject; -- (BOOL)isKindOfClassNamed:(const char *)aClassName; -- (BOOL)isMemberOfClassNamed:(const char *)aClassName; - - /* Testing class functionality */ -+ (BOOL)instancesRespondTo:(SEL)aSel; -- (BOOL)respondsTo:(SEL)aSel; - - /* Testing protocol conformance */ -- (BOOL)conformsTo:(Protocol*)aProtocol; - - /* Introspection */ -+ (IMP)instanceMethodFor:(SEL)aSel; -- (IMP)methodFor:(SEL)aSel; -+ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; -- (struct objc_method_description *)descriptionForMethod:(SEL)aSel; - - /* Sending messages determined at run time */ -- perform:(SEL)aSel; -- perform:(SEL)aSel with:anObject; -- perform:(SEL)aSel with:anObject1 with:anObject2; - - /* Forwarding */ -- (retval_t)forward:(SEL)aSel :(arglist_t)argFrame; -- (retval_t)performv:(SEL)aSel :(arglist_t)argFrame; - - /* Posing */ -+ poseAs:(Class)aClassObject; -- (Class)transmuteClassTo:(Class)aClassObject; - - /* Enforcing intentions */ -- subclassResponsibility:(SEL)aSel; -- notImplemented:(SEL)aSel; -- shouldNotImplement:(SEL)aSel; - - /* Error handling */ -- doesNotRecognize:(SEL)aSel; -- error:(const char *)aString, ...; - - /* Archiving */ -+ (int)version; -+ setVersion:(int)aVersion; +- (BOOL)isEqual: (id)anObject; @end #include "deprecated/Object.h" diff --git a/libobjc/objc/deprecated/Object.h b/libobjc/objc/deprecated/Object.h index 0241f0f..e15cf7d 100644 --- a/libobjc/objc/deprecated/Object.h +++ b/libobjc/objc/deprecated/Object.h @@ -1,8 +1,79 @@ +/* The following methods were deprecated in GCC 4.6.0 and will be + removed in the next GCC release. */ @interface Object (Deprecated) +/* Initializing classes and instances */ ++ initialize; +- init; + +/* Creating, freeing, and copying instances */ ++ new; ++ alloc; +- free; +- copy; +- shallowCopy; +- deepen; +- deepCopy; + +/* Identifying classes */ +- (Class)superClass; +- (MetaClass)metaClass; +- (const char *)name; + +/* Identifying and comparing objects */ +- self; +- (unsigned int)hash; +- (int)compare:(id)anotherObject; + +/* Testing object type */ +- (BOOL)isMetaClass; +- (BOOL)isClass; +- (BOOL)isInstance; + +/* Testing inheritance relationships */ +- (BOOL)isKindOf:(Class)aClassObject; +- (BOOL)isMemberOf:(Class)aClassObject; +- (BOOL)isKindOfClassNamed:(const char *)aClassName; +- (BOOL)isMemberOfClassNamed:(const char *)aClassName; + +/* Testing class functionality */ ++ (BOOL)instancesRespondTo:(SEL)aSel; +- (BOOL)respondsTo:(SEL)aSel; + +/* Testing protocol conformance */ +- (BOOL)conformsTo:(Protocol*)aProtocol; + +/* Introspection */ ++ (IMP)instanceMethodFor:(SEL)aSel; +- (IMP)methodFor:(SEL)aSel; ++ (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; +- (struct objc_method_description *)descriptionForMethod:(SEL)aSel; + +/* Sending messages determined at run time */ +- perform:(SEL)aSel; +- perform:(SEL)aSel with:anObject; +- perform:(SEL)aSel with:anObject1 with:anObject2; + +/* Forwarding */ +- (retval_t)forward:(SEL)aSel :(arglist_t)argFrame; +- (retval_t)performv:(SEL)aSel :(arglist_t)argFrame; + +/* Posing */ ++ poseAs:(Class)aClassObject; +- (Class)transmuteClassTo:(Class)aClassObject; + +/* Enforcing intentions */ +- subclassResponsibility:(SEL)aSel; +- notImplemented:(SEL)aSel; +- shouldNotImplement:(SEL)aSel; + +/* Error handling */ +- doesNotRecognize:(SEL)aSel; +- error:(const char *)aString, ...; + +/* Archiving */ ++ (int)version; ++ setVersion:(int)aVersion; -/* The following methods were deprecated in GCC 4.6.0 and will be - removed in the next GCC release. -*/ + (int)streamVersion: (TypedStream*)aStream; /* __attribute__ ((deprecated)) */ - read: (TypedStream*)aStream; /* __attribute__ ((deprecated)) */ |