diff options
author | wood <wood@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-10 01:05:19 +0000 |
---|---|---|
committer | wood <wood@138bc75d-0d04-0410-961f-82ee72b054a4> | 1993-04-10 01:05:19 +0000 |
commit | 82a0b8e011809ca2df2279e865a2ca8ab7e12990 (patch) | |
tree | c39971c9d7ab0c5af58d8e1646e5441330042183 /gcc/objc/Object.h | |
parent | 556ea276ef514e21ea66a5d24039589cf29cb235 (diff) | |
download | gcc-82a0b8e011809ca2df2279e865a2ca8ab7e12990.tar.gz |
Initial revision
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@4077 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/objc/Object.h')
-rw-r--r-- | gcc/objc/Object.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/gcc/objc/Object.h b/gcc/objc/Object.h new file mode 100644 index 00000000000..33e10bc6b5d --- /dev/null +++ b/gcc/objc/Object.h @@ -0,0 +1,121 @@ +/* Interface for the Object class for Objective-C. + Copyright (C) 1993 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +GNU CC is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +/* As a special exception, if you link this library with files compiled + with GCC to produce an executable, this does not cause the resulting + executable to be covered by the GNU General Public License. This + exception does not however invalidate any other reasons why the + executable file might be covered by the GNU General Public License. */ + +#ifndef __object_INCLUDE_GNU +#define __object_INCLUDE_GNU + +#include <objc/objc.h> + +/* + * All classes are derived from Object. As such, + * this is the overhead tacked onto those objects. + */ +@interface Object +{ + Class_t 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_t)class; +- (Class_t)superClass; +- (MetaClass_t)metaClass; +- (const char *)name; + + /* Identifying and comparing objects */ +- self; +- (unsigned int)hash; +- (BOOL)isEqual:anObject; + + /* Testing object type */ +- (BOOL)isMetaClass; +- (BOOL)isClass; +- (BOOL)isInstance; + + /* Testing inheritance relationships */ +- (BOOL)isKindOf:(Class_t)aClassObject; +- (BOOL)isMemberOf:(Class_t)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 */ +- forward:(SEL)aSel :(arglist_t)argFrame; +- performv:(SEL)aSel :(arglist_t)argFrame; + + /* Posing */ ++ poseAs:(Class_t)aClassObject; +- (Class_t)transmuteClassTo:(Class_t)aClassObject; + + /* Enforcing intentions */ +- subclassResponsibility:(SEL)aSel; +- notImplemented:(SEL)aSel; + + /* Error handling */ +- doesNotRecognize:(SEL)aSel; +- error:(const char *)aString, ...; + + /* Archiving */ ++ (int)version; ++ setVersion:(int)aVersion; + +- read: (TypedStream*)aStream; +- write: (TypedStream*)aStream; + ++ read: (TypedStream*)aStream; ++ write: (TypedStream*)aStream; + +@end + +#endif |