* 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.
#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). */
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. */
} 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. */
} 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 {
} 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;
/*
- * 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 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 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
/*
- * 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
/*
- * 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
} 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
} 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);