aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDennis Glatting <dennisg@gnu.org>1991-11-16 15:57:35 +0000
committerDennis Glatting <dennisg@gnu.org>1991-11-16 15:57:35 +0000
commit5b548897881659b5b232de098debd28cce749b1b (patch)
tree5ccce460987d28a07aa2909d17d7dd526207dc1a /gcc
parentdefc614f046a261be356c9fad32ec1cf3c8ce58e (diff)
downloadgcc-5b548897881659b5b232de098debd28cce749b1b.zip
gcc-5b548897881659b5b232de098debd28cce749b1b.tar.gz
gcc-5b548897881659b5b232de098debd28cce749b1b.tar.bz2
changed the defs for class structures for new implementation of run-time.
changed def of SEL back to its original type. From-SVN: r61
Diffstat (limited to 'gcc')
-rw-r--r--gcc/objc/objc.h87
1 files changed, 47 insertions, 40 deletions
diff --git a/gcc/objc/objc.h b/gcc/objc/objc.h
index 3303e1f..553f202 100644
--- a/gcc/objc/objc.h
+++ b/gcc/objc/objc.h
@@ -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.1 1991/10/24 00:19:24 dennisg Exp dennisg $
+ $Header: /usr/user/dennis_glatting/ObjC/c-runtime/include/RCS/ObjC.h,v 0.2 1991/11/07 22:31:42 dennisg Exp dennisg $
$Author: dennisg $
- $Date: 1991/10/24 00:19:24 $
+ $Date: 1991/11/07 22:31:42 $
$Log: ObjC.h,v $
+ * 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.
*
@@ -53,12 +56,18 @@ typedef char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
- /* Defination of a
+ /* Definition of a
selector. Selectors are
really of type char*. The
- run-time uses strcmp() to
- locate selectors. */
-typedef STR SEL;
+ run-time hashes the
+ 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. */
+typedef struct objc_selector* SEL;
/* ObjC uses this typedef
for untyped instances. */
@@ -68,11 +77,7 @@ typedef struct objc_object {
/* Prototype for method
functions. */
-typedef id ( *IMP )(
-#ifdef __STDC__
- id, SEL, ...
-#endif
-);
+typedef id ( *IMP )( id, SEL, ... );
/* Filer types used to
describe Ivars and
@@ -163,10 +168,8 @@ typedef struct objc_symtab {
* module structure of the executable.
*/
typedef struct objc_module {
- u_long version; /* Unknown. */
- u_long size; /* Suspect this is
- sizeof(Module). It is always
- 16. */
+ u_long version; /* Compiler revision. */
+ u_long size; /* sizeof(Module). */
char* name; /* Name of the file where the
module was generated. The
name includes the path. */
@@ -250,25 +253,27 @@ typedef struct objc_method_list {
*
* This structure is generated by the compiler in the
* executable and used by the run-time during normal
- * messaging operations. Therefore some definitions
- * don't make sense in some contexts.
+ * 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 {
- char* isa; /* Always a pointer to the
- string "Object". */
- char* super_class; /* Name of the class's super
- class. */
- char* name; /* Name of the meta class. */
- long version; /* Unknown. */
- long info; /* Bit mask. See class masks
+ struct objc_metaClass* isa; /* Pointer to Object meta
+ class. */
+ struct objc_metaClass* super_class; /* Pointer to meta class's
+ super meta class. */
+ char* name; /* Name of the meta class. */
+ long version; /* Unknown. */
+ long info; /* Bit mask. See class masks
defined above. */
- long instance_size; /* Always 0 except for Object.
+ long instance_size; /* Always 0 except for Object.
Should be ignored. */
- IvarList_t ivars; /* Always NULL except for
+ IvarList_t ivars; /* Always NULL except for
Object. Should be ignored. */
- MethodList_t methods; /* Linked List of factory methods
+ MethodList_t methods; /* Linked List of factory methods
for the class. */
- Cache_t cache; /* Used to cache factory methods
+ Cache_t cache; /* Used to cache factory methods
defined for the class and its
super classes. Entries are
made to the cache as the
@@ -284,33 +289,35 @@ typedef struct objc_metaClass {
*
* This structure is generated by the compiler in the
* executable and used by the run-time during normal
- * messaging operations. Therefore some definitions
- * don't make sense in some contexts.
+ * 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
+ MetaClass_t isa; /* Pointer to the class's
meta class. */
- char* super_class; /* Name of the class's super
- class. */
- char* name; /* Name of the class. */
- long version; /* Unknown. */
- long info; /* Bit mask. See class masks
+ struct objc_class* super_class; /* Pointer to the super
+ class. */
+ char* name; /* Name of the class. */
+ long version; /* Unknown. */
+ long info; /* Bit mask. See class masks
defined above. */
- long instance_size; /* Size in bytes of the class.
+ long instance_size; /* Size in bytes of the class.
The sum of the class definition
and all super class
definitions. */
- IvarList_t ivars; /* Pointer to a structure that
+ IvarList_t ivars; /* Pointer to a structure that
describes the instance
variables in the class
definition. NULL indicates
no instance variables. Does
not include super class
variables. */
- MethodList_t methods; /* Linked list of instance
+ MethodList_t methods; /* Linked list of instance
methods defined for the
class. */
- Cache_t cache; /* Used to cache instance methods
+ Cache_t cache; /* Used to cache instance methods
defined for the class and its
super classes. Entries are
made to the cache as the