Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
584322a4
Commit
584322a4
authored
Oct 14, 1992
by
Richard Stallman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed due to issues
From-SVN: r2454
parent
da8dce4a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
47 additions
and
113 deletions
+47
-113
gcc/objc/objc.h
+47
-113
No files found.
gcc/objc/objc.h
View file @
584322a4
/* -*-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. */
u
nsigned
long
sel_ref_cnt
;
/* Unknown. */
SEL
*
refs
;
/* Unknown. */
SEL
*
refs
;
/* Unknown. */
u
_short
cls_def_cnt
;
/* Number of classes compiled
u
nsigned
short
cls_def_cnt
;
/* Number of classes compiled
(defined) in the module. */
(defined) in the module. */
u
_short
cat_def_cnt
;
/* Number of categories
u
nsigned
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. */
u
nsigned
long
version
;
/* Compiler revision. */
u
_long
size
;
/* sizeof(Module). */
u
nsigned
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 */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment