Deleted index variable stuff. Index variables are a hack to the language.

Cleaned up some documentation.

From-SVN: r149
This commit is contained in:
Dennis Glatting 1991-12-31 20:16:08 +00:00
parent 77c9c6c203
commit 94b8bab1ea
1 changed files with 65 additions and 77 deletions

View File

@ -19,10 +19,13 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* *
$Header: /usr/user/dennis_glatting/ObjC/c-runtime/include/RCS/ObjC.h,v 0.8 1991/12/01 01:29:29 dennisg Exp dennisg $ $Header: /usr/user/dennis_glatting/ObjC/c-runtime/include/RCS/ObjC.h,v 0.9 1991/12/10 12:04:22 dennisg Exp dennisg $
$Author: dennisg $ $Author: dennisg $
$Date: 1991/12/01 01:29:29 $ $Date: 1991/12/10 12:04:22 $
$Log: ObjC.h,v $ $Log: ObjC.h,v $
* 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 * Revision 0.8 1991/12/01 01:29:29 dennisg
* modified to remove changes previously made to * modified to remove changes previously made to
* implement posing. posing just got easy. * implement posing. posing just got easy.
@ -134,10 +137,9 @@ 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 * These definitions are masks used with the "info" member variable in the
* the "info" member variable in the class and * class and meta class structures.
* 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). */
@ -156,13 +158,13 @@ typedef id ( *IMP )( id, SEL, ... );
extern BOOL objc_trace; extern BOOL objc_trace;
/* /*
* Whereas a Module (defined further down) is the * Whereas a Module (defined further down) is the root (typically) of a file,
* root (typically) of a file, a Symtab is the root of the * a Symtab is the root of the class and category definitions within the
* class and category definitions within the module. * module.
* *
* A Symtab contains a variable length array of pointers * A Symtab contains a variable length array of pointers to classes and
* to classes and categories defined in the module. * categories defined in the module.
*/ */
typedef struct objc_symtab { typedef struct objc_symtab {
u_long sel_ref_cnt; /* Unknown. */ u_long sel_ref_cnt; /* Unknown. */
@ -179,16 +181,14 @@ typedef struct objc_symtab {
} Symtab, *Symtab_t; } Symtab, *Symtab_t;
/* /*
* The compiler generates one of these structures for each * The compiler generates one of these structures for each module that
* module that composes the executable (eg main.m). * composes the executable (eg main.m).
* *
* This data structure is the root of the definition tree * This data structure is the root of the definition tree for the module.
* for the module.
* *
* A collect program runs between ld stages and creates * A collect program runs between ld stages and creates a ObjC ctor array.
* a ObjC ctor array. That array holds a pointer to each * That array holds a pointer to each module structure of the executable.
* module structure of the executable.
*/ */
typedef struct objc_module { typedef struct objc_module {
u_long version; /* Compiler revision. */ u_long version; /* Compiler revision. */
@ -204,10 +204,9 @@ typedef struct objc_module {
} Module, *Module_t; } Module, *Module_t;
/* /*
* The compiler generates one of these structures for a * The compiler generates one of these structures for a class that has
* class that has instance variables defined in its * instance variables defined in its specification.
* specification.
*/ */
typedef struct objc_ivar* Ivar_t; typedef struct objc_ivar* Ivar_t;
typedef struct objc_ivar_list { typedef struct objc_ivar_list {
@ -232,13 +231,13 @@ typedef struct objc_ivar_list {
} IvarList, *IvarList_t; } IvarList, *IvarList_t;
/* /*
* The compiler generates one (or more) of these structures * The compiler generates one (or more) of these structures for a class that
* for a class that has methods defined in its specification. * has methods defined in its specification.
* *
* The implementation of a class can be broken into separate * The implementation of a class can be broken into separate pieces in a file
* pieces in a file and categories can break them across modules. * and categories can break them across modules. To handle this problem is a
* To handle this problem is a singly linked list of methods. * singly linked list of methods.
*/ */
typedef struct objc_method Method; typedef struct objc_method Method;
typedef Method* Method_t; typedef Method* Method_t;
@ -266,20 +265,16 @@ typedef struct objc_method_list {
/* /*
* The compiler generates one of these structures for * The compiler generates one of these structures for each class.
* each class.
* *
* This structure is the definition for meta classes. * This structure is the definition for meta classes. By definition a meta
* By definition a meta class is the class's class. Its * class is the class's class. Its most relevant contribution is that its
* most relevant contribution is that its method list * method list contain the class's factory methods.
* contain the class's factory methods. *
* * This structure is generated by the compiler in the executable and used by
* This structure is generated by the compiler in the * the run-time during normal messaging operations. Therefore some members
* executable and used by the run-time during normal * change type. The compiler generates "char* const" and places a string in
* messaging operations. Therefore some members * the following member variables: isa and super_class.
* change type.
* The compiler generates "char* const" and places a string
* in the following member variables: isa and super_class.
*/ */
typedef struct objc_metaClass { typedef struct objc_metaClass {
struct objc_metaClass* isa; /* Pointer to Object meta struct objc_metaClass* isa; /* Pointer to Object meta
@ -306,17 +301,14 @@ typedef struct objc_metaClass {
/* /*
* The compiler generates one of these structures for * The compiler generates one of these structures for each class.
* each class.
* *
* This structure is the definition for classes. * This structure is the definition for classes.
* *
* This structure is generated by the compiler in the * This structure is generated by the compiler in the executable and used by
* executable and used by the run-time during normal * the run-time during normal messaging operations. Therefore some members
* messaging operations. Therefore some members * change type. The compiler generates "char* const" and places a string in
* change type. * the following member variables: super_class.
* The compiler generates "char* const" and places a string
* in the following member variables: super_class.
*/ */
typedef struct objc_class { typedef struct objc_class {
MetaClass_t isa; /* Pointer to the class's MetaClass_t isa; /* Pointer to the class's
@ -351,10 +343,8 @@ typedef struct objc_class {
/* /*
* The compiler generates one of these structures * The compiler generates one of these structures for each category. A class
* for each category. A class may have many * may have many categories and contain both instance and factory methods.
* categories and contain both instance and
* factory methods.
*/ */
typedef struct objc_category { typedef struct objc_category {
const char* category_name; /* Name of the category. Name const char* category_name; /* Name of the category. Name
@ -373,10 +363,10 @@ typedef struct objc_category {
} Category, *Category_t; } Category, *Category_t;
/* /*
* Structure used when a message is send to a class's * Structure used when a message is send to a class's super class. The
* super class. The compiler generates one of these * compiler generates one of these structures and passes it to
* 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
@ -385,33 +375,31 @@ typedef struct objc_super {
} Super, *Super_t; } Super, *Super_t;
/* /*
* _alloc points to the function, called through * _alloc points to the function, called through class_createInstance(), used
* class_createInstance(), used to allocate memory for * to allocate memory for new instances.
* new instances.
*/ */
extern id (*_alloc)(Class_t aClass, u_int indexedIvarBytes); extern id (*_alloc)(Class_t aClass);
/* /*
* _dealloc points to the function, called * _dealloc points to the function, called through object_dispose(), used to
* through object_dispose(), used to free instances. * free instances.
*/ */
extern id (*_dealloc)(id aObject); extern id (*_dealloc)(id aObject);
/* /*
* _realloc points to the function, called through * _realloc points to the function, called through object_realloc(), used to
* object_realloc(), used to reallocate memory for an object * reallocate memory for an object
*/ */
extern id (*_realloc)(id aObject, u_int numBytes); extern id (*_realloc)(id aObject, u_int newSize);
/* /*
* _copy points to the function, called through * _copy points to the function, called through object_copy(), used to create
* object_copy(), used to create an exact copy of an object. * an exact copy of an object.
*/ */
extern id (*_copy)(id aObject, u_int indexedIvarBytes); extern id (*_copy)(id aObject);
/* /*
* _error points to the function that the run-time * _error points to the function that the run-time system calls in response
* system calls in response to an error. By default, * to an error. By default, it prints formatted error messages to the
* it prints formatted error messages to the standard * standard error stream and calls abort() to produce a core file.
* 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 aObject, const char* fmt, va_list ap);