]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libobjc/objc/Object.h
Update copyright years.
[thirdparty/gcc.git] / libobjc / objc / Object.h
index ea3e7d7757703348de7161faff316ca9ed4406cc..25c5a4f6492e862367c37a389513f19811c507d0 100644 (file)
@@ -1,11 +1,11 @@
 /* Interface for the Object class for Objective-C.
-   Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1993-2020 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
 GCC 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
+Free Software Foundation; either version 3, or (at your option) any
 later version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT
@@ -13,112 +13,50 @@ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 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 GCC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
 
-/* 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;
-- (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;
+#include "objc.h"
 
-       /* 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;
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-        /* Error handling */
-- doesNotRecognize:(SEL)aSel;
-- error:(const char *)aString, ...;
+/* The Object class is a very minimal root class included with the
+   runtime.  It is used as superclass for the two classes included
+   with the runtime, Protocol and NXConstantString.
 
-        /* Archiving */
-+ (int)version;
-+ setVersion:(int)aVersion;
-+ (int)streamVersion: (TypedStream*)aStream;
+   Because Objective-C allows multiple root classes, you can define
+   your own root class, different from Object.
 
-- read: (TypedStream*)aStream;
-- write: (TypedStream*)aStream;
-- awake;
+   In particular, a Foundation library (such as GNUstep Base) is
+   expected to provide its own root class (typically called NSObject),
+   fully integrated with the library's own high-level features.  It is
+   expected that you should always use and interact with NSObject, and
+   mostly ignore Object.  */
 
+/* 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.  */
+}
+- (Class)class;
+- (BOOL)isEqual: (id)anObject;
 @end
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif