|
|
1.1 ! root 1: /* Interface for the Object class for Objective-C. ! 2: Copyright (C) 1993, 1994 Free Software Foundation, Inc. ! 3: ! 4: This file is part of GNU CC. ! 5: ! 6: GNU CC is free software; you can redistribute it and/or modify it ! 7: under the terms of the GNU General Public License as published by the ! 8: Free Software Foundation; either version 2, or (at your option) any ! 9: later version. ! 10: ! 11: GNU CC is distributed in the hope that it will be useful, but WITHOUT ! 12: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ! 13: or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public ! 14: License for more details. ! 15: ! 16: You should have received a copy of the GNU General Public License ! 17: along with GNU CC; see the file COPYING. If not, write to ! 18: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ! 19: ! 20: /* As a special exception, if you link this library with files compiled ! 21: with GCC to produce an executable, this does not cause the resulting ! 22: executable to be covered by the GNU General Public License. This ! 23: exception does not however invalidate any other reasons why the ! 24: executable file might be covered by the GNU General Public License. */ ! 25: ! 26: #ifndef __object_INCLUDE_GNU ! 27: #define __object_INCLUDE_GNU ! 28: ! 29: #include <objc/objc.h> ! 30: #include <objc/typedstream.h> ! 31: ! 32: /* ! 33: * All classes are derived from Object. As such, ! 34: * this is the overhead tacked onto those objects. ! 35: */ ! 36: @interface Object ! 37: { ! 38: Class* isa; /* A pointer to the instance's class structure */ ! 39: } ! 40: ! 41: /* Initializing classes and instances */ ! 42: + initialize; ! 43: - init; ! 44: ! 45: /* Creating, freeing, and copying instances */ ! 46: + new; ! 47: + alloc; ! 48: - free; ! 49: - copy; ! 50: - shallowCopy; ! 51: - deepen; ! 52: - deepCopy; ! 53: ! 54: /* Identifying classes */ ! 55: - (Class*)class; ! 56: - (Class*)superClass; ! 57: - (MetaClass*)metaClass; ! 58: - (const char *)name; ! 59: ! 60: /* Identifying and comparing objects */ ! 61: - self; ! 62: - (unsigned int)hash; ! 63: - (BOOL)isEqual:anObject; ! 64: - (int)compare:anotherObject; ! 65: ! 66: /* Testing object type */ ! 67: - (BOOL)isMetaClass; ! 68: - (BOOL)isClass; ! 69: - (BOOL)isInstance; ! 70: ! 71: /* Testing inheritance relationships */ ! 72: - (BOOL)isKindOf:(Class*)aClassObject; ! 73: - (BOOL)isMemberOf:(Class*)aClassObject; ! 74: - (BOOL)isKindOfClassNamed:(const char *)aClassName; ! 75: - (BOOL)isMemberOfClassNamed:(const char *)aClassName; ! 76: ! 77: /* Testing class functionality */ ! 78: + (BOOL)instancesRespondTo:(SEL)aSel; ! 79: - (BOOL)respondsTo:(SEL)aSel; ! 80: ! 81: /* Testing protocol conformance */ ! 82: - (BOOL)conformsTo:(Protocol*)aProtocol; ! 83: ! 84: /* Introspection */ ! 85: + (IMP)instanceMethodFor:(SEL)aSel; ! 86: - (IMP)methodFor:(SEL)aSel; ! 87: + (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; ! 88: - (struct objc_method_description *)descriptionForMethod:(SEL)aSel; ! 89: ! 90: /* Sending messages determined at run time */ ! 91: - perform:(SEL)aSel; ! 92: - perform:(SEL)aSel with:anObject; ! 93: - perform:(SEL)aSel with:anObject1 with:anObject2; ! 94: ! 95: /* Forwarding */ ! 96: - forward:(SEL)aSel :(arglist_t)argFrame; ! 97: - performv:(SEL)aSel :(arglist_t)argFrame; ! 98: ! 99: /* Posing */ ! 100: + poseAs:(Class*)aClassObject; ! 101: - (Class*)transmuteClassTo:(Class*)aClassObject; ! 102: ! 103: /* Enforcing intentions */ ! 104: - subclassResponsibility:(SEL)aSel; ! 105: - notImplemented:(SEL)aSel; ! 106: - shouldNotImplement:(SEL)aSel; ! 107: ! 108: /* Error handling */ ! 109: - doesNotRecognize:(SEL)aSel; ! 110: - error:(const char *)aString, ...; ! 111: ! 112: /* Archiving */ ! 113: + (int)version; ! 114: + setVersion:(int)aVersion; ! 115: + (int)streamVersion: (TypedStream*)aStream; ! 116: ! 117: - read: (TypedStream*)aStream; ! 118: - write: (TypedStream*)aStream; ! 119: - awake; ! 120: ! 121: @end ! 122: ! 123: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.