- Update GCC to version 3.4.3.
[dragonfly.git] / contrib / gcc-3.4 / gcc / f / bld.h
1 /* bld.h -- Public #include File (module.h template V1.0)
2    Copyright (C) 1995, 1996, 2003 Free Software Foundation, Inc.
3    Contributed by James Craig Burley.
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 GCC_F_BLD_H
31 #define GCC_F_BLD_H
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 #define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstFILE_
128
129 /* Structure definitions. */
130
131 #define FFEBLD_constINTEGERDEFAULT FFEBLD_constINTEGER1
132 #define FFEBLD_constLOGICALDEFAULT FFEBLD_constLOGICAL1
133 #define FFEBLD_constREALDEFAULT FFEBLD_constREAL1
134 #define FFEBLD_constREALDOUBLE FFEBLD_constREAL2
135 #define FFEBLD_constREALQUAD FFEBLD_constREAL3
136 #define FFEBLD_constCOMPLEX FFEBLD_constCOMPLEX1
137 #define FFEBLD_constCOMPLEXDOUBLE FFEBLD_constCOMPLEX2
138 #define FFEBLD_constCOMPLEXQUAD FFEBLD_constCOMPLEX3
139 #define FFEBLD_constCHARACTERDEFAULT FFEBLD_constCHARACTER1
140
141 union _ffebld_constant_union_
142   {
143     ffetargetTypeless typeless;
144     ffetargetHollerith hollerith;
145 #if FFETARGET_okINTEGER1
146     ffetargetInteger1 integer1;
147 #endif
148 #if FFETARGET_okINTEGER2
149     ffetargetInteger2 integer2;
150 #endif
151 #if FFETARGET_okINTEGER3
152     ffetargetInteger3 integer3;
153 #endif
154 #if FFETARGET_okINTEGER4
155     ffetargetInteger4 integer4;
156 #endif
157 #if FFETARGET_okLOGICAL1
158     ffetargetLogical1 logical1;
159 #endif
160 #if FFETARGET_okLOGICAL2
161     ffetargetLogical2 logical2;
162 #endif
163 #if FFETARGET_okLOGICAL3
164     ffetargetLogical3 logical3;
165 #endif
166 #if FFETARGET_okLOGICAL4
167     ffetargetLogical4 logical4;
168 #endif
169 #if FFETARGET_okREAL1
170     ffetargetReal1 real1;
171 #endif
172 #if FFETARGET_okREAL2
173     ffetargetReal2 real2;
174 #endif
175 #if FFETARGET_okREAL3
176     ffetargetReal3 real3;
177 #endif
178 #if FFETARGET_okCOMPLEX1
179     ffetargetComplex1 complex1;
180 #endif
181 #if FFETARGET_okCOMPLEX2
182     ffetargetComplex2 complex2;
183 #endif
184 #if FFETARGET_okCOMPLEX3
185     ffetargetComplex3 complex3;
186 #endif
187 #if FFETARGET_okCHARACTER1
188     ffetargetCharacter1 character1;
189 #endif
190   };
191
192 union _ffebld_constant_array_
193   {
194 #if FFETARGET_okINTEGER1
195     ffetargetInteger1 *integer1;
196 #endif
197 #if FFETARGET_okINTEGER2
198     ffetargetInteger2 *integer2;
199 #endif
200 #if FFETARGET_okINTEGER3
201     ffetargetInteger3 *integer3;
202 #endif
203 #if FFETARGET_okINTEGER4
204     ffetargetInteger4 *integer4;
205 #endif
206 #if FFETARGET_okLOGICAL1
207     ffetargetLogical1 *logical1;
208 #endif
209 #if FFETARGET_okLOGICAL2
210     ffetargetLogical2 *logical2;
211 #endif
212 #if FFETARGET_okLOGICAL3
213     ffetargetLogical3 *logical3;
214 #endif
215 #if FFETARGET_okLOGICAL4
216     ffetargetLogical4 *logical4;
217 #endif
218 #if FFETARGET_okREAL1
219     ffetargetReal1 *real1;
220 #endif
221 #if FFETARGET_okREAL2
222     ffetargetReal2 *real2;
223 #endif
224 #if FFETARGET_okREAL3
225     ffetargetReal3 *real3;
226 #endif
227 #if FFETARGET_okCOMPLEX1
228     ffetargetComplex1 *complex1;
229 #endif
230 #if FFETARGET_okCOMPLEX2
231     ffetargetComplex2 *complex2;
232 #endif
233 #if FFETARGET_okCOMPLEX3
234     ffetargetComplex3 *complex3;
235 #endif
236 #if FFETARGET_okCHARACTER1
237     ffetargetCharacterUnit1 *character1;
238 #endif
239   };
240
241 struct _ffebld_
242   {
243     ffebldOp op;
244     ffeinfo info;               /* Not used or valid for
245                                    op=={STAR,ITEM,BOUNDS,REPEAT,LABTER,
246                                    LABTOK,IMPDO}. */
247     union
248       {
249         struct
250           {
251             ffebld left;
252             ffebld right;
253             ffecomNonter hook;  /* Whatever the compiler/backend wants! */
254           }
255         nonter;
256         struct
257           {
258             ffebld head;
259             ffebld trail;
260           }
261         item;
262         struct
263           {
264             ffebldConstant expr;
265             ffebld orig;        /* Original expression, or NULL if none. */
266             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
267           }
268         conter;
269         struct
270           {
271             ffebldConstantArray array;
272             ffetargetOffset size;
273             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
274           }
275         arrter;
276         struct
277           {
278             ffebldConstantArray array;
279             ffebit bits;
280             ffetargetAlign pad; /* Initial padding (for DATA, etc.). */
281           }
282         accter;
283         struct
284           {
285             ffesymbol symbol;
286             ffeintrinGen generic;       /* Id for generic intrinsic. */
287             ffeintrinSpec specific;     /* Id for specific intrinsic. */
288             ffeintrinImp implementation;        /* Id for implementation. */
289             bool do_iter;       /* TRUE if this ref is a read-only ref by
290                                    definition (ref within DO loop using this
291                                    var as iterator). */
292           }
293         symter;
294         ffelab labter;
295         ffelexToken labtok;
296       }
297     u;
298   };
299
300 struct _ffebld_constant_
301   {
302     ffebldConstant rlink;
303     ffebldConstant llink;
304     ffebldConstant first_complex;       /* First complex const with me as
305                                            real. */
306     ffebldConst consttype;
307     ffecomConstant hook;        /* Whatever the compiler/backend wants! */
308     bool numeric;               /* A numeric kind of constant. */
309     ffebldConstantUnion u;
310   };
311
312 struct _ffebld_pool_stack_
313   {
314     ffebldPoolstack_ next;
315     mallocPool pool;
316   };
317
318 /* Global objects accessed by users of this module. */
319
320 extern const ffebldArity ffebld_arity_op_[(int) FFEBLD_op];
321 extern struct _ffebld_pool_stack_ ffebld_pool_stack_;
322
323 /* Declare functions with prototypes. */
324
325 int ffebld_constant_cmp (ffebldConstant c1, ffebldConstant c2);
326 bool ffebld_constant_is_magical (ffebldConstant c);
327 bool ffebld_constant_is_zero (ffebldConstant c);
328 #if FFETARGET_okCHARACTER1
329 ffebldConstant ffebld_constant_new_character1 (ffelexToken t);
330 ffebldConstant ffebld_constant_new_character1_val (ffetargetCharacter1 val);
331 #endif
332 #if FFETARGET_okCOMPLEX1
333 ffebldConstant ffebld_constant_new_complex1 (ffebldConstant real,
334                                              ffebldConstant imaginary);
335 ffebldConstant ffebld_constant_new_complex1_val (ffetargetComplex1 val);
336 #endif
337 #if FFETARGET_okCOMPLEX2
338 ffebldConstant ffebld_constant_new_complex2 (ffebldConstant real,
339                                              ffebldConstant imaginary);
340 ffebldConstant ffebld_constant_new_complex2_val (ffetargetComplex2 val);
341 #endif
342 #if FFETARGET_okCOMPLEX3
343 ffebldConstant ffebld_constant_new_complex3 (ffebldConstant real,
344                                              ffebldConstant imaginary);
345 ffebldConstant ffebld_constant_new_complex3_val (ffetargetComplex3 val);
346 #endif
347 ffebldConstant ffebld_constant_new_hollerith (ffelexToken t);
348 ffebldConstant ffebld_constant_new_hollerith_val (ffetargetHollerith val);
349 #if FFETARGET_okINTEGER1
350 ffebldConstant ffebld_constant_new_integer1 (ffelexToken t);
351 ffebldConstant ffebld_constant_new_integer1_val (ffetargetInteger1 val);
352 #endif
353 #if FFETARGET_okINTEGER2
354 ffebldConstant ffebld_constant_new_integer2 (ffelexToken t);
355 ffebldConstant ffebld_constant_new_integer2_val (ffetargetInteger2 val);
356 #endif
357 #if FFETARGET_okINTEGER3
358 ffebldConstant ffebld_constant_new_integer3 (ffelexToken t);
359 ffebldConstant ffebld_constant_new_integer3_val (ffetargetInteger3 val);
360 #endif
361 #if FFETARGET_okINTEGER4
362 ffebldConstant ffebld_constant_new_integer4 (ffelexToken t);
363 ffebldConstant ffebld_constant_new_integer4_val (ffetargetInteger4 val);
364 #endif
365 ffebldConstant ffebld_constant_new_integerbinary (ffelexToken t);
366 ffebldConstant ffebld_constant_new_integerhex (ffelexToken t);
367 ffebldConstant ffebld_constant_new_integeroctal (ffelexToken t);
368 #if FFETARGET_okLOGICAL1
369 ffebldConstant ffebld_constant_new_logical1 (bool truth);
370 ffebldConstant ffebld_constant_new_logical1_val (ffetargetLogical1 val);
371 #endif
372 #if FFETARGET_okLOGICAL2
373 ffebldConstant ffebld_constant_new_logical2 (bool truth);
374 ffebldConstant ffebld_constant_new_logical2_val (ffetargetLogical2 val);
375 #endif
376 #if FFETARGET_okLOGICAL3
377 ffebldConstant ffebld_constant_new_logical3 (bool truth);
378 ffebldConstant ffebld_constant_new_logical3_val (ffetargetLogical3 val);
379 #endif
380 #if FFETARGET_okLOGICAL4
381 ffebldConstant ffebld_constant_new_logical4 (bool truth);
382 ffebldConstant ffebld_constant_new_logical4_val (ffetargetLogical4 val);
383 #endif
384 #if FFETARGET_okREAL1
385 ffebldConstant ffebld_constant_new_real1 (ffelexToken integer,
386             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
387                     ffelexToken exponent_sign, ffelexToken exponent_digits);
388 ffebldConstant ffebld_constant_new_real1_val (ffetargetReal1 val);
389 #endif
390 #if FFETARGET_okREAL2
391 ffebldConstant ffebld_constant_new_real2 (ffelexToken integer,
392             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
393                     ffelexToken exponent_sign, ffelexToken exponent_digits);
394 ffebldConstant ffebld_constant_new_real2_val (ffetargetReal2 val);
395 #endif
396 #if FFETARGET_okREAL3
397 ffebldConstant ffebld_constant_new_real3 (ffelexToken integer,
398             ffelexToken decimal, ffelexToken fraction, ffelexToken exponent,
399                     ffelexToken exponent_sign, ffelexToken exponent_digits);
400 ffebldConstant ffebld_constant_new_real3_val (ffetargetReal3 val);
401 #endif
402 ffebldConstant ffebld_constant_new_typeless_bm (ffelexToken t);
403 ffebldConstant ffebld_constant_new_typeless_bv (ffelexToken t);
404 ffebldConstant ffebld_constant_new_typeless_hxm (ffelexToken t);
405 ffebldConstant ffebld_constant_new_typeless_hxv (ffelexToken t);
406 ffebldConstant ffebld_constant_new_typeless_hzm (ffelexToken t);
407 ffebldConstant ffebld_constant_new_typeless_hzv (ffelexToken t);
408 ffebldConstant ffebld_constant_new_typeless_om (ffelexToken t);
409 ffebldConstant ffebld_constant_new_typeless_ov (ffelexToken t);
410 ffebldConstant ffebld_constant_new_typeless_val (ffebldConst type,
411                                                  ffetargetTypeless val);
412 ffebldConstant ffebld_constant_negated (ffebldConstant c);
413 ffebldConstantUnion ffebld_constantarray_get (ffebldConstantArray array,
414            ffeinfoBasictype bt, ffeinfoKindtype kt, ffetargetOffset offset);
415 void ffebld_constantarray_kill (ffebldConstantArray array, ffeinfoBasictype bt,
416                                 ffeinfoKindtype kt, ffetargetOffset size);
417 ffebldConstantArray ffebld_constantarray_new (ffeinfoBasictype bt,
418                                   ffeinfoKindtype kt, ffetargetOffset size);
419 void ffebld_constantarray_prepare (void **aptr, void **cptr, size_t *size,
420        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
421                       ffetargetOffset offset, ffebldConstantUnion *constant,
422                                  ffeinfoBasictype cbt, ffeinfoKindtype ckt);
423 void ffebld_constantarray_preparray (void **aptr, void **cptr, size_t *size,
424        ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt,
425                    ffetargetOffset offset, ffebldConstantArray source_array,
426                                  ffeinfoBasictype cbt, ffeinfoKindtype ckt);
427 void ffebld_constantarray_put (ffebldConstantArray array, ffeinfoBasictype bt,
428   ffeinfoKindtype kt, ffetargetOffset offset, ffebldConstantUnion constant);
429 void ffebld_init_0 (void);
430 void ffebld_init_1 (void);
431 void ffebld_init_2 (void);
432 ffebldListLength ffebld_list_length (ffebld l);
433 ffebld ffebld_new_accter (ffebldConstantArray array, ffebit b);
434 ffebld ffebld_new_arrter (ffebldConstantArray array, ffetargetOffset size);
435 ffebld ffebld_new_conter_with_orig (ffebldConstant c, ffebld orig);
436 ffebld ffebld_new_item (ffebld head, ffebld trail);
437 ffebld ffebld_new_labter (ffelab l);
438 ffebld ffebld_new_labtok (ffelexToken t);
439 ffebld ffebld_new_none (ffebldOp o);
440 ffebld ffebld_new_symter (ffesymbol s, ffeintrinGen gen, ffeintrinSpec spec,
441                           ffeintrinImp imp);
442 ffebld ffebld_new_one (ffebldOp o, ffebld left);
443 ffebld ffebld_new_two (ffebldOp o, ffebld left, ffebld right);
444 const char *ffebld_op_string (ffebldOp o);
445 void ffebld_pool_pop (void);
446 void ffebld_pool_push (mallocPool pool);
447 ffetargetCharacterSize ffebld_size_max (ffebld b);
448
449 /* Define macros. */
450
451 #define ffebld_accter(b) ((b)->u.accter.array)
452 #define ffebld_accter_bits(b) ((b)->u.accter.bits)
453 #define ffebld_accter_pad(b) ((b)->u.accter.pad)
454 #define ffebld_accter_set_bits(b,bt) ((b)->u.accter.bits = (bt))
455 #define ffebld_accter_set_pad(b,p) ((b)->u.accter.pad = (p))
456 #define ffebld_accter_size(b) ffebit_size((b)->u.accter.bits)
457 #define ffebld_append_item(b,i) (**(b) = ffebld_new_item((i),NULL),           \
458                                  *(b) = &((**(b))->u.item.trail))
459 #define ffebld_arity(b) ffebld_arity_op(ffebld_op(b))
460 #define ffebld_arity_op(o) (ffebld_arity_op_[o])
461 #define ffebld_arrter(b) ((b)->u.arrter.array)
462 #define ffebld_arrter_pad(b) ((b)->u.arrter.pad)
463 #define ffebld_arrter_set_pad(b,p) ((b)->u.arrter.pad = (p))
464 #define ffebld_arrter_set_size(b,s) ((b)->u.arrter.size = (s))
465 #define ffebld_arrter_size(b) ((b)->u.arrter.size)
466 #define ffebld_basictype(b) (ffeinfo_basictype (ffebld_info ((b))))
467 #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_
468 #define ffebld_constant_pool() ffe_pool_program_unit()
469 #elif FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstFILE_
470 #define ffebld_constant_pool() ffe_pool_file()
471 #else
472 #error
473 #endif
474 #define ffebld_constant_character1(c) ((c)->u.character1)
475 #define ffebld_constant_character2(c) ((c)->u.character2)
476 #define ffebld_constant_character3(c) ((c)->u.character3)
477 #define ffebld_constant_character4(c) ((c)->u.character4)
478 #define ffebld_constant_character5(c) ((c)->u.character5)
479 #define ffebld_constant_character6(c) ((c)->u.character6)
480 #define ffebld_constant_character7(c) ((c)->u.character7)
481 #define ffebld_constant_character8(c) ((c)->u.character8)
482 #define ffebld_constant_characterdefault ffebld_constant_character1
483 #define ffebld_constant_complex1(c) ((c)->u.complex1)
484 #define ffebld_constant_complex2(c) ((c)->u.complex2)
485 #define ffebld_constant_complex3(c) ((c)->u.complex3)
486 #define ffebld_constant_complex4(c) ((c)->u.complex4)
487 #define ffebld_constant_complex5(c) ((c)->u.complex5)
488 #define ffebld_constant_complex6(c) ((c)->u.complex6)
489 #define ffebld_constant_complex7(c) ((c)->u.complex7)
490 #define ffebld_constant_complex8(c) ((c)->u.complex8)
491 #define ffebld_constant_complexdefault ffebld_constant_complex1
492 #define ffebld_constant_complexdouble ffebld_constant_complex2
493 #define ffebld_constant_complexquad ffebld_constant_complex3
494 #define ffebld_constant_copy(c) (c)
495 #define ffebld_constant_hollerith(c) ((c)->u.hollerith)
496 #define ffebld_constant_hook(c) ((c)->hook)
497 #define ffebld_constant_integer1(c) ((c)->u.integer1)
498 #define ffebld_constant_integer2(c) ((c)->u.integer2)
499 #define ffebld_constant_integer3(c) ((c)->u.integer3)
500 #define ffebld_constant_integer4(c) ((c)->u.integer4)
501 #define ffebld_constant_integer5(c) ((c)->u.integer5)
502 #define ffebld_constant_integer6(c) ((c)->u.integer6)
503 #define ffebld_constant_integer7(c) ((c)->u.integer7)
504 #define ffebld_constant_integer8(c) ((c)->u.integer8)
505 #define ffebld_constant_integerdefault ffebld_constant_integer1
506 #define ffebld_constant_is_numeric(c) ((c)->numeric)
507 #define ffebld_constant_logical1(c) ((c)->u.logical1)
508 #define ffebld_constant_logical2(c) ((c)->u.logical2)
509 #define ffebld_constant_logical3(c) ((c)->u.logical3)
510 #define ffebld_constant_logical4(c) ((c)->u.logical4)
511 #define ffebld_constant_logical5(c) ((c)->u.logical5)
512 #define ffebld_constant_logical6(c) ((c)->u.logical6)
513 #define ffebld_constant_logical7(c) ((c)->u.logical7)
514 #define ffebld_constant_logical8(c) ((c)->u.logical8)
515 #define ffebld_constant_logicaldefault ffebld_constant_logical1
516 #define ffebld_constant_new_characterdefault ffebld_constant_new_character1
517 #define ffebld_constant_new_characterdefault_val ffebld_constant_new_character1_val
518 #define ffebld_constant_new_complexdefault ffebld_constant_new_complex1
519 #define ffebld_constant_new_complexdefault_val ffebld_constant_new_complex1_val
520 #define ffebld_constant_new_complexdouble ffebld_constant_new_complex2
521 #define ffebld_constant_new_complexdouble_val ffebld_constant_new_complex2_val
522 #define ffebld_constant_new_complexquad ffebld_constant_new_complex3
523 #define ffebld_constant_new_complexquad_valffebld_constant_new_complex3_val
524 #define ffebld_constant_new_integerdefault ffebld_constant_new_integer1
525 #define ffebld_constant_new_integerdefault_val ffebld_constant_new_integer1_val
526 #define ffebld_constant_new_logicaldefault ffebld_constant_new_logical1
527 #define ffebld_constant_new_logicaldefault_val ffebld_constant_new_logical1_val
528 #define ffebld_constant_new_realdefault ffebld_constant_new_real1
529 #define ffebld_constant_new_realdefault_val ffebld_constant_new_real1_val
530 #define ffebld_constant_new_realdouble ffebld_constant_new_real2
531 #define ffebld_constant_new_realdouble_val ffebld_constant_new_real2_val
532 #define ffebld_constant_new_realquad ffebld_constant_new_real3
533 #define ffebld_constant_new_realquad_val ffebld_constant_new_real3_val
534 #define ffebld_constant_ptr_to_union(c) (&(c)->u)
535 #define ffebld_constant_real1(c) ((c)->u.real1)
536 #define ffebld_constant_real2(c) ((c)->u.real2)
537 #define ffebld_constant_real3(c) ((c)->u.real3)
538 #define ffebld_constant_real4(c) ((c)->u.real4)
539 #define ffebld_constant_real5(c) ((c)->u.real5)
540 #define ffebld_constant_real6(c) ((c)->u.real6)
541 #define ffebld_constant_real7(c) ((c)->u.real7)
542 #define ffebld_constant_real8(c) ((c)->u.real8)
543 #define ffebld_constant_realdefault ffebld_constant_real1
544 #define ffebld_constant_realdouble ffebld_constant_real2
545 #define ffebld_constant_realquad ffebld_constant_real3
546 #define ffebld_constant_set_hook(c,h) ((c)->hook = (h))
547 #define ffebld_constant_set_union(c,un) ((c)->u = (un))
548 #define ffebld_constant_type(c) ((c)->consttype)
549 #define ffebld_constant_typeless(c) ((c)->u.typeless)
550 #define ffebld_constant_union(c) ((c)->u)
551 #define ffebld_conter(b) ((b)->u.conter.expr)
552 #define ffebld_conter_orig(b) ((b)->u.conter.orig)
553 #define ffebld_conter_pad(b) ((b)->u.conter.pad)
554 #define ffebld_conter_set_orig(b,o) ((b)->u.conter.orig = (o))
555 #define ffebld_conter_set_pad(b,p) ((b)->u.conter.pad = (p))
556 #define ffebld_copy(b) (b)      /* ~~~Someday really make a copy. */
557 #define ffebld_cu_ptr_typeless(u) &(u).typeless
558 #define ffebld_cu_ptr_hollerith(u) &(u).hollerith
559 #define ffebld_cu_ptr_integer1(u) &(u).integer1
560 #define ffebld_cu_ptr_integer2(u) &(u).integer2
561 #define ffebld_cu_ptr_integer3(u) &(u).integer3
562 #define ffebld_cu_ptr_integer4(u) &(u).integer4
563 #define ffebld_cu_ptr_integer5(u) &(u).integer5
564 #define ffebld_cu_ptr_integer6(u) &(u).integer6
565 #define ffebld_cu_ptr_integer7(u) &(u).integer7
566 #define ffebld_cu_ptr_integer8(u) &(u).integer8
567 #define ffebld_cu_ptr_integerdefault ffebld_cu_ptr_integer1
568 #define ffebld_cu_ptr_logical1(u) &(u).logical1
569 #define ffebld_cu_ptr_logical2(u) &(u).logical2
570 #define ffebld_cu_ptr_logical3(u) &(u).logical3
571 #define ffebld_cu_ptr_logical4(u) &(u).logical4
572 #define ffebld_cu_ptr_logical5(u) &(u).logical5
573 #define ffebld_cu_ptr_logical6(u) &(u).logical6
574 #define ffebld_cu_ptr_logical7(u) &(u).logical7
575 #define ffebld_cu_ptr_logical8(u) &(u).logical8
576 #define ffebld_cu_ptr_logicaldefault ffebld_cu_ptr_logical1
577 #define ffebld_cu_ptr_real1(u) &(u).real1
578 #define ffebld_cu_ptr_real2(u) &(u).real2
579 #define ffebld_cu_ptr_real3(u) &(u).real3
580 #define ffebld_cu_ptr_real4(u) &(u).real4
581 #define ffebld_cu_ptr_real5(u) &(u).real5
582 #define ffebld_cu_ptr_real6(u) &(u).real6
583 #define ffebld_cu_ptr_real7(u) &(u).real7
584 #define ffebld_cu_ptr_real8(u) &(u).real8
585 #define ffebld_cu_ptr_realdefault ffebld_cu_ptr_real1
586 #define ffebld_cu_ptr_realdouble ffebld_cu_ptr_real2
587 #define ffebld_cu_ptr_realquad ffebld_cu_ptr_real3
588 #define ffebld_cu_ptr_complex1(u) &(u).complex1
589 #define ffebld_cu_ptr_complex2(u) &(u).complex2
590 #define ffebld_cu_ptr_complex3(u) &(u).complex3
591 #define ffebld_cu_ptr_complex4(u) &(u).complex4
592 #define ffebld_cu_ptr_complex5(u) &(u).complex5
593 #define ffebld_cu_ptr_complex6(u) &(u).complex6
594 #define ffebld_cu_ptr_complex7(u) &(u).complex7
595 #define ffebld_cu_ptr_complex8(u) &(u).complex8
596 #define ffebld_cu_ptr_complexdefault ffebld_cu_ptr_complex1
597 #define ffebld_cu_ptr_complexdouble ffebld_cu_ptr_complex2
598 #define ffebld_cu_ptr_complexquad ffebld_cu_ptr_complex3
599 #define ffebld_cu_ptr_character1(u) &(u).character1
600 #define ffebld_cu_ptr_character2(u) &(u).character2
601 #define ffebld_cu_ptr_character3(u) &(u).character3
602 #define ffebld_cu_ptr_character4(u) &(u).character4
603 #define ffebld_cu_ptr_character5(u) &(u).character5
604 #define ffebld_cu_ptr_character6(u) &(u).character6
605 #define ffebld_cu_ptr_character7(u) &(u).character7
606 #define ffebld_cu_ptr_character8(u) &(u).character8
607 #define ffebld_cu_val_typeless(u) (u).typeless
608 #define ffebld_cu_val_hollerith(u) (u).hollerith
609 #define ffebld_cu_val_integer1(u) (u).integer1
610 #define ffebld_cu_val_integer2(u) (u).integer2
611 #define ffebld_cu_val_integer3(u) (u).integer3
612 #define ffebld_cu_val_integer4(u) (u).integer4
613 #define ffebld_cu_val_integer5(u) (u).integer5
614 #define ffebld_cu_val_integer6(u) (u).integer6
615 #define ffebld_cu_val_integer7(u) (u).integer7
616 #define ffebld_cu_val_integer8(u) (u).integer8
617 #define ffebld_cu_val_integerdefault ffebld_cu_val_integer1
618 #define ffebld_cu_val_logical1(u) (u).logical1
619 #define ffebld_cu_val_logical2(u) (u).logical2
620 #define ffebld_cu_val_logical3(u) (u).logical3
621 #define ffebld_cu_val_logical4(u) (u).logical4
622 #define ffebld_cu_val_logical5(u) (u).logical5
623 #define ffebld_cu_val_logical6(u) (u).logical6
624 #define ffebld_cu_val_logical7(u) (u).logical7
625 #define ffebld_cu_val_logical8(u) (u).logical8
626 #define ffebld_cu_val_logicaldefault ffebld_cu_val_logical
627 #define ffebld_cu_val_real1(u) (u).real1
628 #define ffebld_cu_val_real2(u) (u).real2
629 #define ffebld_cu_val_real3(u) (u).real3
630 #define ffebld_cu_val_real4(u) (u).real4
631 #define ffebld_cu_val_real5(u) (u).real5
632 #define ffebld_cu_val_real6(u) (u).real6
633 #define ffebld_cu_val_real7(u) (u).real7
634 #define ffebld_cu_val_real8(u) (u).real8
635 #define ffebld_cu_val_realdefault ffebld_cu_val_real1
636 #define ffebld_cu_val_realdouble ffebld_cu_val_real2
637 #define ffebld_cu_val_realquad ffebld_cu_val_real3
638 #define ffebld_cu_val_complex1(u) (u).complex1
639 #define ffebld_cu_val_complex2(u) (u).complex2
640 #define ffebld_cu_val_complex3(u) (u).complex3
641 #define ffebld_cu_val_complex4(u) (u).complex4
642 #define ffebld_cu_val_complex5(u) (u).complex5
643 #define ffebld_cu_val_complex6(u) (u).complex6
644 #define ffebld_cu_val_complex7(u) (u).complex7
645 #define ffebld_cu_val_complex8(u) (u).complex8
646 #define ffebld_cu_val_complexdefault ffebld_cu_val_complex1
647 #define ffebld_cu_val_complexdouble ffebld_cu_val_complex2
648 #define ffebld_cu_val_complexquad ffebld_cu_val_complex3
649 #define ffebld_cu_val_character1(u) (u).character1
650 #define ffebld_cu_val_character2(u) (u).character2
651 #define ffebld_cu_val_character3(u) (u).character3
652 #define ffebld_cu_val_character4(u) (u).character4
653 #define ffebld_cu_val_character5(u) (u).character5
654 #define ffebld_cu_val_character6(u) (u).character6
655 #define ffebld_cu_val_character7(u) (u).character7
656 #define ffebld_cu_val_character8(u) (u).character8
657 #define ffebld_end_list(b) (*(b) = NULL)
658 #define ffebld_head(b) ((b)->u.item.head)
659 #define ffebld_info(b) ((b)->info)
660 #define ffebld_init_3()
661 #define ffebld_init_4()
662 #define ffebld_init_list(l,b) (*(l) = NULL, *(b) = (l))
663 #define ffebld_item_hook(b) ((b)->u.item.hook)
664 #define ffebld_item_set_hook(b,h) ((b)->u.item.hook = (h))
665 #define ffebld_kind(b) (ffeinfo_kind (ffebld_info ((b))))
666 #define ffebld_kindtype(b) (ffeinfo_kindtype (ffebld_info ((b))))
667 #define ffebld_labter(b) ((b)->u.labter)
668 #define ffebld_labtok(b) ((b)->u.labtok)
669 #define ffebld_left(b) ((b)->u.nonter.left)
670 #define ffebld_name_string(n) ((n)->name)
671 #define ffebld_new()                                                          \
672   ((ffebld) malloc_new_kp(ffebld_pool(), "FFEBLD",sizeof(struct _ffebld_)))
673 #define ffebld_new_any() ffebld_new_none(FFEBLD_opANY)
674 #define ffebld_new_conter(c) ffebld_new_conter_with_orig((c),NULL)
675 #define ffebld_new_star() ffebld_new_none(FFEBLD_opSTAR)
676 #define ffebld_new_uplus(l) ffebld_new_one(FFEBLD_opUPLUS,(l))
677 #define ffebld_new_uminus(l) ffebld_new_one(FFEBLD_opUMINUS,(l))
678 #define ffebld_new_add(l,r) ffebld_new_two(FFEBLD_opADD,(l),(r))
679 #define ffebld_new_subtract(l,r) ffebld_new_two(FFEBLD_opSUBTRACT,(l),(r))
680 #define ffebld_new_multiply(l,r) ffebld_new_two(FFEBLD_opMULTIPLY,(l),(r))
681 #define ffebld_new_divide(l,r) ffebld_new_two(FFEBLD_opDIVIDE,(l),(r))
682 #define ffebld_new_power(l,r) ffebld_new_two(FFEBLD_opPOWER,(l),(r))
683 #define ffebld_new_bounds(l,r) ffebld_new_two(FFEBLD_opBOUNDS,(l),(r))
684 #define ffebld_new_concatenate(l,r) ffebld_new_two(FFEBLD_opCONCATENATE,(l),(r))
685 #define ffebld_new_not(l) ffebld_new_one(FFEBLD_opNOT,(l))
686 #define ffebld_new_lt(l,r) ffebld_new_two(FFEBLD_opLT,(l),(r))
687 #define ffebld_new_le(l,r) ffebld_new_two(FFEBLD_opLE,(l),(r))
688 #define ffebld_new_eq(l,r) ffebld_new_two(FFEBLD_opEQ,(l),(r))
689 #define ffebld_new_ne(l,r) ffebld_new_two(FFEBLD_opNE,(l),(r))
690 #define ffebld_new_gt(l,r) ffebld_new_two(FFEBLD_opGT,(l),(r))
691 #define ffebld_new_ge(l,r) ffebld_new_two(FFEBLD_opGE,(l),(r))
692 #define ffebld_new_and(l,r) ffebld_new_two(FFEBLD_opAND,(l),(r))
693 #define ffebld_new_or(l,r) ffebld_new_two(FFEBLD_opOR,(l),(r))
694 #define ffebld_new_xor(l,r) ffebld_new_two(FFEBLD_opXOR,(l),(r))
695 #define ffebld_new_eqv(l,r) ffebld_new_two(FFEBLD_opEQV,(l),(r))
696 #define ffebld_new_neqv(l,r) ffebld_new_two(FFEBLD_opNEQV,(l),(r))
697 #define ffebld_new_paren(l) ffebld_new_one(FFEBLD_opPAREN,(l))
698 #define ffebld_new_repeat(l,r) ffebld_new_two(FFEBLD_opREPEAT,(l),(r))
699 #define ffebld_new_percent_descr(l) ffebld_new_one(FFEBLD_opPERCENT_DESCR,(l))
700 #define ffebld_new_percent_loc(l) ffebld_new_one(FFEBLD_opPERCENT_LOC,(l))
701 #define ffebld_new_percent_ref(l) ffebld_new_one(FFEBLD_opPERCENT_REF,(l))
702 #define ffebld_new_percent_val(l) ffebld_new_one(FFEBLD_opPERCENT_VAL,(l))
703 #define ffebld_new_complex(l,r) ffebld_new_two(FFEBLD_opCOMPLEX,(l),(r))
704 #define ffebld_new_convert(l) ffebld_new_one(FFEBLD_opCONVERT,(l))
705 #define ffebld_new_funcref(l,r) ffebld_new_two(FFEBLD_opFUNCREF,(l),(r))
706 #define ffebld_new_subrref(l,r) ffebld_new_two(FFEBLD_opSUBRREF,(l),(r))
707 #define ffebld_new_arrayref(l,r) ffebld_new_two(FFEBLD_opARRAYREF,(l),(r))
708 #define ffebld_new_substr(l,r) ffebld_new_two(FFEBLD_opSUBSTR,(l),(r))
709 #define ffebld_new_impdo(l,r) ffebld_new_two(FFEBLD_opIMPDO,(l),(r))
710 #define ffebld_nonter_hook(b) ((b)->u.nonter.hook)
711 #define ffebld_nonter_set_hook(b,h) ((b)->u.nonter.hook = (h))
712 #define ffebld_op(b) ((b)->op)
713 #define ffebld_pool() (ffebld_pool_stack_.pool)
714 #define ffebld_rank(b) (ffeinfo_rank (ffebld_info ((b))))
715 #define ffebld_right(b) ((b)->u.nonter.right)
716 #define ffebld_set_accter(b,a) ((b)->u.accter.array = (a))
717 #define ffebld_set_arrter(b,a) ((b)->u.arrter.array = (a))
718 #define ffebld_set_conter(b,c) ((b)->u.conter.expr = (c))
719 #define ffebld_set_info(b,i) ((b)->info = (i))
720 #define ffebld_set_labter(b,l) ((b)->u.labter = (l))
721 #define ffebld_set_op(b,o) ((b)->op = (o))
722 #define ffebld_set_head(b,h) ((b)->u.item.head = (h))
723 #define ffebld_set_left(b,l) ((b)->u.nonter.left = (l))
724 #define ffebld_set_right(b,r) ((b)->u.nonter.right = (r))
725 #define ffebld_set_trail(b,t) ((b)->u.item.trail = (t))
726 #define ffebld_size(b) (ffeinfo_size (ffebld_info ((b))))
727 #define ffebld_size_known(b) ffebld_size((b))
728 #define ffebld_symter(b) ((b)->u.symter.symbol)
729 #define ffebld_symter_generic(b) ((b)->u.symter.generic)
730 #define ffebld_symter_doiter(b) ((b)->u.symter.do_iter)
731 #define ffebld_symter_implementation(b) ((b)->u.symter.implementation)
732 #define ffebld_symter_specific(b) ((b)->u.symter.specific)
733 #define ffebld_symter_set_generic(b,g) ((b)->u.symter.generic = (g))
734 #define ffebld_symter_set_implementation(b,i) \
735   ((b)->u.symter.implementation = (i))
736 #define ffebld_symter_set_is_doiter(b,f) ((b)->u.symter.do_iter = (f))
737 #define ffebld_symter_set_specific(b,s) ((b)->u.symter.specific = (s))
738 #define ffebld_terminate_0()
739 #define ffebld_terminate_1()
740 #define ffebld_terminate_2()
741 #define ffebld_terminate_3()
742 #define ffebld_terminate_4()
743 #define ffebld_trail(b) ((b)->u.item.trail)
744 #define ffebld_where(b) (ffeinfo_where (ffebld_info ((b))))
745
746 /* End of #include file. */
747
748 #endif /* ! GCC_F_BLD_H */