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