Commit 584322a4 by Richard Stallman

Removed due to issues

From-SVN: r2454
parent da8dce4a
/* -*-c-*- */ /* Basic data types for Objective C.
Copyright (C) 1992 Free Software Foundation, Inc.
/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
This file is part of GNU CC. This file is part of GNU CC.
...@@ -23,68 +22,19 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ ...@@ -23,68 +22,19 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
the resulting executable to be covered by the GNU General Public License. the resulting executable to be covered by the GNU General Public License.
This exception does not however invalidate any other reasons why This exception does not however invalidate any other reasons why
the executable file might be covered by the GNU General Public License. */ the executable file might be covered by the GNU General Public License. */
/*
$Header: /usr/user/dennis_glatting/ObjC/c-runtime/include/RCS/objc.h,v 0.11 1992/04/13 11:40:53 dennisg Exp dennisg $
$Author: dennisg $
$Date: 1992/04/13 11:40:53 $
$Log: objc.h,v $
* Revision 0.11 1992/04/13 11:40:53 dennisg
* Check in after array version of run-time works.
* Expect more changes as hash version and other changes are made.
*
* Revision 0.10 1991/12/31 20:16:08 dennisg
* Deleted index variable stuff. Index variables are a hack to the language.
* Cleaned up some documentation.
*
* Revision 0.9 1991/12/10 12:04:22 dennisg
* Cleaned up file format for a distribution.
*
* Revision 0.8 1991/12/01 01:29:29 dennisg
* modified to remove changes previously made to
* implement posing. posing just got easy.
*
* Revision 0.7 1991/11/29 22:00:10 dennisg
* modified to implement set functions.
*
* Revision 0.6 1991/11/29 20:02:01 dennisg
* fixed several const decls. bozo.
*
* Revision 0.5 1991/11/29 00:24:14 dennisg
* many changes including posing, things to make the compiler
* happier, structure changes, and things to make it play better.
*
* Revision 0.4 1991/11/19 12:37:49 dennisg
* changed typedef and struct decls.
* the run-time was changed and those decls changed too.
*
* Revision 0.3 1991/11/16 15:57:35 dennisg
* changed the defs for class structures for new implementation of run-time.
* changed def of SEL back to its original type.
*
* Revision 0.2 1991/11/07 22:31:42 dennisg
* added copyleft.
*
* Revision 0.1 1991/10/24 00:19:24 dennisg
* Initial check in. Preliminary development stage.
*
*/
#ifndef _objc_INCLUDE_GNU #ifndef __objc_INCLUDE_GNU
#define _objc_INCLUDE_GNU #define __objc_INCLUDE_GNU
/* If someone is using a c++ /* If someone is using a c++ compiler then adjust the types in the
compiler then adjust the file back to C. */
types in the file back
to C. */
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
#include <sys/types.h> #include "record.h"
#include <record-inline.h> #include "gstdarg.h"
#include <stdarg.h>
#define nil (id)0 /* id of Nil instance */ #define nil (id)0 /* id of Nil instance */
...@@ -96,36 +46,26 @@ typedef char BOOL; ...@@ -96,36 +46,26 @@ typedef char BOOL;
#define YES (BOOL)1 #define YES (BOOL)1
#define NO (BOOL)0 #define NO (BOOL)0
/* Definition of a /* Definition of a selector. Selectors are really of type char*. The
selector. Selectors are run-time hashes the string's address to locate the method. If the
really of type char*. The method isn't in the hash table then a search is made through the
run-time hashes the class hierarchy using strcmp to locate the method. */
string's address to locate
the method. If the method
isn't in the hash table then
a search is made through the
class hierarchy using
strcmp() to locate the
method. */
#if 0 #if 0
typedef struct objc_selector* SEL; typedef struct objc_selector* SEL;
#else #else
typedef void* SEL; typedef void* SEL;
#endif #endif
/* ObjC uses this typedef /* ObjC uses this typedef for untyped instances. */
for untyped instances. */
typedef struct objc_object { typedef struct objc_object {
struct objc_class* isa; struct objc_class* class_pointer;
} *id; } *id;
/* Prototype for method /* Prototype for method functions. */
functions. */ typedef id (*IMP)(id, SEL, ...);
typedef id ( *IMP )( id, SEL, ... );
/* Filer types used to /* Filer types used to describe Ivars and Methods. */
describe Ivars and
Methods. */
#define _C_ID '@' #define _C_ID '@'
#define _C_CLASS '#' #define _C_CLASS '#'
#define _C_SEL ':' #define _C_SEL ':'
...@@ -151,10 +91,8 @@ typedef id ( *IMP )( id, SEL, ... ); ...@@ -151,10 +91,8 @@ typedef id ( *IMP )( id, SEL, ... );
#define _C_STRUCT_B '{' #define _C_STRUCT_B '{'
#define _C_STRUCT_E '}' #define _C_STRUCT_E '}'
/* /* These definitions are masks used with the "info" member variable in
* These definitions are masks used with the "info" member variable in the the lass and meta class structures. */
* class and meta class structures.
*/
#define CLS_CLASS 0x1L /* The structure is of type #define CLS_CLASS 0x1L /* The structure is of type
class (Class_t). */ class (Class_t). */
#define CLS_META 0x2L /* The structure is of type #define CLS_META 0x2L /* The structure is of type
...@@ -167,10 +105,9 @@ typedef id ( *IMP )( id, SEL, ... ); ...@@ -167,10 +105,9 @@ typedef id ( *IMP )( id, SEL, ... );
#define CLS_RTI 0x8L /* The class has been initialized #define CLS_RTI 0x8L /* The class has been initialized
within the run time library. */ within the run time library. */
/* Set this variable to !0 to /* Set this variable nonzero to print a line describing each
have the messager print message that is sent. */
messaging operations. */ extern BOOL objc_trace;
extern BOOL objc_trace;
/* /*
...@@ -182,11 +119,11 @@ typedef id ( *IMP )( id, SEL, ... ); ...@@ -182,11 +119,11 @@ typedef id ( *IMP )( id, SEL, ... );
* categories defined in the module. * categories defined in the module.
*/ */
typedef struct objc_symtab { typedef struct objc_symtab {
u_long sel_ref_cnt; /* Unknown. */ unsigned long sel_ref_cnt; /* Unknown. */
SEL *refs; /* Unknown. */ SEL *refs; /* Unknown. */
u_short cls_def_cnt; /* Number of classes compiled unsigned short cls_def_cnt; /* Number of classes compiled
(defined) in the module. */ (defined) in the module. */
u_short cat_def_cnt; /* Number of categories unsigned short cat_def_cnt; /* Number of categories
compiled (defined) in the compiled (defined) in the
module. */ module. */
void *defs[1]; /* Variable array of pointers. void *defs[1]; /* Variable array of pointers.
...@@ -206,8 +143,8 @@ typedef struct objc_symtab { ...@@ -206,8 +143,8 @@ typedef struct objc_symtab {
* That array holds a pointer to each module structure of the executable. * That array holds a pointer to each module structure of the executable.
*/ */
typedef struct objc_module { typedef struct objc_module {
u_long version; /* Compiler revision. */ unsigned long version; /* Compiler revision. */
u_long size; /* sizeof(Module). */ unsigned long size; /* sizeof(Module). */
const char* name; /* Name of the file where the const char* name; /* Name of the file where the
module was generated. The module was generated. The
name includes the path. */ name includes the path. */
...@@ -266,9 +203,9 @@ typedef struct objc_method_list { ...@@ -266,9 +203,9 @@ typedef struct objc_method_list {
SEL method_name; /* This variable is the method's SEL method_name; /* This variable is the method's
name. It is a char*. name. It is a char*.
The unique integer passed to The unique integer passed to
objc_msgSend() is a char* too. objc_msgSend is a char* too.
It is compared against It is compared against
method_name using strcmp(). */ method_name using strcmp. */
const char* method_types; /* Description of the method's const char* method_types; /* Description of the method's
parameter list. Useful for parameter list. Useful for
debuggers. */ debuggers. */
...@@ -289,11 +226,10 @@ typedef struct objc_method_list { ...@@ -289,11 +226,10 @@ typedef struct objc_method_list {
* This structure is generated by the compiler in the executable and used by * This structure is generated by the compiler in the executable and used by
* the run-time during normal messaging operations. Therefore some members * the run-time during normal messaging operations. Therefore some members
* change type. The compiler generates "char* const" and places a string in * change type. The compiler generates "char* const" and places a string in
* the following member variables: isa and super_class. * the following member variables: class_pointer and super_class.
*/ */
typedef struct objc_metaClass { typedef struct objc_metaClass {
struct objc_metaClass* isa; /* Pointer to Object meta struct objc_metaClass* class_pointer; /* Pointer to Object meta class. */
class. */
struct objc_metaClass* super_class; /* Pointer to meta class's struct objc_metaClass* super_class; /* Pointer to meta class's
super class. NULL for super class. NULL for
Object. */ Object. */
...@@ -307,8 +243,7 @@ typedef struct objc_metaClass { ...@@ -307,8 +243,7 @@ typedef struct objc_metaClass {
Object. Should be ignored. */ Object. Should be ignored. */
MethodList_t methods; /* Linked List of factory methods MethodList_t methods; /* Linked List of factory methods
for the class. */ for the class. */
Record_t* cache; /* Pointer to factory method struct record ** cache; /* Pointer to factory method dispatch table. */
dispatch table. */
} MetaClass, *MetaClass_t; } MetaClass, *MetaClass_t;
...@@ -323,7 +258,7 @@ typedef struct objc_metaClass { ...@@ -323,7 +258,7 @@ typedef struct objc_metaClass {
* the following member variables: super_class. * the following member variables: super_class.
*/ */
typedef struct objc_class { typedef struct objc_class {
MetaClass_t isa; /* Pointer to the class's MetaClass_t class_pointer; /* Pointer to the class's
meta class. */ meta class. */
struct objc_class* super_class; /* Pointer to the super struct objc_class* super_class; /* Pointer to the super
class. NULL for class class. NULL for class
...@@ -346,8 +281,7 @@ typedef struct objc_class { ...@@ -346,8 +281,7 @@ typedef struct objc_class {
MethodList_t methods; /* Linked list of instance MethodList_t methods; /* Linked list of instance
methods defined for the methods defined for the
class. */ class. */
Record_t* cache; /* Pointer to instance method struct record ** cache; /* Pointer to instance method dispatch table. */
dispatch table. */
} Class, *Class_t; } Class, *Class_t;
...@@ -375,7 +309,7 @@ typedef struct objc_category { ...@@ -375,7 +309,7 @@ typedef struct objc_category {
/* /*
* Structure used when a message is send to a class's super class. The * Structure used when a message is send to a class's super class. The
* compiler generates one of these structures and passes it to * compiler generates one of these structures and passes it to
* objc_msgSuper(). * objc_msgSuper.
*/ */
typedef struct objc_super { typedef struct objc_super {
id receiver; /* Id of the object sending id receiver; /* Id of the object sending
...@@ -384,33 +318,33 @@ typedef struct objc_super { ...@@ -384,33 +318,33 @@ typedef struct objc_super {
} Super, *Super_t; } Super, *Super_t;
/* /*
* _alloc points to the function, called through class_createInstance(), used * _alloc points to the function, called through class_createInstance, used
* to allocate memory for new instances. * to allocate memory for new instances.
*/ */
extern id (*_alloc)(Class_t aClass); extern id (*_alloc)(Class_t);
/* /*
* _dealloc points to the function, called through object_dispose(), used to * _dealloc points to the function, called through object_dispose, used to
* free instances. * free instances.
*/ */
extern id (*_dealloc)(id aObject); extern id (*_dealloc)(id);
/* /*
* _realloc points to the function, called through object_realloc(), used to * _realloc points to the function, called through object_realloc, used to
* reallocate memory for an object * reallocate memory for an object
*/ */
extern id (*_realloc)(id aObject, u_int newSize); extern id (*_realloc)(id, unsigned int);
/* /*
* _copy points to the function, called through object_copy(), used to create * _copy points to the function, called through object_copy, used to create
* an exact copy of an object. * an exact copy of an object.
*/ */
extern id (*_copy)(id aObject); extern id (*_copy)(id);
/* /*
* _error points to the function that the run-time system calls in response * _error points to the function that the run-time system calls in response
* to an error. By default, it prints formatted error messages to the * to an error. By default, it prints formatted error messages to the
* standard error stream and calls abort() to produce a core file. * standard error stream and calls abort to produce a core file.
*/ */
extern void (*_error)(id aObject, const char* fmt, va_list ap); extern void (*_error)(id object, const char *fmt, va_list ap);
#ifdef __cplusplus #ifdef __cplusplus
...@@ -418,4 +352,4 @@ extern void (*_error)(id aObject, const char* fmt, va_list ap); ...@@ -418,4 +352,4 @@ extern void (*_error)(id aObject, const char* fmt, va_list ap);
#endif #endif
#endif #endif /* not __objc_INCLUDE_GNU */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment