--- gcc/objc/Object.h 2018/04/24 18:03:32 1.1.1.1 +++ gcc/objc/Object.h 2018/04/24 18:26:53 1.1.1.5 @@ -1,116 +1,124 @@ -/* Declare the class Object for Objective C programs. - Copyright (C) 1992 Free Software Foundation, Inc. +/* Interface for the Object class for Objective-C. + Copyright (C) 1993, 1994, 1995 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 FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +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. */ +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, 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. */ +/* 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.h" -#include "stdio.h" - +#include +#include /* - * 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_t isa; /* A pointer to the instance's - class structure. - - This structure is the one - generated by the compiler - and located in the TEXT - segment. The run-time uses - its address as a key to - run-time information. */ +@interface Object +{ + Class isa; /* A pointer to the instance's class structure */ } -/* Creating, copying, and freeing instances */ + /* Initializing classes and instances */ ++ initialize; +- init; + /* Creating, freeing, and copying instances */ + new; -+ free; ++ alloc; - free; - copy; - shallowCopy; +- deepen; - deepCopy; -/* Identifying classes */ - -+ ( Class_t )class; -+ ( Class_t )superClass; -- ( Class_t )class; -- ( Class_t )superClass; -- ( const char* )name; - -/* Identifying and comparing instances */ + /* Identifying classes */ +- (Class)class; +- (Class)superClass; +- (MetaClass)metaClass; +- (const char *)name; + /* Identifying and comparing objects */ - self; -- ( unsigned int )hash; -- ( BOOL )isEqual:anObject; - -/* Testing inheritance relationships */ - -- ( BOOL )isKindOf:( Class_t )aClassObject; -- ( BOOL )isMemberOf:( Class_t )aClassObject; -- ( BOOL )isKindOfGivenName:( const char* )aClassName; -- ( BOOL )isMemberOfGivenName:( const char* )aClassName; - -/* Testing class functionality */ - -+ ( BOOL )instancesRespondTo:( SEL )aSel; -- ( BOOL )respondsTo:( SEL )aSel; - -/* Sending messages determined at run time */ - -- perform:( SEL )aSel; -- perform:( SEL )aSel with:aObject; - -/* Posing */ - -+ poseAs:( Class_t )aClassObject; - -/* Enforcing intentions */ - -- subclassResponsibility:( SEL )aSel; -- notImplemented:( SEL )aSel; - -/* Error handling */ - -- doesNotRecognize:(SEL)aSelector; -- error:( const char* )aString, ...; -+ error:( const char* )aString, ...; - -/* Archiving */ - -- storeOn:( int )aFd; -+ readFrom:( int )aFd; -- readFrom:( int )aFd; -+ ( int )version; -+ setVersion:( int )aVersion; +- (unsigned int)hash; +- (BOOL)isEqual:anObject; +- (int)compare: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; + +- read: (TypedStream*)aStream; +- write: (TypedStream*)aStream; +- awake; @end - #endif -