summaryrefslogtreecommitdiff
path: root/libchill/iomodes.h
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-05 01:11:54 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-09-05 01:11:54 +0000
commitffcbbbab99149ea7d8e800326458b70b54438076 (patch)
treee2a997b294961a00f5d259edefbef93b8501c089 /libchill/iomodes.h
parentff8e09bdcb33f98c7094eec337fb5e93da360a0d (diff)
downloadgcc-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.h251
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