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