From 002d4675481348987b4f7191e61e12e4e7ac9b4e Mon Sep 17 00:00:00 2001 From: Nicola Pero Date: Tue, 14 Dec 2010 23:36:36 +0000 Subject: [PATCH] Object.h: Moved all the methods, with the exception of -class and -isEqual:, into ... 2010-12-14 Nicola Pero * 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. From-SVN: r167825 --- libobjc/ChangeLog | 8 +++ libobjc/Object.m | 33 +++++----- libobjc/objc/Object.h | 104 +++++-------------------------- libobjc/objc/deprecated/Object.h | 79 +++++++++++++++++++++-- 4 files changed, 113 insertions(+), 111 deletions(-) diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog index bbf4696211aa..94caca3c479b 100644 --- a/libobjc/ChangeLog +++ b/libobjc/ChangeLog @@ -1,3 +1,11 @@ +2010-12-14 Nicola Pero + + * 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 * objects.c (object_copy): Do not #undef as we are no longer diff --git a/libobjc/Object.m b/libobjc/Object.m index 441c471b2a16..0b7c49fdab29 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 e5c32f1447f4..379e906455ae 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. +/* 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. - 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, you can define + your own root class, different from Object. - 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. -*/ + 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. */ -/* - All classes are derived from Object. As such, - this is the overhead tacked onto those objects. - */ +/* 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 isa; /* A pointer to the instance's class structure. */ } - - /* Initializing classes and instances */ -+ initialize; -- init; - - /* Creating, freeing, and copying instances */ -+ new; -+ alloc; -- free; -- copy; -- shallowCopy; -- deepen; -- deepCopy; - - /* Identifying classes */ - (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 0241f0fd8505..e15cf7dd9960 100644 --- a/libobjc/objc/deprecated/Object.h +++ b/libobjc/objc/deprecated/Object.h @@ -1,8 +1,79 @@ -@interface Object (Deprecated) - /* The following methods were deprecated in GCC 4.6.0 and will be - removed in the next GCC release. -*/ + 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; + + (int)streamVersion: (TypedStream*)aStream; /* __attribute__ ((deprecated)) */ - read: (TypedStream*)aStream; /* __attribute__ ((deprecated)) */