1 /* voc 2.1.0 [2019/11/01]. Bootstrapping compiler for address size 8, alignment 8. xrtspaSF */ 2 3 #ifndef OPT__h 4 #define OPT__h 5 6 #include "SYSTEM.h" 7 #include "OPS.h" 8 9 typedef 10 struct OPT_ConstDesc *OPT_Const; 11 12 typedef 13 OPS_String *OPT_ConstExt; 14 15 typedef 16 struct OPT_ConstDesc { 17 OPT_ConstExt ext; 18 INT64 intval; 19 INT32 intval2; 20 UINT64 setval; 21 LONGREAL realval; 22 } OPT_ConstDesc; 23 24 typedef 25 struct OPT_LinkDesc *OPT_Link; 26 27 typedef 28 struct OPT_LinkDesc { 29 OPS_Name name; 30 OPT_Link next; 31 } OPT_LinkDesc; 32 33 typedef 34 struct OPT_NodeDesc *OPT_Node; 35 36 typedef 37 struct OPT_StrDesc *OPT_Struct; 38 39 typedef 40 struct OPT_ObjDesc *OPT_Object; 41 42 typedef 43 struct OPT_NodeDesc { 44 OPT_Node left, right, link; 45 INT8 class, subcl; 46 BOOLEAN readonly; 47 OPT_Struct typ; 48 OPT_Object obj; 49 OPT_Const conval; 50 } OPT_NodeDesc; 51 52 typedef 53 struct OPT_ObjDesc { 54 OPT_Object left, right, link, scope; 55 OPS_Name name; 56 BOOLEAN leaf; 57 INT8 mode, mnolev, vis, history; 58 BOOLEAN used, fpdone; 59 INT32 fprint; 60 OPT_Struct typ; 61 OPT_Const conval; 62 INT32 adr, linkadr; 63 INT16 x; 64 } OPT_ObjDesc; 65 66 typedef 67 struct OPT_StrDesc { 68 INT8 form, comp, mno, extlev; 69 INT16 ref, sysflag; 70 INT32 n, size, align, txtpos; 71 BOOLEAN allocated, pbused, pvused; 72 char _prvt0[4]; 73 INT32 idfp; 74 char _prvt1[8]; 75 OPT_Struct BaseTyp; 76 OPT_Object link, strobj; 77 } OPT_StrDesc; 78 79 80 import OPT_Object OPT_topScope; 81 import OPT_Struct OPT_undftyp, OPT_niltyp, OPT_notyp, OPT_bytetyp, OPT_cpbytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_hinttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_settyp, OPT_set32typ, OPT_set64typ, OPT_realtyp, OPT_lrltyp, OPT_stringtyp, OPT_adrtyp, OPT_sysptrtyp; 82 import OPT_Object OPT_sintobj, OPT_intobj, OPT_lintobj, OPT_setobj; 83 import INT8 OPT_nofGmod; 84 import OPT_Object OPT_GlbMod[64]; 85 import OPS_Name OPT_SelfName; 86 import BOOLEAN OPT_SYSimported; 87 import OPT_Link OPT_Links; 88 89 import ADDRESS *OPT_ConstDesc__typ; 90 import ADDRESS *OPT_ObjDesc__typ; 91 import ADDRESS *OPT_StrDesc__typ; 92 import ADDRESS *OPT_NodeDesc__typ; 93 import ADDRESS *OPT_LinkDesc__typ; 94 95 import void OPT_Align (INT32 *adr, INT32 base); 96 import INT32 OPT_BaseAlignment (OPT_Struct typ); 97 import void OPT_Close (void); 98 import void OPT_CloseScope (void); 99 import void OPT_Export (BOOLEAN *ext, BOOLEAN *new); 100 import void OPT_FPrintErr (OPT_Object obj, INT16 errcode); 101 import void OPT_FPrintObj (OPT_Object obj); 102 import void OPT_FPrintStr (OPT_Struct typ); 103 import void OPT_Find (OPT_Object *res); 104 import void OPT_FindField (OPS_Name name, OPT_Struct typ, OPT_Object *res); 105 import void OPT_FindImport (OPT_Object mod, OPT_Object *res); 106 import void OPT_IdFPrint (OPT_Struct typ); 107 import void OPT_Import (OPS_Name aliasName, OPS_Name name, BOOLEAN *done); 108 import void OPT_Init (OPS_Name name, UINT32 opt); 109 import void OPT_InitRecno (void); 110 import void OPT_Insert (OPS_Name name, OPT_Object *obj); 111 import void OPT_InsertImport (OPT_Object obj, OPT_Object *root, OPT_Object *old); 112 import INT16 OPT_IntSize (INT64 n); 113 import OPT_Struct OPT_IntType (INT32 size); 114 import OPT_Const OPT_NewConst (void); 115 import OPT_ConstExt OPT_NewExt (void); 116 import OPT_Node OPT_NewNode (INT8 class); 117 import OPT_Object OPT_NewObj (void); 118 import OPT_Struct OPT_NewStr (INT8 form, INT8 comp); 119 import void OPT_OpenScope (INT8 level, OPT_Object owner); 120 import OPT_Struct OPT_SetType (INT32 size); 121 import OPT_Struct OPT_ShorterOrLongerType (OPT_Struct x, INT16 dir); 122 import INT32 OPT_SizeAlignment (INT32 size); 123 import void OPT_TypSize (OPT_Struct typ); 124 import void *OPT__init(void); 125 126 127 #endif // OPT 128