]> gcc.gnu.org Git - gcc.git/blame - gcc/f/stp.h
Initial revision
[gcc.git] / gcc / f / stp.h
CommitLineData
5ff904cd
JL
1/* stp.h -- Private #include File (module.h template V1.0)
2 Copyright (C) 1995 Free Software Foundation, Inc.
3 Contributed by James Craig Burley (burley@gnu.ai.mit.edu).
4
5This file is part of GNU Fortran.
6
7GNU Fortran is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12GNU Fortran is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU Fortran; see the file COPYING. If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
2002111-1307, USA.
21
22 Owning Modules:
23 stp.c
24
25 Modifications:
26*/
27
28/* Allow multiple inclusion to work. */
29
30#ifndef _H_f_stp
31#define _H_f_stp
32
33/* Simple definitions and enumerations. */
34
35enum _ffestp_acceptix_
36 {
37 FFESTP_acceptixFORMAT,
38 FFESTP_acceptix
39 };
40typedef enum _ffestp_acceptix_ ffestpAcceptIx;
41
42enum _ffestp_attrib_
43 {
44#if FFESTR_F90
45 FFESTP_attribALLOCATABLE,
46#endif
47 FFESTP_attribDIMENSION,
48 FFESTP_attribEXTERNAL,
49#if FFESTR_F90
50 FFESTP_attribINTENT,
51#endif
52 FFESTP_attribINTRINSIC,
53#if FFESTR_F90
54 FFESTP_attribOPTIONAL,
55#endif
56 FFESTP_attribPARAMETER,
57#if FFESTR_F90
58 FFESTP_attribPOINTER,
59#endif
60#if FFESTR_F90
61 FFESTP_attribPRIVATE,
62 FFESTP_attribPUBLIC,
63#endif
64 FFESTP_attribSAVE,
65#if FFESTR_F90
66 FFESTP_attribTARGET,
67#endif
68 FFESTP_attrib
69 };
70typedef enum _ffestp_attrib_ ffestpAttrib;
71
72enum _ffestp_beruix_
73 {
74 FFESTP_beruixERR,
75 FFESTP_beruixIOSTAT,
76 FFESTP_beruixUNIT,
77 FFESTP_beruix
78 };
79typedef enum _ffestp_beruix_ ffestpBeruIx;
80
81enum _ffestp_closeix_
82 {
83 FFESTP_closeixERR,
84 FFESTP_closeixIOSTAT,
85 FFESTP_closeixSTATUS,
86 FFESTP_closeixUNIT,
87 FFESTP_closeix
88 };
89typedef enum _ffestp_closeix_ ffestpCloseIx;
90
91enum _ffestp_deleteix_
92 {
93 FFESTP_deleteixERR,
94 FFESTP_deleteixIOSTAT,
95 FFESTP_deleteixREC,
96 FFESTP_deleteixUNIT,
97 FFESTP_deleteix
98 };
99typedef enum _ffestp_deleteix_ ffestpDeleteIx;
100
101enum _ffestp_findix_
102 {
103 FFESTP_findixERR,
104 FFESTP_findixIOSTAT,
105 FFESTP_findixREC,
106 FFESTP_findixUNIT,
107 FFESTP_findix
108 };
109typedef enum _ffestp_findix_ ffestpFindIx;
110
111enum _ffestp_inquireix_
112 {
113 FFESTP_inquireixACCESS,
114 FFESTP_inquireixACTION,
115 FFESTP_inquireixBLANK,
116 FFESTP_inquireixCARRIAGECONTROL,
117 FFESTP_inquireixDEFAULTFILE,
118 FFESTP_inquireixDELIM,
119 FFESTP_inquireixDIRECT,
120 FFESTP_inquireixERR,
121 FFESTP_inquireixEXIST,
122 FFESTP_inquireixFILE,
123 FFESTP_inquireixFORM,
124 FFESTP_inquireixFORMATTED,
125 FFESTP_inquireixIOLENGTH,
126 FFESTP_inquireixIOSTAT,
127 FFESTP_inquireixKEYED,
128 FFESTP_inquireixNAME,
129 FFESTP_inquireixNAMED,
130 FFESTP_inquireixNEXTREC,
131 FFESTP_inquireixNUMBER,
132 FFESTP_inquireixOPENED,
133 FFESTP_inquireixORGANIZATION,
134 FFESTP_inquireixPAD,
135 FFESTP_inquireixPOSITION,
136 FFESTP_inquireixREAD,
137 FFESTP_inquireixREADWRITE,
138 FFESTP_inquireixRECL,
139 FFESTP_inquireixRECORDTYPE,
140 FFESTP_inquireixSEQUENTIAL,
141 FFESTP_inquireixUNFORMATTED,
142 FFESTP_inquireixUNIT,
143 FFESTP_inquireixWRITE,
144 FFESTP_inquireix
145 };
146typedef enum _ffestp_inquireix_ ffestpInquireIx;
147
148enum _ffestp_openix_
149 {
150 FFESTP_openixACCESS,
151 FFESTP_openixACTION,
152 FFESTP_openixASSOCIATEVARIABLE,
153 FFESTP_openixBLANK,
154 FFESTP_openixBLOCKSIZE,
155 FFESTP_openixBUFFERCOUNT,
156 FFESTP_openixCARRIAGECONTROL,
157 FFESTP_openixDEFAULTFILE,
158 FFESTP_openixDELIM,
159 FFESTP_openixDISPOSE,
160 FFESTP_openixERR,
161 FFESTP_openixEXTENDSIZE,
162 FFESTP_openixFILE,
163 FFESTP_openixFORM,
164 FFESTP_openixINITIALSIZE,
165 FFESTP_openixIOSTAT,
166 FFESTP_openixKEY,
167 FFESTP_openixMAXREC,
168 FFESTP_openixNOSPANBLOCKS,
169 FFESTP_openixORGANIZATION,
170 FFESTP_openixPAD,
171 FFESTP_openixPOSITION,
172 FFESTP_openixREADONLY,
173 FFESTP_openixRECL,
174 FFESTP_openixRECORDTYPE,
175 FFESTP_openixSHARED,
176 FFESTP_openixSTATUS,
177 FFESTP_openixUNIT,
178 FFESTP_openixUSEROPEN,
179 FFESTP_openix
180 };
181typedef enum _ffestp_openix_ ffestpOpenIx;
182
183enum _ffestp_printix_
184 {
185 FFESTP_printixFORMAT,
186 FFESTP_printix
187 };
188typedef enum _ffestp_printix_ ffestpPrintIx;
189
190enum _ffestp_readix_
191 {
192 FFESTP_readixADVANCE,
193 FFESTP_readixEND,
194 FFESTP_readixEOR,
195 FFESTP_readixERR,
196 FFESTP_readixFORMAT, /* Or NAMELIST (use expr info to
197 distinguish). */
198 FFESTP_readixIOSTAT,
199 FFESTP_readixKEYEQ,
200 FFESTP_readixKEYGE,
201 FFESTP_readixKEYGT,
202 FFESTP_readixKEYID,
203 FFESTP_readixNULLS,
204 FFESTP_readixREC,
205 FFESTP_readixSIZE,
206 FFESTP_readixUNIT,
207 FFESTP_readix
208 };
209typedef enum _ffestp_readix_ ffestpReadIx;
210
211enum _ffestp_rewriteix_
212 {
213 FFESTP_rewriteixERR,
214 FFESTP_rewriteixFMT,
215 FFESTP_rewriteixIOSTAT,
216 FFESTP_rewriteixUNIT,
217 FFESTP_rewriteix
218 };
219typedef enum _ffestp_rewriteix_ ffestpRewriteIx;
220
221enum _ffestp_typeix_
222 {
223 FFESTP_typeixFORMAT,
224 FFESTP_typeix
225 };
226typedef enum _ffestp_typeix_ ffestpTypeIx;
227
228enum _ffestp_vxtcodeix_
229 {
230 FFESTP_vxtcodeixB,
231 FFESTP_vxtcodeixC,
232 FFESTP_vxtcodeixERR,
233 FFESTP_vxtcodeixF,
234 FFESTP_vxtcodeixIOSTAT,
235 FFESTP_vxtcodeix
236 };
237typedef enum _ffestp_vxtcodeix_ ffestpVxtcodeIx;
238
239enum _ffestp_writeix_
240 {
241 FFESTP_writeixADVANCE,
242 FFESTP_writeixEOR,
243 FFESTP_writeixERR,
244 FFESTP_writeixFORMAT, /* Or NAMELIST (use expr info to
245 distinguish). */
246 FFESTP_writeixIOSTAT,
247 FFESTP_writeixREC,
248 FFESTP_writeixUNIT,
249 FFESTP_writeix
250 };
251typedef enum _ffestp_writeix_ ffestpWriteIx;
252
253#if FFESTR_F90
254enum _ffestp_definedoperator_
255 {
256 FFESTP_definedoperatorNone, /* INTERFACE generic-name. */
257 FFESTP_definedoperatorOPERATOR, /* INTERFACE
258 OPERATOR(defined-operator). */
259 FFESTP_definedoperatorASSIGNMENT, /* INTERFACE ASSIGNMENT(=). */
260 FFESTP_definedoperatorPOWER,
261 FFESTP_definedoperatorMULT,
262 FFESTP_definedoperatorADD,
263 FFESTP_definedoperatorCONCAT,
264 FFESTP_definedoperatorDIVIDE,
265 FFESTP_definedoperatorSUBTRACT,
266 FFESTP_definedoperatorNOT,
267 FFESTP_definedoperatorAND,
268 FFESTP_definedoperatorOR,
269 FFESTP_definedoperatorEQV,
270 FFESTP_definedoperatorNEQV,
271 FFESTP_definedoperatorEQ,
272 FFESTP_definedoperatorNE,
273 FFESTP_definedoperatorLT,
274 FFESTP_definedoperatorLE,
275 FFESTP_definedoperatorGT,
276 FFESTP_definedoperatorGE,
277 FFESTP_definedoperator
278 };
279typedef enum _ffestp_definedoperator_ ffestpDefinedOperator;
280#endif
281
282enum _ffestp_dimtype_
283 {
284 FFESTP_dimtypeNONE,
285 FFESTP_dimtypeKNOWN, /* Known-bounds dimension list. */
286 FFESTP_dimtypeADJUSTABLE, /* Adjustable dimension list. */
287 FFESTP_dimtypeASSUMED, /* Assumed dimension list (known except for
288 last). */
289 FFESTP_dimtypeADJUSTABLEASSUMED, /* Both. */
290 FFESTP_dimtype
291 };
292typedef enum _ffestp_dimtype_ ffestpDimtype;
293
294enum _ffestp_formattype_
295 {
296 FFESTP_formattypeNone,
297 FFESTP_formattypeI,
298 FFESTP_formattypeB,
299 FFESTP_formattypeO,
300 FFESTP_formattypeZ,
301 FFESTP_formattypeF,
302 FFESTP_formattypeE,
303 FFESTP_formattypeEN,
304 FFESTP_formattypeG,
305 FFESTP_formattypeL,
306 FFESTP_formattypeA,
307 FFESTP_formattypeD,
308 FFESTP_formattypeQ,
309 FFESTP_formattypeDOLLAR, /* $ (V-extension). */
310 FFESTP_formattypeP,
311 FFESTP_formattypeT,
312 FFESTP_formattypeTL,
313 FFESTP_formattypeTR,
314 FFESTP_formattypeX,
315 FFESTP_formattypeS,
316 FFESTP_formattypeSP,
317 FFESTP_formattypeSS,
318 FFESTP_formattypeBN,
319 FFESTP_formattypeBZ,
320 FFESTP_formattypeH, /* Hollerith, used only for error-reporting. */
321 FFESTP_formattypeSLASH,
322 FFESTP_formattypeCOLON,
323 FFESTP_formattypeR1016, /* char-literal-constant or cHchars. */
324 FFESTP_formattypeFORMAT, /* [r](format-item-list). */
325 FFESTP_formattype
326 };
327typedef enum _ffestp_formattype_ ffestpFormatType;
328
329enum _ffestp_type_
330 {
331 FFESTP_typeNone,
332 FFESTP_typeINTEGER,
333 FFESTP_typeREAL,
334 FFESTP_typeCOMPLEX,
335 FFESTP_typeLOGICAL,
336 FFESTP_typeCHARACTER,
337 FFESTP_typeDBLPRCSN,
338 FFESTP_typeDBLCMPLX,
339 FFESTP_typeBYTE,
340 FFESTP_typeWORD,
341#if FFESTR_F90
342 FFESTP_typeTYPE,
343#endif
344 FFESTP_type
345 };
346typedef enum _ffestp_type_ ffestpType;
347
348/* Typedefs. */
349
350typedef struct _ffest_accept_stmt_ ffestpAcceptStmt;
351typedef struct _ffest_beru_stmt_ ffestpBeruStmt;
352typedef struct _ffest_close_stmt_ ffestpCloseStmt;
353typedef struct _ffest_delete_stmt_ ffestpDeleteStmt;
354typedef struct _ffestp_file ffestpFile;
355typedef struct _ffest_find_stmt_ ffestpFindStmt;
356typedef struct _ffest_inquire_stmt_ ffestpInquireStmt;
357typedef struct _ffest_open_stmt_ ffestpOpenStmt;
358typedef struct _ffest_print_stmt_ ffestpPrintStmt;
359typedef struct _ffest_read_stmt_ ffestpReadStmt;
360typedef struct _ffest_rewrite_stmt_ ffestpRewriteStmt;
361typedef struct _ffest_type_stmt_ ffestpTypeStmt;
362typedef struct _ffest_vxtcode_stmt_ ffestpVxtcodeStmt;
363typedef struct _ffest_write_stmt_ ffestpWriteStmt;
364
365/* Include files needed by this one. */
366
367#include "bld.h"
368#include "lab.h"
369#include "lex.h"
370#include "stp.h"
371#include "stt.h"
372
373/* Structure definitions. */
374
375struct _ffestp_file
376 {
377 bool kw_or_val_present; /* If FALSE, all else is n/a. */
378 bool kw_present; /* Indicates whether kw has a token. */
379 bool value_present; /* Indicates whether value/expr are valid. */
380 bool value_is_label; /* TRUE if expr has no expression, value is
381 NUMBER. */
382 ffelexToken kw; /* The keyword, iff kw_or_val_present &&
383 kw_present. */
384 ffelexToken value; /* The value, iff kw_or_val_present &&
385 value_present. */
386 union
387 {
388 ffebld expr; /* The expr, iff kw_or_val_present &&
389 value_present && !value_is_label. */
390 ffelab label; /* The label, iff kw_or_val_present &&
391 value_present && value_is_label. */
392 }
393 u;
394 };
395
396struct _ffest_accept_stmt_
397 {
398 ffestpFile accept_spec[FFESTP_acceptix];
399 };
400
401struct _ffest_beru_stmt_
402 {
403 ffestpFile beru_spec[FFESTP_beruix];
404 };
405
406struct _ffest_close_stmt_
407 {
408 ffestpFile close_spec[FFESTP_closeix];
409 };
410
411struct _ffest_delete_stmt_
412 {
413 ffestpFile delete_spec[FFESTP_deleteix];
414 };
415
416struct _ffest_find_stmt_
417 {
418 ffestpFile find_spec[FFESTP_findix];
419 };
420
421struct _ffest_imp_list_
422 {
423 ffesttImpList next;
424 ffesttImpList previous;
425 ffelexToken first;
426 ffelexToken last; /* NULL if a single letter. */
427 };
428
429struct _ffest_inquire_stmt_
430 {
431 ffestpFile inquire_spec[FFESTP_inquireix];
432 };
433
434struct _ffest_open_stmt_
435 {
436 ffestpFile open_spec[FFESTP_openix];
437 };
438
439struct _ffest_print_stmt_
440 {
441 ffestpFile print_spec[FFESTP_printix];
442 };
443
444struct _ffest_read_stmt_
445 {
446 ffestpFile read_spec[FFESTP_readix];
447 };
448
449struct _ffest_rewrite_stmt_
450 {
451 ffestpFile rewrite_spec[FFESTP_rewriteix];
452 };
453
454struct _ffest_type_stmt_
455 {
456 ffestpFile type_spec[FFESTP_typeix];
457 };
458
459struct _ffest_vxtcode_stmt_
460 {
461 ffestpFile vxtcode_spec[FFESTP_vxtcodeix];
462 };
463
464struct _ffest_write_stmt_
465 {
466 ffestpFile write_spec[FFESTP_writeix];
467 };
468
469union _ffestp_fileu_
470 {
471 ffestpAcceptStmt accept;
472 ffestpBeruStmt beru;
473 ffestpCloseStmt close;
474 ffestpDeleteStmt delete;
475 ffestpFindStmt find;
476 ffestpInquireStmt inquire;
477 ffestpOpenStmt open;
478 ffestpPrintStmt print;
479 ffestpReadStmt read;
480 ffestpRewriteStmt rewrite;
481 ffestpTypeStmt type;
482 ffestpVxtcodeStmt vxtcode;
483 ffestpWriteStmt write;
484 };
485
486/* Global objects accessed by users of this module. */
487
488extern union _ffestp_fileu_ ffestp_file;
489
490/* Declare functions with prototypes. */
491
492
493/* Define macros. */
494
495#define ffestp_init_0()
496#define ffestp_init_1()
497#define ffestp_init_2()
498#define ffestp_init_3()
499#define ffestp_init_4()
500#define ffestp_terminate_0()
501#define ffestp_terminate_1()
502#define ffestp_terminate_2()
503#define ffestp_terminate_3()
504#define ffestp_terminate_4()
505
506/* End of #include file. */
507
508#endif
This page took 0.302043 seconds and 5 git commands to generate.