OSDN Git Service

1998-07-26 Dave Love <d.love@dl.ac.uk>
[pf3gnuchains/gcc-fork.git] / gcc / f / bld.h
1 /* bld.h -- Public #include File (module.h template V1.0)
2    Copyright (C) 1995, 1996 Free Software Foundation, Inc.
3    Contributed by James Craig Burley (burley@gnu.org).
4
5 This file is part of GNU Fortran.
6
7 GNU Fortran is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GNU Fortran is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GNU Fortran; see the file COPYING.  If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21
22    Owning Modules:
23       bld.c
24
25    Modifications:
26 */
27
28 /* Allow multiple inclusion to work. */
29
30 #ifndef _H_f_bld
31 #define _H_f_bld
32
33 /* Simple definitions and enumerations. */
34
35 typedef enum
36   {
37     FFEBLD_constNONE,
38     FFEBLD_constINTEGER1,
39     FFEBLD_constINTEGER2,
40     FFEBLD_constINTEGER3,
41     FFEBLD_constINTEGER4,
42     FFEBLD_constINTEGER5,
43     FFEBLD_constINTEGER6,
44     FFEBLD_constINTEGER7,
45     FFEBLD_constINTEGER8,
46     FFEBLD_constLOGICAL1,
47     FFEBLD_constLOGICAL2,
48     FFEBLD_constLOGICAL3,
49     FFEBLD_constLOGICAL4,
50     FFEBLD_constLOGICAL5,
51     FFEBLD_constLOGICAL6,
52     FFEBLD_constLOGICAL7,
53     FFEBLD_constLOGICAL8,
54     FFEBLD_constREAL1,
55     FFEBLD_constREAL2,
56     FFEBLD_constREAL3,
57     FFEBLD_constREAL4,
58     FFEBLD_constREAL5,
59     FFEBLD_constREAL6,
60     FFEBLD_constREAL7,
61     FFEBLD_constREAL8,
62     FFEBLD_constCOMPLEX1,
63     FFEBLD_constCOMPLEX2,
64     FFEBLD_constCOMPLEX3,
65     FFEBLD_constCOMPLEX4,
66     FFEBLD_constCOMPLEX5,
67     FFEBLD_constCOMPLEX6,
68     FFEBLD_constCOMPLEX7,
69     FFEBLD_constCOMPLEX8,
70     FFEBLD_constCHARACTER1,
71     FFEBLD_constCHARACTER2,
72     FFEBLD_constCHARACTER3,
73     FFEBLD_constCHARACTER4,
74     FFEBLD_constCHARACTER5,
75     FFEBLD_constCHARACTER6,
76     FFEBLD_constCHARACTER7,
77     FFEBLD_constCHARACTER8,
78     FFEBLD_constHOLLERITH,
79     FFEBLD_constTYPELESS_FIRST,
80     FFEBLD_constBINARY_MIL = FFEBLD_constTYPELESS_FIRST,
81     FFEBLD_constBINARY_VXT,
82     FFEBLD_constOCTAL_MIL,
83     FFEBLD_constOCTAL_VXT,
84     FFEBLD_constHEX_X_MIL,
85     FFEBLD_constHEX_X_VXT,
86     FFEBLD_constHEX_Z_MIL,
87     FFEBLD_constHEX_Z_VXT,
88     FFEBLD_constTYPELESS_LAST = FFEBLD_constHEX_Z_VXT,
89     FFEBLD_const
90   } ffebldConst;
91
92 typedef enum
93   {
94 #define FFEBLD_OP(KWD,NAME,ARITY) KWD,
95 #include "bld-op.def"
96 #undef FFEBLD_OP
97     FFEBLD_op
98   } ffebldOp;
99
100 /* Typedefs. */
101
102 typedef struct _ffebld_ *ffebld;
103 typedef unsigned char ffebldArity;
104 typedef union _ffebld_constant_array_ ffebldConstantArray;
105 typedef struct _ffebld_constant_ *ffebldConstant;
106 typedef union _ffebld_constant_union_ ffebldConstantUnion;
107 typedef ffebld *ffebldListBottom;
108 typedef unsigned int ffebldListLength;
109 #define ffebldListLength_f ""
110 typedef struct _ffebld_pool_stack_ *ffebldPoolstack_;
111
112 /* Include files needed by this one. */
113
114 #include "bit.h"
115 #include "com.h"
116 #include "info.h"
117 #include "intrin.h"
118 #include "lab.h"
119 #include "lex.h"
120 #include "malloc.h"
121 #include "symbol.h"
122 #include "target.h"
123
124 #define FFEBLD_whereconstPROGUNIT_ 1
125 #define FFEBLD_whereconstFILE_ 2
126
127 #if FFECOM_targetCURRENT == FFECOM_targetFFE
128 #define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstPROGUNIT_
129 #elif FFECOM_targetCURRENT == FFECOM_targetGCC
130 #define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstFILE_
131 #else
132 #error
133 #endif
134
135 /* Structure definitions. */
136
137 #define FFEBLD_constINTEGERDEFAULT FFEBLD_constINTEGER1
138 #define FFEBLD_constLOGICALDEFAULT FFEBLD_constLOGICAL1
139 #define FFEBLD_constREALDEFAULT FFEBLD_constREAL1
140 #define FFEBLD_constREALDOUBLE FFEBLD_constREAL2
141 #define FFEBLD_constREALQUAD FFEBLD_constREAL3
142 #define FFEBLD_constCOMPLEX FFEBLD_constCOMPLEX1
143 #define FFEBLD_constCOMPLEXDOUBLE FFEBLD_constCOMPLEX2
144 #define FFEBLD_constCOMPLEXQUAD FFEBLD_constCOMPLEX3
145 #define FFEBLD_constCHARACTERDEFAULT FFEBLD_constCHARACTER1
146
147 union _ffebld_constant_union_
148   {
149     ffetargetTypeless typeless;
150     ffetargetHollerith hollerith;
151 #if FFETARGET_okINTEGER1
152     ffetargetInteger1 integer1;
153 #endif
154 #if FFETARGET_okINTEGER2
155     ffetargetInteger2 integer2;
156 #endif
157 #if FFETARGET_okINTEGER3
158     ffetargetInteger3 integer3;
159 #endif
160 #if FFETARGET_okINTEGER4
161     ffetargetInteger4 integer4;
162 #endif
163 #if FFETARGET_okINTEGER5
164     ffetargetInteger5 integer5;
165 #endif
166 #if FFETARGET_okINTEGER6
167     ffetargetInteger6 integer6;
168 #endif
169 #if FFETARGET_okINTEGER7
170     ffetargetInteger7 integer7;
171 #endif
172 #if FFETARGET_okINTEGER8
173     ffetargetInteger8 integer8;
174 #endif
175 #if FFETARGET_okLOGICAL1
176     ffetargetLogical1 logical1;
177 #endif
178 #if FFETARGET_okLOGICAL2
179     ffetargetLogical2 logical2;
180 #endif
181 #if FFETARGET_okLOGICAL3
182     ffetargetLogical3 logical3;
183 #endif
184 #if FFETARGET_okLOGICAL4
185     ffetargetLogical4 logical4;
186 #endif
187 #if FFETARGET_okLOGICAL5
188     ffetargetLogical5 logical5;
189 #endif
190 #if FFETARGET_okLOGICAL6
191     ffetargetLogical6 logical6;
192 #endif
193 #if FFETARGET_okLOGICAL7
194     ffetargetLogical7 logical7;
195 #endif
196 #if FFETARGET_okLOGICAL8
197     ffetargetLogical8 logical8;
198 #endif
199 #if FFETARGET_okREAL1
200     ffetargetReal1 real1;
201 #endif
202 #if FFETARGET_okREAL2
203     ffetargetReal2 real2;
204 #endif
205 #if FFETARGET_okREAL3
206     ffetargetReal3 real3;
207 #endif
208 #if FFETARGET_okREAL4
209     ffetargetReal4 real4;
210 #endif
211 #if FFETARGET_okREAL5
212     ffetargetReal5 real5;
213 #endif
214 #if FFETARGET_okREAL6
215     ffetargetReal6 real6;
216 #endif
217 #if FFETARGET_okREAL7
218     ffetargetReal7 real7;
219 #endif
220 #if FFETARGET_okREAL8
221     ffetargetReal8 real8;
222 #endif
223 #if FFETARGET_okCOMPLEX1
224     ffetargetComplex1 complex1;
225 #endif
226 #if FFETARGET_okCOMPLEX2
227     ffetargetComplex2 complex2;
228 #endif
229 #if FFETARGET_okCOMPLEX3
230     ffetargetComplex3 complex3;
231 #endif
232 #if FFETARGET_okCOMPLEX4
233     ffetargetComplex4 complex4;
234 #endif
235 #if FFETARGET_okCOMPLEX5
236     ffetargetComplex5 complex5;
237 #endif
238 #if FFETARGET_okCOMPLEX6
239     ffetargetComplex6 complex6;
240 #endif
241 #if FFETARGET_okCOMPLEX7
242     ffetargetComplex7 complex7;
243 #endif
244 #if FFETARGET_okCOMPLEX8
245     ffetargetComplex8 complex8;
246 #endif
247 #if FFETARGET_okCHARACTER1
248     ffetargetCharacter1 character1;
249 #endif
250 #if FFETARGET_okCHARACTER2
251     ffetargetCharacter2 character2;
252 #endif
253 #if FFETARGET_okCHARACTER3
254     ffetargetCharacter3 character3;
255 #endif
256 #if FFETARGET_okCHARACTER4
257     ffetargetCharacter4 character4;
258 #endif
259 #if FFETARGET_okCHARACTER5
260     ffetargetCharacter5 character5;
261 #endif
262 #if FFETARGET_okCHARACTER6
263     ffetargetCharacter6 character6;
264 #endif
265 #if FFETARGET_okCHARACTER7
266     ffetargetCharacter7 character7;
267 #endif
268 #if FFETARGET_okCHARACTER8
269     ffetargetCharacter8 character8;
270 #endif
271   };
272
273 union _ffebld_constant_array_
274   {
275 #if FFETARGET_okINTEGER1
276     ffetargetInteger1 *integer1;
277 #endif
278 #if FFETARGET_okINTEGER2
279     ffetargetInteger2 *integer2;
280 #endif
281 #if FFETARGET_okINTEGER3
282     ffetargetInteger3 *integer3;
283 #endif
284 #if FFETARGET_okINTEGER4
285     ffetargetInteger4 *integer4;
286 #endif
287 #if FFETARGET_okINTEGER5
288     ffetargetInteger5 *integer5;
289 #endif
290 #if FFETARGET_okINTEGER6
291     ffetargetInteger6 *integer6;
292 #endif
293 #if FFETARGET_okINTEGER7
294     ffetargetInteger7 *integer7;
295 #endif
296 #if FFETARGET_okINTEGER8
297     ffetargetInteger8 *integer8;
298 #endif
299 #if FFETARGET_okLOGICAL1
300     ffetargetLogical1 *logical1;
301 #endif
302 #if FFETARGET_okLOGICAL2
303     ffetargetLogical2 *logical2;
304 #endif
305 #if FFETARGET_okLOGICAL3
306     ffetargetLogical3 *logical3;
307 #endif
308 #if FFETARGET_okLOGICAL4
309     ffetargetLogical4 *logical4;
310 #endif
311 #if FFETARGET_okLOGICAL5
312     ffetargetLogical5 *logical5;
313 #endif
314 #if FFETARGET_okLOGICAL6
315     ffetargetLogical6 *logical6;
316 #endif
317 #if FFETARGET_okLOGICAL7
318     ffetargetLogical7 *logical7;
319 #endif
320 #if FFETARGET_okLOGICAL8
321     ffetargetLogical8 *logical8;
322 #endif
323 #if FFETARGET_okREAL1
324     ffetargetReal1 *real1;
325 #endif
326 #if FFETARGET_okREAL2
327     ffetargetReal2 *real2;
328 #endif
329 #if FFETARGET_okREAL3
330     ffetargetReal3 *real3;
331 #endif
332 #if FFETARGET_okREAL4
333     ffetargetReal4 *real4;
334 #endif
335 #if FFETARGET_okREAL5
336     ffetargetReal5 *real5;
337 #endif
338 #if FFETARGET_okREAL6
339     ffetargetReal6 *real6;
340 #endif
341 #if FFETARGET_okREAL7
342     ffetargetReal7 *real7;
343 #endif
344 #if FFETARGET_okREAL8
345     ffetargetReal8 *real8;
346 #endif
347 #if FFETARGET_okCOMPLEX1
348     ffetargetComplex1 *complex1;
349 #endif
350 #if FFETARGET_okCOMPLEX2
351     ffetargetComplex2 *complex2;
352 #endif
353 #if FFETARGET_okCOMPLEX3
354     ffetargetComplex3 *complex3;
355 #endif
356 #if FFETARGET_okCOMPLEX4
357     ffetargetComplex4 *complex4;
358 #endif
359 #if FFETARGET_okCOMPLEX5
360     ffetargetComplex5 *complex5;
361 #endif
362 #if FFETARGET_okCOMPLEX6
363     ffetargetComplex6 *complex6;
364 #endif
365 #if FFETARGET_okCOMPLEX7
366     ffetargetComplex7 *complex7;
367 #endif
368 #if FFETARGET_okCOMPLEX8
369     ffetargetComplex8 *complex8;
370 #endif
371 #if FFETARGET_okCHARACTER1
372     ffetargetCharacterUnit1 *character1;
373 #endif
374 #if FFETARGET_okCHARACTER2
375     ffetargetCharacterUnit2 *character2;
376 #endif
377 #if FFETARGET_okCHARACTER3
378     ffetargetCharacterUnit3 *character3;
379 #endif
380 #if FFETARGET_okCHARACTER4
381     ffetargetCharacterUnit4 *character4;
382 #endif
383 #if FFETARGET_okCHARACTER5
384     ffetargetCharacterUnit5 *character5;
385 #endif
386 #if FFETARGET_okCHARACTER6
387     ffetargetCharacterUnit6 *character6;
388 #endif
389 #if FFETARGET_okCHARACTER7
390     ffetargetCharacterUnit7 *character7;
391 #endif
392 #if FFETARGET_okCHARACTER8
393     ffetargetCharacterUnit8 *character8;
394 #endif
395   };
396
397 struct _ffebld_
398   {
399     ffebldOp op;
400     ffeinfo info;               /* Not used or valid for
401                                    op=={STAR,ITEM,BOUNDS,REPEAT,LABTER,
402                                    LABTOK,IMPDO}. */
403     union
404       {
405         struct
406           {
407             ffebld left;
408             ffebld right;
409           }
410         nonter;
411         struct
412           {
413             ffebld head;
414             ffebld trail;
415           }
416         item;
417         struct
418           {
419             ffebldConstant expr;
420             ffebld orig;        /* Original expression, or NULL if none. */
421             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
422           }
423         conter;
424         struct
425           {
426             ffebldConstantArray array;
427             ffetargetOffset size;
428             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
429           }
430         arrter;
431         struct
432           {
433             ffebldConstantArray array;
434             ffebit bits;
435             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
436           }
437         accter;
438         struct
439           {
440             ffesymbol symbol;
441             ffeintrinGen generic;       /* Id for generic intrinsic. */
442             ffeintrinSpec specific;     /* Id for specific intrinsic. */
443             ffeintrinImp implementation;        /* Id for implementation. */
444             bool do_iter;       /* TRUE if this ref is a read-only ref by
445                                    definition (ref within DO loop using this
446                                    var as iterator). */
447           }
448         symter;
449         ffelab labter;
450         ffelexToken labtok;
451       }
452     u;
453   };
454
455 struct _ffebld_constant_
456   {
457     ffebldConstant next;
458     ffebldConstant first_complex;       /* First complex const with me as
459                                            real. */
460     ffebldConstant negated;     /* We point to each other through here. */
461     ffebldConst consttype;
462 #ifdef FFECOM_constantHOOK
463     ffecomConstant hook;        /* Whatever the compiler/backend wants! */
464 #endif
465     bool numeric;               /* A numeric kind of constant. */
466     ffebldConstantUnion u;
467   };
468
469 struct _ffebld_pool_stack_
470   {
471     ffebldPoolstack_ next;
472     mallocPool pool;
473   };
474
475 /* Global objects accessed by users of this module. */
476
477 extern ffebldArity ffebld_arity_op_[];
478 extern struct _ffebld_pool_stack_ ffebld_pool_stack_;
479
480 /* Declare functions with prototypes. */
481
482 int ffebld_constant_cmp (ffebldConstant c1, ffebldConstant c2);
483 #if FFECOM_targetCURRENT == FFECOM_targetFFE
484 void ffebld_constant_dump (ffebldConstant c);
485 #endif
486 bool ffebld_constant_is_magical (ffebldConstant c);
487 bool ffebld_constant_is_zero (ffebldConstant c);
488 #if FFETARGET_okCHARACTER1
489 ffebldConstant ffebld_constant_new_character1 (ffelexToken t);
490 ffebldConstant ffebld_constant_new_character1_val (ffetargetCharacter1 val);
491 #endif
492 #if FFETARGET_okCHARACTER2
493 ffebldConstant ffebld_constant_new_character2 (ffelexToken t);
494 ffebldConstant ffebld_constant_new_character2_val (ffetargetCharacter2 val);
495 #endif
496 #if FFETARGET_okCHARACTER3
497 ffebldConstant ffebld_constant_new_character3 (ffelexToken t);
498 ffebldConstant ffebld_constant_new_character3_val (ffetargetCharacter3 val);
499 #endif
500 #if FFETARGET_okCHARACTER4
501 ffebldConstant ffebld_constant_new_character4 (ffelexToken t);
502 ffebldConstant ffebld_constant_new_character4_val (ffetargetCharacter4 val);
503 #endif
504 #if FFETARGET_okCHARACTER5
505 ffebldConstant ffebld_constant_new_character5 (ffelexToken t);
506 ffebldConstant ffebld_constant_new_character5_val (ffetargetCharacter5 val);
507 #endif
508 #if FFETARGET_okCHARACTER6
509 ffebldConstant ffebld_constant_new_character6 (ffelexToken t);
510 ffebldConstant ffebld_constant_new_character6_val (ffetargetCharacter6 val);
511 #endif
512 #if FFETARGET_okCHARACTER7
513 ffebldConstant ffebld_constant_new_character7 (ffelexToken t);
514 ffebldConstant ffebld_constant_new_character7_val (ffetargetCharacter7 val);
515 #endif
516 #if FFETARGET_okCHARACTER8
517 ffebldConstant ffebld_constant_new_character8 (ffelexToken t);
518 ffebldConstant ffebld_constant_new_character8_val (ffetargetCharacter8 val);
519 #endif
520 #if FFETARGET_okCOMPLEX1
521 ffebldConstant ffebld_constant_new_complex1 (ffebldConstant real,
522                                              ffebldConstant imaginary);
523 ffebldConstant ffebld_constant_new_complex1_val (ffetargetComplex1 val);
524 #endif
525 #if FFETARGET_okCOMPLEX2
526 ffebldConstant ffebld_constant_new_complex2 (ffebldConstant real,
527                                              ffebldConstant imaginary);
528 ffebldConstant ffebld_constant_new_complex2_val (ffetargetComplex2 val);
529 #endif
530 #if FFETARGET_okCOMPLEX3
531 ffebldConstant ffebld_constant_new_complex3 (ffebldConstant real,
532                                              ffebldConstant imaginary);
533 ffebldConstant ffebld_constant_new_complex3_val (ffetargetComplex3 val);
534 #endif
535 #if FFETARGET_okCOMPLEX4
536 ffebldConstant ffebld_constant_new_complex4 (ffebldConstant real,
537                                              ffebldConstant imaginary);
538 ffebldConstant ffebld_constant_new_complex4_val (ffetargetComplex4 val);
539 #endif
540 #if FFETARGET_okCOMPLEX5
541 ffebldConstant ffebld_constant_new_complex5 (ffebldConstant real,
542                                              ffebldConstant imaginary);
543 ffebldConstant ffebld_constant_new_complex5_val (ffetargetComplex5 val);
544 #endif
545 #if FFETARGET_okCOMPLEX6
546 ffebldConstant ffebld_constant_new_complex6 (ffebldConstant real,
547                                              ffebldConstant imaginary);
548 ffebldConstant ffebld_constant_new_complex6_val (ffetargetComplex6 val);
549 #endif
550 #if FFETARGET_okCOMPLEX7
551 ffebldConstant ffebld_constant_new_complex7 (ffebldConstant real,
552                                              ffebldConstant imaginary);
553 ffebldConstant ffebld_constant_new_complex7_val (ffetargetComplex7 val);
554 #endif
555 #if FFETARGET_okCOMPLEX8
556 ffebldConstant ffebld_constant_new_complex8 (ffebldConstant real,
557                                              ffebldConstant imaginary);
558 ffebldConstant ffebld_constant_new_complex8_val (ffetargetComplex8 val);
559 #endif
560 ffebldConstant ffebld_constant_new_hollerith (ffelexToken t);
561 ffebldConstant ffebld_constant_new_hollerith_val (ffetargetHollerith val);
562 #if FFETARGET_okINTEGER1
563 ffebldConstant ffebld_constant_new_integer1 (ffelexToken t);
564 ffebldConstant ffebld_constant_new_integer1_val (ffetargetInteger1 val);
565 #endif
566 #if FFETARGET_okINTEGER2
567 ffebldConstant ffebld_constant_new_integer2 (ffelexToken t);
568 ffebldConstant ffebld_constant_new_integer2_val (ffetargetInteger2 val);
569 #endif
570 #if FFETARGET_okINTEGER3
571 ffebldConstant ffebld_constant_new_integer3 (ffelexToken t);
572 ffebldConstant ffebld_constant_new_integer3_val (ffetargetInteger3 val);
573 #endif
574 #if FFETARGET_okINTEGER4
575 ffebldConstant ffebld_constant_new_integer4 (ffelexToken t);
576 ffebldConstant ffebld_constant_new_integer4_val (ffetargetInteger4 val);
577 #endif
578 #if FFETARGET_okINTEGER5
579 ffebldConstant ffebld_constant_new_integer5 (ffelexToken t);
580 ffebldConstant ffebld_constant_new_integer5_val (ffetargetInteger5 val);
581 #endif
582 #if FFETARGET_okINTEGER6
583 ffebldConstant ffebld_constant_new_integer6 (ffelexToken t);
584 ffebldConstant ffebld_constant_new_integer6_val (ffetargetInteger6 val);
585 #endif
586 #if FFETARGET_okINTEGER7
587 ffebldConstant ffebld_constant_new_integer7 (ffelexToken t);
588 ffebldConstant ffebld_constant_new_integer7_val (ffetargetInteger7 val);
589 #endif
590 #if FFETARGET_okINTEGER8
591 ffebldConstant ffebld_constant_new_integer8 (ffelexToken t);
592 ffebldConstant ffebld_constant_new_integer8_val (ffetargetInteger8 val);
593 #endif
594 ffebldConstant ffebld_constant_new_integerbinary (ffelexToken t);
595 ffebldConstant ffebld_constant_new_integerhex (ffelexToken t);
596 ffebldConstant ffebld_constant_new_integeroctal (ffelexToken t);
597 #if FFETARGET_okLOGICAL1
598 ffebldConstant ffebld_constant_new_logical1 (bool truth);
599 ffebldConstant ffebld_constant_new_logical1_val (ffetargetLogical1 val);
600 #endif
601 #if FFETARGET_okLOGICAL2
602 ffebldConstant ffebld_constant_new_logical2 (bool truth);
603 ffebldConstant ffebld_constant_new_logical2_val (ffetargetLogical2 val);
604 #endif
605 #if FFETARGET_okLOGICAL3
606 ffebldConstant ffebld_constant_new_logical3 (bool truth);
607 ffebldConstant ffebld_constant_new_logical3_val (ffetargetLogical3 val);
608 #endif
609 #if FFETARGET_okLOGICAL4
610 ffebldConstant ffebld_constant_new_logical4 (bool truth);
611 ffebldConstant ffebld_constant_new_logical4_val (ffetargetLogical4 val);
612 #endif
613 #if FFETARGET_okLOGICAL5
614 ffebldConstant ffebld_constant_new_logical5 (bool truth);
615 ffebldConstant ffebld_constant_new_logical5_val (ffetargetLogical5 val);
616 #endif
617 #if FFETARGET_okLOGICAL6
618 ffebldConstant ffebld_constant_new_logical6 (bool truth);
619 ffebldConstant ffebld_constant_new_logical6_val (ffetargetLogical6 val);
620 #endif
621 #if FFETARGET_okLOGICAL7
622 ffebldConstant ffebld_constant_new_logical7 (bool truth);
623 ffebldConstant ffebld_constant_new_logical7_val (ffetargetLogical7 val);
624 #endif
625 #if FFETARGET_okLOGICAL8
626 ffebldConstant ffebld_constant_new_logical8 (bool truth);
627 ffebldConstant ffebld_constant_new_logical8_val (ffetargetLogical8 val);
628 #endif
629 #if FFETARGET_okREAL1
630 ffebldConstant ffebld_constant_new_real1 (ffelexToken integer,
631             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
632                     ffelexToken exponent_sign, ffelexToken exponent_digits);
633 ffebldConstant ffebld_constant_new_real1_val (ffetargetReal1 val);
634 #endif
635 #if FFETARGET_okREAL2
636 ffebldConstant ffebld_constant_new_real2 (ffelexToken integer,
637             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
638                     ffelexToken exponent_sign, ffelexToken exponent_digits);
639 ffebldConstant ffebld_constant_new_real2_val (ffetargetReal2 val);
640 #endif
641 #if FFETARGET_okREAL3
642 ffebldConstant ffebld_constant_new_real3 (ffelexToken integer,
643             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
644                     ffelexToken exponent_sign, ffelexToken exponent_digits);
645 ffebldConstant ffebld_constant_new_real3_val (ffetargetReal3 val);
646 #endif
647 #if FFETARGET_okREAL4
648 ffebldConstant ffebld_constant_new_real4 (ffelexToken integer,
649             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
650                     ffelexToken exponent_sign, ffelexToken exponent_digits);
651 ffebldConstant ffebld_constant_new_real4_val (ffetargetReal4 val);
652 #endif
653 #if FFETARGET_okREAL5
654 ffebldConstant ffebld_constant_new_real5 (ffelexToken integer,
655             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
656                     ffelexToken exponent_sign, ffelexToken exponent_digits);
657 ffebldConstant ffebld_constant_new_real5_val (ffetargetReal5 val);
658 #endif
659 #if FFETARGET_okREAL6
660 ffebldConstant ffebld_constant_new_real6 (ffelexToken integer,
661             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
662                     ffelexToken exponent_sign, ffelexToken exponent_digits);
663 ffebldConstant ffebld_constant_new_real6_val (ffetargetReal6 val);
664 #endif
665 #if FFETARGET_okREAL7
666 ffebldConstant ffebld_constant_new_real7 (ffelexToken integer,
667             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
668                     ffelexToken exponent_sign, ffelexToken exponent_digits);
669 ffebldConstant ffebld_constant_new_real7_val (ffetargetReal7 val);
670 #endif
671 #if FFETARGET_okREAL8
672 ffebldConstant ffebld_constant_new_real8 (ffelexToken integer,
673             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
674                     ffelexToken exponent_sign, ffelexToken exponent_digits);
675 ffebldConstant ffebld_constant_new_real8_val (ffetargetReal8 val);
676 #endif
677 ffebldConstant ffebld_constant_new_typeless_bm (ffelexToken t);
678 ffebldConstant ffebld_constant_new_typeless_bv (ffelexToken t);
679 ffebldConstant ffebld_constant_new_typeless_hxm (ffelexToken t);
680 ffebldConstant ffebld_constant_new_typeless_hxv (ffelexToken t);
681 ffebldConstant ffebld_constant_new_typeless_hzm (ffelexToken t);
682 ffebldConstant ffebld_constant_new_typeless_hzv (ffelexToken t);
683 ffebldConstant ffebld_constant_new_typeless_om (ffelexToken t);
684 ffebldConstant ffebld_constant_new_typeless_ov (ffelexToken t);
685 ffebldConstant ffebld_constant_new_typeless_val (ffebldConst type,
686                                                  ffetargetTypeless val);
687 ffebldConstant ffebld_constant_negated (ffebldConstant c);
688 #if FFECOM_targetCURRENT == FFECOM_targetFFE
689 void ffebld_constantarray_dump (ffebldConstantArray array, ffeinfoBasictype bt,
690                      ffeinfoKindtype kt, ffetargetOffset size, ffebit bits);
691 #endif
692 ffebldConstantUnion ffebld_constantarray_get (ffebldConstantArray array,
693            ffeinfoBasictype bt, ffeinfoKindtype kt, ffetargetOffset offset);
694 void ffebld_constantarray_kill (ffebldConstantArray array, ffeinfoBasictype bt,
695                                 ffeinfoKindtype kt, ffetargetOffset size);
696 ffebldConstantArray ffebld_constantarray_new (ffeinfoBasictype bt,
697                                   ffeinfoKindtype kt, ffetargetOffset size);
698 void ffebld_constantarray_prepare (void **aptr, void **cptr, size_t *size,
699        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
700                       ffetargetOffset offset, ffebldConstantUnion *constant,
701                                  ffeinfoBasictype cbt, ffeinfoKindtype ckt);
702 void ffebld_constantarray_preparray (void **aptr, void **cptr, size_t *size,
703        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
704                    ffetargetOffset offset, ffebldConstantArray source_array,
705                                  ffeinfoBasictype cbt, ffeinfoKindtype ckt);
706 void ffebld_constantarray_put (ffebldConstantArray array, ffeinfoBasictype bt,
707   ffeinfoKindtype kt, ffetargetOffset offset, ffebldConstantUnion constant);
708 #if FFECOM_targetCURRENT == FFECOM_targetFFE
709 void ffebld_constantunion_dump (ffebldConstantUnion u, ffeinfoBasictype bt,
710                                 ffeinfoKindtype kt);
711 void ffebld_dump (ffebld b);
712 void ffebld_dump_prefix (FILE *out, ffeinfoBasictype bt, ffeinfoKindtype kt);
713 #endif
714 void ffebld_init_0 (void);
715 void ffebld_init_1 (void);
716 void ffebld_init_2 (void);
717 ffebldListLength ffebld_list_length (ffebld l);
718 ffebld ffebld_new_accter (ffebldConstantArray array, ffebit b);
719 ffebld ffebld_new_arrter (ffebldConstantArray array, ffetargetOffset size);
720 ffebld ffebld_new_conter_with_orig (ffebldConstant c, ffebld orig);
721 ffebld ffebld_new_item (ffebld head, ffebld trail);
722 ffebld ffebld_new_labter (ffelab l);
723 ffebld ffebld_new_labtok (ffelexToken t);
724 ffebld ffebld_new_none (ffebldOp o);
725 ffebld ffebld_new_symter (ffesymbol s, ffeintrinGen gen, ffeintrinSpec spec,
726                           ffeintrinImp imp);
727 ffebld ffebld_new_one (ffebldOp o, ffebld left);
728 ffebld ffebld_new_two (ffebldOp o, ffebld left, ffebld right);
729 char *ffebld_op_string (ffebldOp o);
730 void ffebld_pool_pop (void);
731 void ffebld_pool_push (mallocPool pool);
732 ffetargetCharacterSize ffebld_size_max (ffebld b);
733
734 /* Define macros. */
735
736 #define ffebld_accter(b) ((b)->u.accter.array)
737 #define ffebld_accter_bits(b) ((b)->u.accter.bits)
738 #define ffebld_accter_pad(b) ((b)->u.accter.pad)
739 #define ffebld_accter_set_bits(b,bt) ((b)->u.accter.bits = (bt))
740 #define ffebld_accter_set_pad(b,p) ((b)->u.accter.pad = (p))
741 #define ffebld_accter_size(b) ffebit_size((b)->u.accter.bits)
742 #define ffebld_append_item(b,i) (**(b) = ffebld_new_item((i),NULL),           \
743                                  *(b) = &((**(b))->u.item.trail))
744 #define ffebld_arity(b) ffebld_arity_op(ffebld_op(b))
745 #define ffebld_arity_op(o) (ffebld_arity_op_[o])
746 #define ffebld_arrter(b) ((b)->u.arrter.array)
747 #define ffebld_arrter_pad(b) ((b)->u.arrter.pad)
748 #define ffebld_arrter_set_pad(b,p) ((b)->u.arrter.pad = (p))
749 #define ffebld_arrter_set_size(b,s) ((b)->u.arrter.size = (s))
750 #define ffebld_arrter_size(b) ((b)->u.arrter.size)
751 #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_
752 #define ffebld_constant_pool() ffe_pool_program_unit()
753 #elif FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstFILE_
754 #define ffebld_constant_pool() ffe_pool_file()
755 #else
756 #error
757 #endif
758 #define ffebld_constant_character1(c) ((c)->u.character1)
759 #define ffebld_constant_character2(c) ((c)->u.character2)
760 #define ffebld_constant_character3(c) ((c)->u.character3)
761 #define ffebld_constant_character4(c) ((c)->u.character4)
762 #define ffebld_constant_character5(c) ((c)->u.character5)
763 #define ffebld_constant_character6(c) ((c)->u.character6)
764 #define ffebld_constant_character7(c) ((c)->u.character7)
765 #define ffebld_constant_character8(c) ((c)->u.character8)
766 #define ffebld_constant_characterdefault ffebld_constant_character1
767 #define ffebld_constant_complex1(c) ((c)->u.complex1)
768 #define ffebld_constant_complex2(c) ((c)->u.complex2)
769 #define ffebld_constant_complex3(c) ((c)->u.complex3)
770 #define ffebld_constant_complex4(c) ((c)->u.complex4)
771 #define ffebld_constant_complex5(c) ((c)->u.complex5)
772 #define ffebld_constant_complex6(c) ((c)->u.complex6)
773 #define ffebld_constant_complex7(c) ((c)->u.complex7)
774 #define ffebld_constant_complex8(c) ((c)->u.complex8)
775 #define ffebld_constant_complexdefault ffebld_constant_complex1
776 #define ffebld_constant_complexdouble ffebld_constant_complex2
777 #define ffebld_constant_complexquad ffebld_constant_complex3
778 #define ffebld_constant_copy(c) (c)
779 #define ffebld_constant_hollerith(c) ((c)->u.hollerith)
780 #define ffebld_constant_hook(c) ((c)->hook)
781 #define ffebld_constant_integer1(c) ((c)->u.integer1)
782 #define ffebld_constant_integer2(c) ((c)->u.integer2)
783 #define ffebld_constant_integer3(c) ((c)->u.integer3)
784 #define ffebld_constant_integer4(c) ((c)->u.integer4)
785 #define ffebld_constant_integer5(c) ((c)->u.integer5)
786 #define ffebld_constant_integer6(c) ((c)->u.integer6)
787 #define ffebld_constant_integer7(c) ((c)->u.integer7)
788 #define ffebld_constant_integer8(c) ((c)->u.integer8)
789 #define ffebld_constant_integerdefault ffebld_constant_integer1
790 #define ffebld_constant_is_numeric(c) ((c)->numeric)
791 #define ffebld_constant_logical1(c) ((c)->u.logical1)
792 #define ffebld_constant_logical2(c) ((c)->u.logical2)
793 #define ffebld_constant_logical3(c) ((c)->u.logical3)
794 #define ffebld_constant_logical4(c) ((c)->u.logical4)
795 #define ffebld_constant_logical5(c) ((c)->u.logical5)
796 #define ffebld_constant_logical6(c) ((c)->u.logical6)
797 #define ffebld_constant_logical7(c) ((c)->u.logical7)
798 #define ffebld_constant_logical8(c) ((c)->u.logical8)
799 #define ffebld_constant_logicaldefault ffebld_constant_logical1
800 #define ffebld_constant_new_characterdefault ffebld_constant_new_character1
801 #define ffebld_constant_new_characterdefault_val ffebld_constant_new_character1_val
802 #define ffebld_constant_new_complexdefault ffebld_constant_new_complex1
803 #define ffebld_constant_new_complexdefault_val ffebld_constant_new_complex1_val
804 #define ffebld_constant_new_complexdouble ffebld_constant_new_complex2
805 #define ffebld_constant_new_complexdouble_val ffebld_constant_new_complex2_val
806 #define ffebld_constant_new_complexquad ffebld_constant_new_complex3
807 #define ffebld_constant_new_complexquad_valffebld_constant_new_complex3_val
808 #define ffebld_constant_new_integerdefault ffebld_constant_new_integer1
809 #define ffebld_constant_new_integerdefault_val ffebld_constant_new_integer1_val
810 #define ffebld_constant_new_logicaldefault ffebld_constant_new_logical1
811 #define ffebld_constant_new_logicaldefault_val ffebld_constant_new_logical1_val
812 #define ffebld_constant_new_realdefault ffebld_constant_new_real1
813 #define ffebld_constant_new_realdefault_val ffebld_constant_new_real1_val
814 #define ffebld_constant_new_realdouble ffebld_constant_new_real2
815 #define ffebld_constant_new_realdouble_val ffebld_constant_new_real2_val
816 #define ffebld_constant_new_realquad ffebld_constant_new_real3
817 #define ffebld_constant_new_realquad_val ffebld_constant_new_real3_val
818 #define ffebld_constant_ptr_to_union(c) (&(c)->u)
819 #define ffebld_constant_real1(c) ((c)->u.real1)
820 #define ffebld_constant_real2(c) ((c)->u.real2)
821 #define ffebld_constant_real3(c) ((c)->u.real3)
822 #define ffebld_constant_real4(c) ((c)->u.real4)
823 #define ffebld_constant_real5(c) ((c)->u.real5)
824 #define ffebld_constant_real6(c) ((c)->u.real6)
825 #define ffebld_constant_real7(c) ((c)->u.real7)
826 #define ffebld_constant_real8(c) ((c)->u.real8)
827 #define ffebld_constant_realdefault ffebld_constant_real1
828 #define ffebld_constant_realdouble ffebld_constant_real2
829 #define ffebld_constant_realquad ffebld_constant_real3
830 #define ffebld_constant_set_hook(c,h) ((c)->hook = (h))
831 #define ffebld_constant_set_union(c,un) ((c)->u = (un))
832 #define ffebld_constant_type(c) ((c)->consttype)
833 #define ffebld_constant_typeless(c) ((c)->u.typeless)
834 #define ffebld_constant_union(c) ((c)->u)
835 #define ffebld_conter(b) ((b)->u.conter.expr)
836 #define ffebld_conter_orig(b) ((b)->u.conter.orig)
837 #define ffebld_conter_pad(b) ((b)->u.conter.pad)
838 #define ffebld_conter_set_orig(b,o) ((b)->u.conter.orig = (o))
839 #define ffebld_conter_set_pad(b,p) ((b)->u.conter.pad = (p))
840 #define ffebld_copy(b) (b)      /* ~~~Someday really make a copy. */
841 #define ffebld_cu_ptr_typeless(u) &(u).typeless
842 #define ffebld_cu_ptr_hollerith(u) &(u).hollerith
843 #define ffebld_cu_ptr_integer1(u) &(u).integer1
844 #define ffebld_cu_ptr_integer2(u) &(u).integer2
845 #define ffebld_cu_ptr_integer3(u) &(u).integer3
846 #define ffebld_cu_ptr_integer4(u) &(u).integer4
847 #define ffebld_cu_ptr_integer5(u) &(u).integer5
848 #define ffebld_cu_ptr_integer6(u) &(u).integer6
849 #define ffebld_cu_ptr_integer7(u) &(u).integer7
850 #define ffebld_cu_ptr_integer8(u) &(u).integer8
851 #define ffebld_cu_ptr_integerdefault ffebld_cu_ptr_integer1
852 #define ffebld_cu_ptr_logical1(u) &(u).logical1
853 #define ffebld_cu_ptr_logical2(u) &(u).logical2
854 #define ffebld_cu_ptr_logical3(u) &(u).logical3
855 #define ffebld_cu_ptr_logical4(u) &(u).logical4
856 #define ffebld_cu_ptr_logical5(u) &(u).logical5
857 #define ffebld_cu_ptr_logical6(u) &(u).logical6
858 #define ffebld_cu_ptr_logical7(u) &(u).logical7
859 #define ffebld_cu_ptr_logical8(u) &(u).logical8
860 #define ffebld_cu_ptr_logicaldefault ffebld_cu_ptr_logical1
861 #define ffebld_cu_ptr_real1(u) &(u).real1
862 #define ffebld_cu_ptr_real2(u) &(u).real2
863 #define ffebld_cu_ptr_real3(u) &(u).real3
864 #define ffebld_cu_ptr_real4(u) &(u).real4
865 #define ffebld_cu_ptr_real5(u) &(u).real5
866 #define ffebld_cu_ptr_real6(u) &(u).real6
867 #define ffebld_cu_ptr_real7(u) &(u).real7
868 #define ffebld_cu_ptr_real8(u) &(u).real8
869 #define ffebld_cu_ptr_realdefault ffebld_cu_ptr_real1
870 #define ffebld_cu_ptr_realdouble ffebld_cu_ptr_real2
871 #define ffebld_cu_ptr_realquad ffebld_cu_ptr_real3
872 #define ffebld_cu_ptr_complex1(u) &(u).complex1
873 #define ffebld_cu_ptr_complex2(u) &(u).complex2
874 #define ffebld_cu_ptr_complex3(u) &(u).complex3
875 #define ffebld_cu_ptr_complex4(u) &(u).complex4
876 #define ffebld_cu_ptr_complex5(u) &(u).complex5
877 #define ffebld_cu_ptr_complex6(u) &(u).complex6
878 #define ffebld_cu_ptr_complex7(u) &(u).complex7
879 #define ffebld_cu_ptr_complex8(u) &(u).complex8
880 #define ffebld_cu_ptr_complexdefault ffebld_cu_ptr_complex1
881 #define ffebld_cu_ptr_complexdouble ffebld_cu_ptr_complex2
882 #define ffebld_cu_ptr_complexquad ffebld_cu_ptr_complex3
883 #define ffebld_cu_ptr_character1(u) &(u).character1
884 #define ffebld_cu_ptr_character2(u) &(u).character2
885 #define ffebld_cu_ptr_character3(u) &(u).character3
886 #define ffebld_cu_ptr_character4(u) &(u).character4
887 #define ffebld_cu_ptr_character5(u) &(u).character5
888 #define ffebld_cu_ptr_character6(u) &(u).character6
889 #define ffebld_cu_ptr_character7(u) &(u).character7
890 #define ffebld_cu_ptr_character8(u) &(u).character8
891 #define ffebld_cu_val_typeless(u) (u).typeless
892 #define ffebld_cu_val_hollerith(u) (u).hollerith
893 #define ffebld_cu_val_integer1(u) (u).integer1
894 #define ffebld_cu_val_integer2(u) (u).integer2
895 #define ffebld_cu_val_integer3(u) (u).integer3
896 #define ffebld_cu_val_integer4(u) (u).integer4
897 #define ffebld_cu_val_integer5(u) (u).integer5
898 #define ffebld_cu_val_integer6(u) (u).integer6
899 #define ffebld_cu_val_integer7(u) (u).integer7
900 #define ffebld_cu_val_integer8(u) (u).integer8
901 #define ffebld_cu_val_integerdefault ffebld_cu_val_integer1
902 #define ffebld_cu_val_logical1(u) (u).logical1
903 #define ffebld_cu_val_logical2(u) (u).logical2
904 #define ffebld_cu_val_logical3(u) (u).logical3
905 #define ffebld_cu_val_logical4(u) (u).logical4
906 #define ffebld_cu_val_logical5(u) (u).logical5
907 #define ffebld_cu_val_logical6(u) (u).logical6
908 #define ffebld_cu_val_logical7(u) (u).logical7
909 #define ffebld_cu_val_logical8(u) (u).logical8
910 #define ffebld_cu_val_logicaldefault ffebld_cu_val_logical
911 #define ffebld_cu_val_real1(u) (u).real1
912 #define ffebld_cu_val_real2(u) (u).real2
913 #define ffebld_cu_val_real3(u) (u).real3
914 #define ffebld_cu_val_real4(u) (u).real4
915 #define ffebld_cu_val_real5(u) (u).real5
916 #define ffebld_cu_val_real6(u) (u).real6
917 #define ffebld_cu_val_real7(u) (u).real7
918 #define ffebld_cu_val_real8(u) (u).real8
919 #define ffebld_cu_val_realdefault ffebld_cu_val_real1
920 #define ffebld_cu_val_realdouble ffebld_cu_val_real2
921 #define ffebld_cu_val_realquad ffebld_cu_val_real3
922 #define ffebld_cu_val_complex1(u) (u).complex1
923 #define ffebld_cu_val_complex2(u) (u).complex2
924 #define ffebld_cu_val_complex3(u) (u).complex3
925 #define ffebld_cu_val_complex4(u) (u).complex4
926 #define ffebld_cu_val_complex5(u) (u).complex5
927 #define ffebld_cu_val_complex6(u) (u).complex6
928 #define ffebld_cu_val_complex7(u) (u).complex7
929 #define ffebld_cu_val_complex8(u) (u).complex8
930 #define ffebld_cu_val_complexdefault ffebld_cu_val_complex1
931 #define ffebld_cu_val_complexdouble ffebld_cu_val_complex2
932 #define ffebld_cu_val_complexquad ffebld_cu_val_complex3
933 #define ffebld_cu_val_character1(u) (u).character1
934 #define ffebld_cu_val_character2(u) (u).character2
935 #define ffebld_cu_val_character3(u) (u).character3
936 #define ffebld_cu_val_character4(u) (u).character4
937 #define ffebld_cu_val_character5(u) (u).character5
938 #define ffebld_cu_val_character6(u) (u).character6
939 #define ffebld_cu_val_character7(u) (u).character7
940 #define ffebld_cu_val_character8(u) (u).character8
941 #define ffebld_end_list(b) (*(b) = NULL)
942 #define ffebld_head(b) ((b)->u.item.head)
943 #define ffebld_info(b) ((b)->info)
944 #define ffebld_init_3()
945 #define ffebld_init_4()
946 #define ffebld_init_list(l,b) (*(l) = NULL, *(b) = (l))
947 #define ffebld_labter(b) ((b)->u.labter)
948 #define ffebld_labtok(b) ((b)->u.labtok)
949 #define ffebld_left(b) ((b)->u.nonter.left)
950 #define ffebld_name_string(n) ((n)->name)
951 #define ffebld_new()                                                          \
952   ((ffebld) malloc_new_kp(ffebld_pool(), "FFEBLD",sizeof(struct _ffebld_)))
953 #define ffebld_new_any() ffebld_new_none(FFEBLD_opANY)
954 #define ffebld_new_conter(c) ffebld_new_conter_with_orig((c),NULL)
955 #define ffebld_new_star() ffebld_new_none(FFEBLD_opSTAR)
956 #define ffebld_new_uplus(l) ffebld_new_one(FFEBLD_opUPLUS,(l))
957 #define ffebld_new_uminus(l) ffebld_new_one(FFEBLD_opUMINUS,(l))
958 #define ffebld_new_add(l,r) ffebld_new_two(FFEBLD_opADD,(l),(r))
959 #define ffebld_new_subtract(l,r) ffebld_new_two(FFEBLD_opSUBTRACT,(l),(r))
960 #define ffebld_new_multiply(l,r) ffebld_new_two(FFEBLD_opMULTIPLY,(l),(r))
961 #define ffebld_new_divide(l,r) ffebld_new_two(FFEBLD_opDIVIDE,(l),(r))
962 #define ffebld_new_power(l,r) ffebld_new_two(FFEBLD_opPOWER,(l),(r))
963 #define ffebld_new_bounds(l,r) ffebld_new_two(FFEBLD_opBOUNDS,(l),(r))
964 #define ffebld_new_concatenate(l,r) ffebld_new_two(FFEBLD_opCONCATENATE,(l),(r))
965 #define ffebld_new_not(l) ffebld_new_one(FFEBLD_opNOT,(l))
966 #define ffebld_new_lt(l,r) ffebld_new_two(FFEBLD_opLT,(l),(r))
967 #define ffebld_new_le(l,r) ffebld_new_two(FFEBLD_opLE,(l),(r))
968 #define ffebld_new_eq(l,r) ffebld_new_two(FFEBLD_opEQ,(l),(r))
969 #define ffebld_new_ne(l,r) ffebld_new_two(FFEBLD_opNE,(l),(r))
970 #define ffebld_new_gt(l,r) ffebld_new_two(FFEBLD_opGT,(l),(r))
971 #define ffebld_new_ge(l,r) ffebld_new_two(FFEBLD_opGE,(l),(r))
972 #define ffebld_new_and(l,r) ffebld_new_two(FFEBLD_opAND,(l),(r))
973 #define ffebld_new_or(l,r) ffebld_new_two(FFEBLD_opOR,(l),(r))
974 #define ffebld_new_xor(l,r) ffebld_new_two(FFEBLD_opXOR,(l),(r))
975 #define ffebld_new_eqv(l,r) ffebld_new_two(FFEBLD_opEQV,(l),(r))
976 #define ffebld_new_neqv(l,r) ffebld_new_two(FFEBLD_opNEQV,(l),(r))
977 #define ffebld_new_paren(l) ffebld_new_one(FFEBLD_opPAREN,(l))
978 #define ffebld_new_repeat(l,r) ffebld_new_two(FFEBLD_opREPEAT,(l),(r))
979 #define ffebld_new_percent_descr(l) ffebld_new_one(FFEBLD_opPERCENT_DESCR,(l))
980 #define ffebld_new_percent_loc(l) ffebld_new_one(FFEBLD_opPERCENT_LOC,(l))
981 #define ffebld_new_percent_ref(l) ffebld_new_one(FFEBLD_opPERCENT_REF,(l))
982 #define ffebld_new_percent_val(l) ffebld_new_one(FFEBLD_opPERCENT_VAL,(l))
983 #define ffebld_new_complex(l,r) ffebld_new_two(FFEBLD_opCOMPLEX,(l),(r))
984 #define ffebld_new_convert(l) ffebld_new_one(FFEBLD_opCONVERT,(l))
985 #define ffebld_new_funcref(l,r) ffebld_new_two(FFEBLD_opFUNCREF,(l),(r))
986 #define ffebld_new_subrref(l,r) ffebld_new_two(FFEBLD_opSUBRREF,(l),(r))
987 #define ffebld_new_arrayref(l,r) ffebld_new_two(FFEBLD_opARRAYREF,(l),(r))
988 #define ffebld_new_substr(l,r) ffebld_new_two(FFEBLD_opSUBSTR,(l),(r))
989 #define ffebld_new_impdo(l,r) ffebld_new_two(FFEBLD_opIMPDO,(l),(r))
990 #define ffebld_op(b) ((b)->op)
991 #define ffebld_pool() (ffebld_pool_stack_.pool)
992 #define ffebld_right(b) ((b)->u.nonter.right)
993 #define ffebld_set_accter(b,a) ((b)->u.accter.array = (a))
994 #define ffebld_set_arrter(b,a) ((b)->u.arrter.array = (a))
995 #define ffebld_set_conter(b,c) ((b)->u.conter.expr = (c))
996 #define ffebld_set_info(b,i) ((b)->info = (i))
997 #define ffebld_set_labter(b,l) ((b)->u.labter = (l))
998 #define ffebld_set_op(b,o) ((b)->op = (o))
999 #define ffebld_set_head(b,h) ((b)->u.item.head = (h))
1000 #define ffebld_set_left(b,l) ((b)->u.nonter.left = (l))
1001 #define ffebld_set_right(b,r) ((b)->u.nonter.right = (r))
1002 #define ffebld_set_trail(b,t) ((b)->u.item.trail = (t))
1003 #define ffebld_size(b) (ffeinfo_size((b)->info))
1004 #define ffebld_size_known(b) ffebld_size(b)
1005 #define ffebld_symter(b) ((b)->u.symter.symbol)
1006 #define ffebld_symter_generic(b) ((b)->u.symter.generic)
1007 #define ffebld_symter_doiter(b) ((b)->u.symter.do_iter)
1008 #define ffebld_symter_implementation(b) ((b)->u.symter.implementation)
1009 #define ffebld_symter_specific(b) ((b)->u.symter.specific)
1010 #define ffebld_symter_set_generic(b,g) ((b)->u.symter.generic = (g))
1011 #define ffebld_symter_set_implementation(b,i) \
1012   ((b)->u.symter.implementation = (i))
1013 #define ffebld_symter_set_is_doiter(b,f) ((b)->u.symter.do_iter = (f))
1014 #define ffebld_symter_set_specific(b,s) ((b)->u.symter.specific = (s))
1015 #define ffebld_terminate_0()
1016 #define ffebld_terminate_1()
1017 #define ffebld_terminate_2()
1018 #define ffebld_terminate_3()
1019 #define ffebld_terminate_4()
1020 #define ffebld_trail(b) ((b)->u.item.trail)
1021
1022 /* End of #include file. */
1023
1024 #endif