diff options
Diffstat (limited to 'gnu/usr.bin/cc/libobjc/Object.h')
| -rw-r--r-- | gnu/usr.bin/cc/libobjc/Object.h | 121 | 
1 files changed, 121 insertions, 0 deletions
| diff --git a/gnu/usr.bin/cc/libobjc/Object.h b/gnu/usr.bin/cc/libobjc/Object.h new file mode 100644 index 000000000000..917fed55a877 --- /dev/null +++ b/gnu/usr.bin/cc/libobjc/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> +#include <objc/typedstream.h> + +/* + * 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 */ +} + +        /* 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; + +        /* 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 */ +- forward:(SEL)aSel :(arglist_t)argFrame; +- performv:(SEL)aSel :(arglist_t)argFrame; + +        /* Posing */ ++ poseAs:(Class*)aClassObject; +- (Class*)transmuteClassTo:(Class*)aClassObject; + +        /* Enforcing intentions */ +- subclassResponsibility:(SEL)aSel; +- notImplemented:(SEL)aSel; + +        /* Error handling */ +- doesNotRecognize:(SEL)aSel; +- error:(const char *)aString, ...; + +        /* Archiving */ ++ (int)version; ++ setVersion:(int)aVersion; ++ (int)streamVersion: (TypedStream*)aStream; + +- read: (TypedStream*)aStream; +- write: (TypedStream*)aStream; +- awake; + +@end + +#endif | 
