diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-05 01:11:54 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-05 01:11:54 +0000 |
commit | ffcbbbab99149ea7d8e800326458b70b54438076 (patch) | |
tree | e2a997b294961a00f5d259edefbef93b8501c089 /libchill/iomodes.h | |
parent | ff8e09bdcb33f98c7094eec337fb5e93da360a0d (diff) | |
download | gcc-ffcbbbab99149ea7d8e800326458b70b54438076.tar.gz |
* Chill runtime moved into toplevel libchill.
* Makefile.in Revamped due to move. Add multilib support.
* configure.in: Similarly. Use autoconf.
* powerset.h: Do not depend on BITS_PER_UNIT.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22238 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libchill/iomodes.h')
-rw-r--r-- | libchill/iomodes.h | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/libchill/iomodes.h b/libchill/iomodes.h new file mode 100644 index 00000000000..8e254e25b00 --- /dev/null +++ b/libchill/iomodes.h @@ -0,0 +1,251 @@ +/* Implement Input/Output runtime actions for CHILL. + Copyright (C) 1992,1993 Free Software Foundation, Inc. + Author: Wilfried Moser, et al + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + +#ifndef _iomodes_h_ +#define _iomodes_h_ + +#include "auxtypes.h" + +typedef enum { ReadOnly, WriteOnly, ReadWrite +} Usage_Mode; + +typedef enum { First, Same, Last +} Where_Mode; + +typedef enum { None, Fixed, VaryingChars +} Record_t; + +/* association flags */ +#define IO_ISASSOCIATED 0x00000001 +#define IO_EXISTING 0x00000002 +#define IO_READABLE 0x00000004 +#define IO_WRITEABLE 0x00000008 +#define IO_INDEXABLE 0x00000010 +#define IO_SEQUENCIBLE 0x00000020 +#define IO_VARIABLE 0x00000040 +#define IO_FIRSTLINE 0x00000100 +#define IO_FORCE_PAGE 0x00000200 + +struct Access_Mode; + +#define READBUFLEN 512 +typedef struct +{ + unsigned long len; + unsigned long cur; + char buf[READBUFLEN]; +} readbuf_t; + +typedef struct Association_Mode { + unsigned long flags; /* INIT = 0 */ + char* pathname; + struct Access_Mode* access; + int handle; + readbuf_t* bufptr; + long syserrno; + char usage; + char ctl_pre; + char ctl_post; +} Association_Mode; + +/* + rectype indexed max. reclength act. reclength + --------------------------------------------------- + None T/F 0 + Fixed T/F SIZE(recmode) = SIZE(recmode) + Varying F SIZE(recmode) >= length +*/ + +/* access/text flags */ +#define IO_TEXTLOCATION 0x80000000 +#define IO_INDEXED 0x00000001 +#define IO_TEXTIO 0x00000002 +#define IO_OUTOFFILE 0x00010000 + +typedef struct Access_Mode { + unsigned long flags; /* INIT */ + unsigned long reclength; /* INIT */ + signed long lowindex; /* INIT */ + signed long highindex; /* INIT */ + Association_Mode* association; + unsigned long base; + char* store_loc; + Record_t rectype; /* INIT */ +} Access_Mode; + +typedef struct Text_Mode { + unsigned long flags; /* INIT */ + VarString* text_record; /* INIT */ + Access_Mode* access_sub; /* INIT */ + unsigned long actual_index; +} Text_Mode; + +typedef enum +{ + __IO_UNUSED, + + __IO_ByteVal, + __IO_UByteVal, + __IO_IntVal, + __IO_UIntVal, + __IO_LongVal, + __IO_ULongVal, + + __IO_ByteLoc, + __IO_UByteLoc, + __IO_IntLoc, + __IO_UIntLoc, + __IO_LongLoc, + __IO_ULongLoc, + + __IO_ByteRangeLoc, + __IO_UByteRangeLoc, + __IO_IntRangeLoc, + __IO_UIntRangeLoc, + __IO_LongRangeLoc, + __IO_ULongRangeLoc, + + __IO_BoolVal, + __IO_BoolLoc, + __IO_BoolRangeLoc, + + __IO_SetVal, + __IO_SetLoc, + __IO_SetRangeLoc, + + __IO_CharVal, + __IO_CharLoc, + __IO_CharRangeLoc, + + __IO_CharStrLoc, + + __IO_CharVaryingLoc, + + __IO_BitStrLoc, + + __IO_RealVal, + __IO_RealLoc, + __IO_LongRealVal, + __IO_LongRealLoc +} __tmp_IO_enum; + +typedef struct +{ + long value; + char* name; +} __tmp_IO_enum_table_type; + +typedef struct +{ + long value; + __tmp_IO_enum_table_type* name_table; +} __tmp_WIO_set; + +typedef struct +{ + char* ptr; + long lower; + long upper; +} __tmp_IO_charrange; + +typedef union +{ + signed long slong; + unsigned long ulong; +} __tmp_IO_long; + +typedef struct +{ + void* ptr; + __tmp_IO_long lower; + __tmp_IO_long upper; +} __tmp_IO_intrange; + +typedef struct +{ + void* ptr; + unsigned long lower; + unsigned long upper; +} __tmp_RIO_boolrange; + +typedef struct +{ + void* ptr; + long length; + __tmp_IO_enum_table_type* name_table; +} __tmp_RIO_set; + +typedef struct +{ + void* ptr; + long length; + __tmp_IO_enum_table_type* name_table; + unsigned long lower; + unsigned long upper; +} __tmp_RIO_setrange; + +typedef struct +{ + char* string; + long string_length; +} __tmp_IO_charstring; + +typedef union +{ + char __valbyte; + unsigned char __valubyte; + short __valint; + unsigned short __valuint; + long __vallong; + unsigned long __valulong; + void* __locint; + __tmp_IO_intrange __locintrange; + + unsigned char __valbool; + unsigned char* __locbool; + __tmp_RIO_boolrange __locboolrange; + + __tmp_WIO_set __valset; + __tmp_RIO_set __locset; + __tmp_RIO_setrange __locsetrange; + + unsigned char __valchar; + unsigned char* __locchar; + __tmp_IO_charrange __loccharrange; + + __tmp_IO_charstring __loccharstring; + + float __valreal; + float* __locreal; + double __vallongreal; + double* __loclongreal; +} __tmp_IO_union; + +/* + * CAUTION: The longest variant of __tmp_IO_union is 5 words long. + * Together with __descr this caters for double alignment where required. + */ +typedef struct +{ + __tmp_IO_union __t; + __tmp_IO_enum __descr; +} __tmp_IO_list; + +#endif |