|
|
1.1.1.2 ! root 1: /* Interface for the Object class for Objective-C. ! 2: Copyright (C) 1993 Free Software Foundation, Inc. 1.1 root 3: 4: This file is part of GNU CC. 5: 1.1.1.2 ! root 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. 1.1 root 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: 1.1.1.2 ! root 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. */ 1.1 root 25: 26: #ifndef __object_INCLUDE_GNU 27: #define __object_INCLUDE_GNU 28: 1.1.1.2 ! root 29: #include <objc/objc.h> ! 30: #include <objc/typedstream.h> 1.1 root 31: 32: /* 1.1.1.2 ! root 33: * All classes are derived from Object. As such, ! 34: * this is the overhead tacked onto those objects. 1.1 root 35: */ 1.1.1.2 ! root 36: @interface Object ! 37: { ! 38: Class* isa; /* A pointer to the instance's class structure */ 1.1 root 39: } 40: 1.1.1.2 ! root 41: /* Initializing classes and instances */ ! 42: + initialize; ! 43: - init; 1.1 root 44: 1.1.1.2 ! root 45: /* Creating, freeing, and copying instances */ 1.1 root 46: + new; 1.1.1.2 ! root 47: + alloc; 1.1 root 48: - free; 49: - copy; 50: - shallowCopy; 1.1.1.2 ! root 51: - deepen; 1.1 root 52: - deepCopy; 53: 1.1.1.2 ! root 54: /* Identifying classes */ ! 55: - (Class*)class; ! 56: - (Class*)superClass; ! 57: - (MetaClass*)metaClass; ! 58: - (const char *)name; 1.1 root 59: 1.1.1.2 ! root 60: /* Identifying and comparing objects */ 1.1 root 61: - self; 1.1.1.2 ! root 62: - (unsigned int)hash; ! 63: - (BOOL)isEqual:anObject; 1.1 root 64: 1.1.1.2 ! root 65: /* Testing object type */ ! 66: - (BOOL)isMetaClass; ! 67: - (BOOL)isClass; ! 68: - (BOOL)isInstance; ! 69: ! 70: /* Testing inheritance relationships */ ! 71: - (BOOL)isKindOf:(Class*)aClassObject; ! 72: - (BOOL)isMemberOf:(Class*)aClassObject; ! 73: - (BOOL)isKindOfClassNamed:(const char *)aClassName; ! 74: - (BOOL)isMemberOfClassNamed:(const char *)aClassName; ! 75: ! 76: /* Testing class functionality */ ! 77: + (BOOL)instancesRespondTo:(SEL)aSel; ! 78: - (BOOL)respondsTo:(SEL)aSel; ! 79: ! 80: /* Testing protocol conformance */ ! 81: - (BOOL)conformsTo:(Protocol*)aProtocol; ! 82: ! 83: /* Introspection */ ! 84: + (IMP)instanceMethodFor:(SEL)aSel; ! 85: - (IMP)methodFor:(SEL)aSel; ! 86: + (struct objc_method_description *)descriptionForInstanceMethod:(SEL)aSel; ! 87: - (struct objc_method_description *)descriptionForMethod:(SEL)aSel; ! 88: ! 89: /* Sending messages determined at run time */ ! 90: - perform:(SEL)aSel; ! 91: - perform:(SEL)aSel with:anObject; ! 92: - perform:(SEL)aSel with:anObject1 with:anObject2; ! 93: ! 94: /* Forwarding */ ! 95: - forward:(SEL)aSel :(arglist_t)argFrame; ! 96: - performv:(SEL)aSel :(arglist_t)argFrame; ! 97: ! 98: /* Posing */ ! 99: + poseAs:(Class*)aClassObject; ! 100: - (Class*)transmuteClassTo:(Class*)aClassObject; ! 101: ! 102: /* Enforcing intentions */ ! 103: - subclassResponsibility:(SEL)aSel; ! 104: - notImplemented:(SEL)aSel; ! 105: ! 106: /* Error handling */ ! 107: - doesNotRecognize:(SEL)aSel; ! 108: - error:(const char *)aString, ...; ! 109: ! 110: /* Archiving */ ! 111: + (int)version; ! 112: + setVersion:(int)aVersion; ! 113: + (int)streamVersion: (TypedStream*)aStream; ! 114: ! 115: - read: (TypedStream*)aStream; ! 116: - write: (TypedStream*)aStream; ! 117: - awake; 1.1 root 118: 119: @end 120: 121: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.