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-*- */
/* Copyright (C) 1989, 1992 Free Software Foundation, Inc.
/* Basic data types for Objective C.
Copyright (C) 1992 Free Software Foundation, Inc.
This file is part of GNU CC.
...
...
@@ -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.
This exception does not however invalidate any other reasons why
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
#define _objc_INCLUDE_GNU
#ifndef _
_
objc_INCLUDE_GNU
#define _
_
objc_INCLUDE_GNU
/* If someone is using a c++
compiler then adjust the
types in the file back
to C. */
/* If someone is using a c++ compiler then adjust the types in the
file back to C. */
#ifdef __cplusplus
extern
"C"
{
#endif
#include <sys/types.h>
#include <record-inline.h>
#include <stdarg.h>
#include "record.h"
#include "gstdarg.h"
#define nil (id)0
/* id of Nil instance */
...
...
@@ -96,36 +46,26 @@ typedef char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
/* Definition of a
selector. Selectors are
really of type char*. The
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. */
/* Definition of a selector. Selectors are really of type char*. The
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. */
#if 0
typedef struct objc_selector* SEL;
#else
typedef
void
*
SEL
;
#endif
/* ObjC uses this typedef
for untyped instances. */
/* ObjC uses this typedef for untyped instances. */
typedef
struct
objc_object
{
struct
objc_class
*
isa
;
struct
objc_class
*
class_pointer
;
}
*
id
;
/* Prototype for method
functions. */
typedef
id
(
*
IMP
)(
id
,
SEL
,
...
);
/* Prototype for method functions. */
typedef
id
(
*
IMP
)(
id
,
SEL
,
...);
/* Filer types used to
describe Ivars and
Methods. */
/* Filer types used to describe Ivars and Methods. */
#define _C_ID '@'
#define _C_CLASS '#'
#define _C_SEL ':'
...
...
@@ -151,10 +91,8 @@ 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 lass and meta class structures. */
#define CLS_CLASS 0x1L
/* The structure is of type
class (Class_t). */
#define CLS_META 0x2L
/* The structure is of type
...
...
@@ -167,10 +105,9 @@ typedef id ( *IMP )( id, SEL, ... );
#define CLS_RTI 0x8L
/* The class has been initialized
within the run time library. */
/* Set this variable to !0 to
have the messager print
messaging operations. */
extern
BOOL
objc_trace
;
/* Set this variable nonzero to print a line describing each
message that is sent. */
extern
BOOL
objc_trace
;
/*
...
...
@@ -182,11 +119,11 @@ typedef id ( *IMP )( id, SEL, ... );
* categories defined in the module.
*/
typedef
struct
objc_symtab
{
u
_long
sel_ref_cnt
;
/* Unknown. */
u
nsigned
long
sel_ref_cnt
;
/* 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. */
u
_short
cat_def_cnt
;
/* Number of categories
u
nsigned
short
cat_def_cnt
;
/* Number of categories
compiled (defined) in the
module. */
void
*
defs
[
1
];
/* Variable array of pointers.
...
...
@@ -206,8 +143,8 @@ typedef struct objc_symtab {
* That array holds a pointer to each module structure of the executable.
*/
typedef
struct
objc_module
{
u
_long
version
;
/* Compiler revision. */
u
_long
size
;
/* sizeof(Module). */
u
nsigned
long
version
;
/* Compiler revision. */
u
nsigned
long
size
;
/* sizeof(Module). */
const
char
*
name
;
/* Name of the file where the
module was generated. The
name includes the path. */
...
...
@@ -266,9 +203,9 @@ typedef struct objc_method_list {
SEL
method_name
;
/* This variable is the method's
name. It is a char*.
The unique integer passed to
objc_msgSend
()
is a char* too.
objc_msgSend is a char* too.
It is compared against
method_name using strcmp
()
. */
method_name using strcmp. */
const
char
*
method_types
;
/* Description of the method's
parameter list. Useful for
debuggers. */
...
...
@@ -289,11 +226,10 @@ 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 members
* 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
{
struct
objc_metaClass
*
isa
;
/* Pointer to Object meta
class. */
struct
objc_metaClass
*
class_pointer
;
/* Pointer to Object meta class. */
struct
objc_metaClass
*
super_class
;
/* Pointer to meta class's
super class. NULL for
Object. */
...
...
@@ -307,8 +243,7 @@ typedef struct objc_metaClass {
Object. Should be ignored. */
MethodList_t
methods
;
/* Linked List of factory methods
for the class. */
Record_t
*
cache
;
/* Pointer to factory method
dispatch table. */
struct
record
**
cache
;
/* Pointer to factory method dispatch table. */
}
MetaClass
,
*
MetaClass_t
;
...
...
@@ -323,7 +258,7 @@ typedef struct objc_metaClass {
* the following member variables: super_class.
*/
typedef
struct
objc_class
{
MetaClass_t
isa
;
/* Pointer to the class's
MetaClass_t
class_pointer
;
/* Pointer to the class's
meta class. */
struct
objc_class
*
super_class
;
/* Pointer to the super
class. NULL for class
...
...
@@ -346,8 +281,7 @@ typedef struct objc_class {
MethodList_t
methods
;
/* Linked list of instance
methods defined for the
class. */
Record_t
*
cache
;
/* Pointer to instance method
dispatch table. */
struct
record
**
cache
;
/* Pointer to instance method dispatch table. */
}
Class
,
*
Class_t
;
...
...
@@ -375,7 +309,7 @@ typedef struct objc_category {
/*
* 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
()
.
* objc_msgSuper.
*/
typedef
struct
objc_super
{
id
receiver
;
/* Id of the object sending
...
...
@@ -384,33 +318,33 @@ typedef struct objc_super {
}
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.
*/
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.
*/
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
*/
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.
*/
extern
id
(
*
_copy
)(
id
aObject
);
extern
id
(
*
_copy
)(
id
);
/*
* _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.
* 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
...
...
@@ -418,4 +352,4 @@ extern void (*_error)(id aObject, const char* fmt, va_list ap);
#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