diff options
| author | Kresten Krab Thorup <krab@gcc.gnu.org> | 1993-04-13 02:12:40 +0000 |
|---|---|---|
| committer | Kresten Krab Thorup <krab@gcc.gnu.org> | 1993-04-13 02:12:40 +0000 |
| commit | 36be30f1bc093381c0a51d718c2b1ca1a668a9b2 (patch) | |
| tree | ed0bbb42f0c4a93cdd59a3aa9e8a0175eb33ff69 /gcc/objc/objc-api.h | |
| parent | ba2e27865bfb811e66901776b953d2687a9359c5 (diff) | |
| download | gcc-36be30f1bc093381c0a51d718c2b1ca1a668a9b2.zip gcc-36be30f1bc093381c0a51d718c2b1ca1a668a9b2.tar.gz gcc-36be30f1bc093381c0a51d718c2b1ca1a668a9b2.tar.bz2 | |
includes changed to double quote style
From-SVN: r4113
Diffstat (limited to 'gcc/objc/objc-api.h')
| -rw-r--r-- | gcc/objc/objc-api.h | 99 |
1 files changed, 97 insertions, 2 deletions
diff --git a/gcc/objc/objc-api.h b/gcc/objc/objc-api.h index e8b6c8a..f5162cd 100644 --- a/gcc/objc/objc-api.h +++ b/gcc/objc/objc-api.h @@ -26,8 +26,9 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef __objc_api_INCLUDE_GNU #define __objc_api_INCLUDE_GNU -#include <stdlib.h> -#include <objc/objc.h> +#include "objc/objc.h" +#include "objc/hash.h" + static const ARGSIZE = 96; /* for `method_get_argsize()' */ @@ -234,5 +235,99 @@ object_is_meta_class(id object) return CLS_ISMETA((Class_t)object); } +/* Archiving stuff */ + +typedef int (*objc_typed_read_func)(void*, char*, int); +typedef int (*objc_typed_write_func)(void*, const char*, int); +typedef int (*objc_typed_flush_func)(void*); +typedef int (*objc_typed_eof_func)(void*); + +#define OBJC_READONLY 0x01 +#define OBJC_WRITEONLY 0x02 + +#define OBJC_MANAGED_STREAM 0x01 +#define OBJC_FILE_STREAM 0x02 +#define OBJC_MEMORY_STREAM 0x04 + +#define OBJC_TYPED_STREAM_VERSION 0x01 + +struct objc_typed_stream { + void* physical; + cache_ptr object_table; /* read/written objects */ + cache_ptr stream_table; /* other read/written but shared things.. */ + cache_ptr class_table; /* class version mapping */ + cache_ptr object_refs; /* forward references */ + int mode; /* OBJC_READONLY or OBJC_WRITEONLY */ + int type; /* MANAGED, FILE, MEMORY etc bit string */ + int version; /* version used when writing */ + int writing_root_p; + objc_typed_read_func read; + objc_typed_write_func write; + objc_typed_eof_func eof; + objc_typed_flush_func flush; +}; + +/* opcode masks */ +#define _B_VALUE 0x1fU +#define _B_CODE 0xe0U +#define _B_SIGN 0x10U +#define _B_NUMBER 0x0fU + +/* standard opcodes */ +#define _B_INVALID 0x00U +#define _B_SINT 0x20U +#define _B_NINT 0x40U +#define _B_SSTR 0x60U +#define _B_NSTR 0x80U +#define _B_RCOMM 0xa0U +#define _B_UCOMM 0xc0U +#define _B_EXT 0xe0U + +/* eXtension opcodes */ +#define _BX_OBJECT 0x00U +#define _BX_CLASS 0x01U +#define _BX_SEL 0x02U +#define _BX_OBJREF 0x03U +#define _BX_OBJROOT 0x04U +#define _BX_EXT 0x1fU + +/* +** Read and write objects as specified by TYPE. All the `last' +** arguments are pointers to the objects to read/write. +*/ + +int objc_write_type (TypedStream* stream, const char* type, const void* data); +int objc_read_type (TypedStream* stream, const char* type, void* data); + +int objc_write_types (TypedStream* stream, const char* type, ...); +int objc_read_types (TypedStream* stream, const char* type, ...); + +int objc_write_object_reference (TypedStream* stream, id object); +int objc_write_root_object (TypedStream* stream, id object); + +/* +** Convenience funtions +*/ + +int objc_write_array (TypedStream* stream, const char* type, + int count, const void* data); +int objc_read_array (TypedStream* stream, const char* type, + int count, void* data); + +int objc_write_object (TypedStream* stream, id object); + +/* +** Open a typed stream for reading or writing. MODE may be either of +** OBJC_READONLY or OBJC_WRITEONLY. +*/ + +TypedStream* objc_open_typed_stream (FILE* physical, int mode); +TypedStream* objc_open_typed_stream_for_file (const char* file_name, int mode); + +void objc_close_typed_stream (TypedStream* stream); + +BOOL objc_end_of_typed_stream (TypedStream* stream); +void objc_flush_typed_stream (TypedStream* stream); + #endif /* not __objc_api_INCLUDE_GNU */ |
