1 /* bld.c -- Implementation File (module.c template V1.0)
2 Copyright (C) 1995, 1996 Free Software Foundation, Inc.
3 Contributed by James Craig Burley.
5 This file is part of GNU Fortran.
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)
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.
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
26 The primary "output" of the FFE includes ffebld objects, which
27 connect expressions, operators, and operands together, along with
28 connecting lists of expressions together for argument or dimension
33 Change names of some things for consistency.
47 /* Externals defined here. */
49 const ffebldArity ffebld_arity_op_
[(int) FFEBLD_op
]
52 #define FFEBLD_OP(KWD,NAME,ARITY) ARITY,
56 struct _ffebld_pool_stack_ ffebld_pool_stack_
;
58 /* Simple definitions and enumerations. */
61 /* Internal typedefs. */
64 /* Private include files. */
67 /* Internal structure definitions. */
70 /* Static objects accessed by functions in this module. */
73 static struct _ffebld_ ffebld_blank_
77 {FFEINFO_basictypeNONE
, FFEINFO_kindtypeNONE
, 0, FFEINFO_kindNONE
,
78 FFEINFO_whereNONE
, FFETARGET_charactersizeNONE
},
82 #if FFETARGET_okCHARACTER1
83 static ffebldConstant ffebld_constant_character1_
;
85 #if FFETARGET_okCHARACTER2
86 static ffebldConstant ffebld_constant_character2_
;
88 #if FFETARGET_okCHARACTER3
89 static ffebldConstant ffebld_constant_character3_
;
91 #if FFETARGET_okCHARACTER4
92 static ffebldConstant ffebld_constant_character4_
;
94 #if FFETARGET_okCHARACTER5
95 static ffebldConstant ffebld_constant_character5_
;
97 #if FFETARGET_okCHARACTER6
98 static ffebldConstant ffebld_constant_character6_
;
100 #if FFETARGET_okCHARACTER7
101 static ffebldConstant ffebld_constant_character7_
;
103 #if FFETARGET_okCHARACTER8
104 static ffebldConstant ffebld_constant_character8_
;
106 #if FFETARGET_okCOMPLEX1
107 static ffebldConstant ffebld_constant_complex1_
;
109 #if FFETARGET_okCOMPLEX2
110 static ffebldConstant ffebld_constant_complex2_
;
112 #if FFETARGET_okCOMPLEX3
113 static ffebldConstant ffebld_constant_complex3_
;
115 #if FFETARGET_okCOMPLEX4
116 static ffebldConstant ffebld_constant_complex4_
;
118 #if FFETARGET_okCOMPLEX5
119 static ffebldConstant ffebld_constant_complex5_
;
121 #if FFETARGET_okCOMPLEX6
122 static ffebldConstant ffebld_constant_complex6_
;
124 #if FFETARGET_okCOMPLEX7
125 static ffebldConstant ffebld_constant_complex7_
;
127 #if FFETARGET_okCOMPLEX8
128 static ffebldConstant ffebld_constant_complex8_
;
130 #if FFETARGET_okINTEGER1
131 static ffebldConstant ffebld_constant_integer1_
;
133 #if FFETARGET_okINTEGER2
134 static ffebldConstant ffebld_constant_integer2_
;
136 #if FFETARGET_okINTEGER3
137 static ffebldConstant ffebld_constant_integer3_
;
139 #if FFETARGET_okINTEGER4
140 static ffebldConstant ffebld_constant_integer4_
;
142 #if FFETARGET_okINTEGER5
143 static ffebldConstant ffebld_constant_integer5_
;
145 #if FFETARGET_okINTEGER6
146 static ffebldConstant ffebld_constant_integer6_
;
148 #if FFETARGET_okINTEGER7
149 static ffebldConstant ffebld_constant_integer7_
;
151 #if FFETARGET_okINTEGER8
152 static ffebldConstant ffebld_constant_integer8_
;
154 #if FFETARGET_okLOGICAL1
155 static ffebldConstant ffebld_constant_logical1_
;
157 #if FFETARGET_okLOGICAL2
158 static ffebldConstant ffebld_constant_logical2_
;
160 #if FFETARGET_okLOGICAL3
161 static ffebldConstant ffebld_constant_logical3_
;
163 #if FFETARGET_okLOGICAL4
164 static ffebldConstant ffebld_constant_logical4_
;
166 #if FFETARGET_okLOGICAL5
167 static ffebldConstant ffebld_constant_logical5_
;
169 #if FFETARGET_okLOGICAL6
170 static ffebldConstant ffebld_constant_logical6_
;
172 #if FFETARGET_okLOGICAL7
173 static ffebldConstant ffebld_constant_logical7_
;
175 #if FFETARGET_okLOGICAL8
176 static ffebldConstant ffebld_constant_logical8_
;
178 #if FFETARGET_okREAL1
179 static ffebldConstant ffebld_constant_real1_
;
181 #if FFETARGET_okREAL2
182 static ffebldConstant ffebld_constant_real2_
;
184 #if FFETARGET_okREAL3
185 static ffebldConstant ffebld_constant_real3_
;
187 #if FFETARGET_okREAL4
188 static ffebldConstant ffebld_constant_real4_
;
190 #if FFETARGET_okREAL5
191 static ffebldConstant ffebld_constant_real5_
;
193 #if FFETARGET_okREAL6
194 static ffebldConstant ffebld_constant_real6_
;
196 #if FFETARGET_okREAL7
197 static ffebldConstant ffebld_constant_real7_
;
199 #if FFETARGET_okREAL8
200 static ffebldConstant ffebld_constant_real8_
;
202 static ffebldConstant ffebld_constant_hollerith_
;
203 static ffebldConstant ffebld_constant_typeless_
[FFEBLD_constTYPELESS_LAST
204 - FFEBLD_constTYPELESS_FIRST
+ 1];
206 static const char *const ffebld_op_string_
[]
209 #define FFEBLD_OP(KWD,NAME,ARITY) NAME,
210 #include "bld-op.def"
214 /* Static functions (internal). */
217 /* Internal macros. */
219 #define integerdefault_ CATX(integer,FFETARGET_ktINTEGERDEFAULT)
220 #define logicaldefault_ CATX(logical,FFETARGET_ktLOGICALDEFAULT)
221 #define realdefault_ CATX(real,FFETARGET_ktREALDEFAULT)
222 #define realdouble_ CATX(real,FFETARGET_ktREALDOUBLE)
223 #define realquad_ CATX(real,FFETARGET_ktREALQUAD)
225 /* ffebld_constant_cmp -- Compare two constants a la strcmp
227 ffebldConstant c1, c2;
228 if (ffebld_constant_cmp(c1,c2) == 0)
229 // they're equal, else they're not.
231 Returns -1 if c1 < c2, 0 if c1 == c2, +1 if c1 == c2. */
234 ffebld_constant_cmp (ffebldConstant c1
, ffebldConstant c2
)
239 assert (ffebld_constant_type (c1
) == ffebld_constant_type (c2
));
241 switch (ffebld_constant_type (c1
))
243 #if FFETARGET_okINTEGER1
244 case FFEBLD_constINTEGER1
:
245 return ffetarget_cmp_integer1 (ffebld_constant_integer1 (c1
),
246 ffebld_constant_integer1 (c2
));
249 #if FFETARGET_okINTEGER2
250 case FFEBLD_constINTEGER2
:
251 return ffetarget_cmp_integer2 (ffebld_constant_integer2 (c1
),
252 ffebld_constant_integer2 (c2
));
255 #if FFETARGET_okINTEGER3
256 case FFEBLD_constINTEGER3
:
257 return ffetarget_cmp_integer3 (ffebld_constant_integer3 (c1
),
258 ffebld_constant_integer3 (c2
));
261 #if FFETARGET_okINTEGER4
262 case FFEBLD_constINTEGER4
:
263 return ffetarget_cmp_integer4 (ffebld_constant_integer4 (c1
),
264 ffebld_constant_integer4 (c2
));
267 #if FFETARGET_okINTEGER5
268 case FFEBLD_constINTEGER5
:
269 return ffetarget_cmp_integer5 (ffebld_constant_integer5 (c1
),
270 ffebld_constant_integer5 (c2
));
273 #if FFETARGET_okINTEGER6
274 case FFEBLD_constINTEGER6
:
275 return ffetarget_cmp_integer6 (ffebld_constant_integer6 (c1
),
276 ffebld_constant_integer6 (c2
));
279 #if FFETARGET_okINTEGER7
280 case FFEBLD_constINTEGER7
:
281 return ffetarget_cmp_integer7 (ffebld_constant_integer7 (c1
),
282 ffebld_constant_integer7 (c2
));
285 #if FFETARGET_okINTEGER8
286 case FFEBLD_constINTEGER8
:
287 return ffetarget_cmp_integer8 (ffebld_constant_integer8 (c1
),
288 ffebld_constant_integer8 (c2
));
291 #if FFETARGET_okLOGICAL1
292 case FFEBLD_constLOGICAL1
:
293 return ffetarget_cmp_logical1 (ffebld_constant_logical1 (c1
),
294 ffebld_constant_logical1 (c2
));
297 #if FFETARGET_okLOGICAL2
298 case FFEBLD_constLOGICAL2
:
299 return ffetarget_cmp_logical2 (ffebld_constant_logical2 (c1
),
300 ffebld_constant_logical2 (c2
));
303 #if FFETARGET_okLOGICAL3
304 case FFEBLD_constLOGICAL3
:
305 return ffetarget_cmp_logical3 (ffebld_constant_logical3 (c1
),
306 ffebld_constant_logical3 (c2
));
309 #if FFETARGET_okLOGICAL4
310 case FFEBLD_constLOGICAL4
:
311 return ffetarget_cmp_logical4 (ffebld_constant_logical4 (c1
),
312 ffebld_constant_logical4 (c2
));
315 #if FFETARGET_okLOGICAL5
316 case FFEBLD_constLOGICAL5
:
317 return ffetarget_cmp_logical5 (ffebld_constant_logical5 (c1
),
318 ffebld_constant_logical5 (c2
));
321 #if FFETARGET_okLOGICAL6
322 case FFEBLD_constLOGICAL6
:
323 return ffetarget_cmp_logical6 (ffebld_constant_logical6 (c1
),
324 ffebld_constant_logical6 (c2
));
327 #if FFETARGET_okLOGICAL7
328 case FFEBLD_constLOGICAL7
:
329 return ffetarget_cmp_logical7 (ffebld_constant_logical7 (c1
),
330 ffebld_constant_logical7 (c2
));
333 #if FFETARGET_okLOGICAL8
334 case FFEBLD_constLOGICAL8
:
335 return ffetarget_cmp_logical8 (ffebld_constant_logical8 (c1
),
336 ffebld_constant_logical8 (c2
));
339 #if FFETARGET_okREAL1
340 case FFEBLD_constREAL1
:
341 return ffetarget_cmp_real1 (ffebld_constant_real1 (c1
),
342 ffebld_constant_real1 (c2
));
345 #if FFETARGET_okREAL2
346 case FFEBLD_constREAL2
:
347 return ffetarget_cmp_real2 (ffebld_constant_real2 (c1
),
348 ffebld_constant_real2 (c2
));
351 #if FFETARGET_okREAL3
352 case FFEBLD_constREAL3
:
353 return ffetarget_cmp_real3 (ffebld_constant_real3 (c1
),
354 ffebld_constant_real3 (c2
));
357 #if FFETARGET_okREAL4
358 case FFEBLD_constREAL4
:
359 return ffetarget_cmp_real4 (ffebld_constant_real4 (c1
),
360 ffebld_constant_real4 (c2
));
363 #if FFETARGET_okREAL5
364 case FFEBLD_constREAL5
:
365 return ffetarget_cmp_real5 (ffebld_constant_real5 (c1
),
366 ffebld_constant_real5 (c2
));
369 #if FFETARGET_okREAL6
370 case FFEBLD_constREAL6
:
371 return ffetarget_cmp_real6 (ffebld_constant_real6 (c1
),
372 ffebld_constant_real6 (c2
));
375 #if FFETARGET_okREAL7
376 case FFEBLD_constREAL7
:
377 return ffetarget_cmp_real7 (ffebld_constant_real7 (c1
),
378 ffebld_constant_real7 (c2
));
381 #if FFETARGET_okREAL8
382 case FFEBLD_constREAL8
:
383 return ffetarget_cmp_real8 (ffebld_constant_real8 (c1
),
384 ffebld_constant_real8 (c2
));
387 #if FFETARGET_okCHARACTER1
388 case FFEBLD_constCHARACTER1
:
389 return ffetarget_cmp_character1 (ffebld_constant_character1 (c1
),
390 ffebld_constant_character1 (c2
));
393 #if FFETARGET_okCHARACTER2
394 case FFEBLD_constCHARACTER2
:
395 return ffetarget_cmp_character2 (ffebld_constant_character2 (c1
),
396 ffebld_constant_character2 (c2
));
399 #if FFETARGET_okCHARACTER3
400 case FFEBLD_constCHARACTER3
:
401 return ffetarget_cmp_character3 (ffebld_constant_character3 (c1
),
402 ffebld_constant_character3 (c2
));
405 #if FFETARGET_okCHARACTER4
406 case FFEBLD_constCHARACTER4
:
407 return ffetarget_cmp_character4 (ffebld_constant_character4 (c1
),
408 ffebld_constant_character4 (c2
));
411 #if FFETARGET_okCHARACTER5
412 case FFEBLD_constCHARACTER5
:
413 return ffetarget_cmp_character5 (ffebld_constant_character5 (c1
),
414 ffebld_constant_character5 (c2
));
417 #if FFETARGET_okCHARACTER6
418 case FFEBLD_constCHARACTER6
:
419 return ffetarget_cmp_character6 (ffebld_constant_character6 (c1
),
420 ffebld_constant_character6 (c2
));
423 #if FFETARGET_okCHARACTER7
424 case FFEBLD_constCHARACTER7
:
425 return ffetarget_cmp_character7 (ffebld_constant_character7 (c1
),
426 ffebld_constant_character7 (c2
));
429 #if FFETARGET_okCHARACTER8
430 case FFEBLD_constCHARACTER8
:
431 return ffetarget_cmp_character8 (ffebld_constant_character8 (c1
),
432 ffebld_constant_character8 (c2
));
436 assert ("bad constant type" == NULL
);
441 /* ffebld_constant_is_magical -- Determine if integer is "magical"
444 if (ffebld_constant_is_magical(c))
445 // it is 2**(n-1), where n is # bits in ffetargetIntegerDefault type
446 // (this test is important for 2's-complement machines only). */
449 ffebld_constant_is_magical (ffebldConstant c
)
451 switch (ffebld_constant_type (c
))
453 case FFEBLD_constINTEGERDEFAULT
:
454 return ffetarget_integerdefault_is_magical (ffebld_constant_integer1 (c
));
461 /* Determine if constant is zero. Used to ensure step count
462 for DO loops isn't zero, also to determine if values will
463 be binary zeros, so not entirely portable at this point. */
466 ffebld_constant_is_zero (ffebldConstant c
)
468 switch (ffebld_constant_type (c
))
470 #if FFETARGET_okINTEGER1
471 case FFEBLD_constINTEGER1
:
472 return ffebld_constant_integer1 (c
) == 0;
475 #if FFETARGET_okINTEGER2
476 case FFEBLD_constINTEGER2
:
477 return ffebld_constant_integer2 (c
) == 0;
480 #if FFETARGET_okINTEGER3
481 case FFEBLD_constINTEGER3
:
482 return ffebld_constant_integer3 (c
) == 0;
485 #if FFETARGET_okINTEGER4
486 case FFEBLD_constINTEGER4
:
487 return ffebld_constant_integer4 (c
) == 0;
490 #if FFETARGET_okINTEGER5
491 case FFEBLD_constINTEGER5
:
492 return ffebld_constant_integer5 (c
) == 0;
495 #if FFETARGET_okINTEGER6
496 case FFEBLD_constINTEGER6
:
497 return ffebld_constant_integer6 (c
) == 0;
500 #if FFETARGET_okINTEGER7
501 case FFEBLD_constINTEGER7
:
502 return ffebld_constant_integer7 (c
) == 0;
505 #if FFETARGET_okINTEGER8
506 case FFEBLD_constINTEGER8
:
507 return ffebld_constant_integer8 (c
) == 0;
510 #if FFETARGET_okLOGICAL1
511 case FFEBLD_constLOGICAL1
:
512 return ffebld_constant_logical1 (c
) == 0;
515 #if FFETARGET_okLOGICAL2
516 case FFEBLD_constLOGICAL2
:
517 return ffebld_constant_logical2 (c
) == 0;
520 #if FFETARGET_okLOGICAL3
521 case FFEBLD_constLOGICAL3
:
522 return ffebld_constant_logical3 (c
) == 0;
525 #if FFETARGET_okLOGICAL4
526 case FFEBLD_constLOGICAL4
:
527 return ffebld_constant_logical4 (c
) == 0;
530 #if FFETARGET_okLOGICAL5
531 case FFEBLD_constLOGICAL5
:
532 return ffebld_constant_logical5 (c
) == 0;
535 #if FFETARGET_okLOGICAL6
536 case FFEBLD_constLOGICAL6
:
537 return ffebld_constant_logical6 (c
) == 0;
540 #if FFETARGET_okLOGICAL7
541 case FFEBLD_constLOGICAL7
:
542 return ffebld_constant_logical7 (c
) == 0;
545 #if FFETARGET_okLOGICAL8
546 case FFEBLD_constLOGICAL8
:
547 return ffebld_constant_logical8 (c
) == 0;
550 #if FFETARGET_okREAL1
551 case FFEBLD_constREAL1
:
552 return ffetarget_iszero_real1 (ffebld_constant_real1 (c
));
555 #if FFETARGET_okREAL2
556 case FFEBLD_constREAL2
:
557 return ffetarget_iszero_real2 (ffebld_constant_real2 (c
));
560 #if FFETARGET_okREAL3
561 case FFEBLD_constREAL3
:
562 return ffetarget_iszero_real3 (ffebld_constant_real3 (c
));
565 #if FFETARGET_okREAL4
566 case FFEBLD_constREAL4
:
567 return ffetarget_iszero_real4 (ffebld_constant_real4 (c
));
570 #if FFETARGET_okREAL5
571 case FFEBLD_constREAL5
:
572 return ffetarget_iszero_real5 (ffebld_constant_real5 (c
));
575 #if FFETARGET_okREAL6
576 case FFEBLD_constREAL6
:
577 return ffetarget_iszero_real6 (ffebld_constant_real6 (c
));
580 #if FFETARGET_okREAL7
581 case FFEBLD_constREAL7
:
582 return ffetarget_iszero_real7 (ffebld_constant_real7 (c
));
585 #if FFETARGET_okREAL8
586 case FFEBLD_constREAL8
:
587 return ffetarget_iszero_real8 (ffebld_constant_real8 (c
));
590 #if FFETARGET_okCOMPLEX1
591 case FFEBLD_constCOMPLEX1
:
592 return ffetarget_iszero_real1 (ffebld_constant_complex1 (c
).real
)
593 && ffetarget_iszero_real1 (ffebld_constant_complex1 (c
).imaginary
);
596 #if FFETARGET_okCOMPLEX2
597 case FFEBLD_constCOMPLEX2
:
598 return ffetarget_iszero_real2 (ffebld_constant_complex2 (c
).real
)
599 && ffetarget_iszero_real2 (ffebld_constant_complex2 (c
).imaginary
);
602 #if FFETARGET_okCOMPLEX3
603 case FFEBLD_constCOMPLEX3
:
604 return ffetarget_iszero_real3 (ffebld_constant_complex3 (c
).real
)
605 && ffetarget_iszero_real3 (ffebld_constant_complex3 (c
).imaginary
);
608 #if FFETARGET_okCOMPLEX4
609 case FFEBLD_constCOMPLEX4
:
610 return ffetarget_iszero_real4 (ffebld_constant_complex4 (c
).real
)
611 && ffetarget_iszero_real4 (ffebld_constant_complex4 (c
).imaginary
);
614 #if FFETARGET_okCOMPLEX5
615 case FFEBLD_constCOMPLEX5
:
616 return ffetarget_iszero_real5 (ffebld_constant_complex5 (c
).real
)
617 && ffetarget_iszero_real5 (ffebld_constant_complex5 (c
).imaginary
);
620 #if FFETARGET_okCOMPLEX6
621 case FFEBLD_constCOMPLEX6
:
622 return ffetarget_iszero_real6 (ffebld_constant_complex6 (c
).real
)
623 && ffetarget_iszero_real6 (ffebld_constant_complex6 (c
).imaginary
);
626 #if FFETARGET_okCOMPLEX7
627 case FFEBLD_constCOMPLEX7
:
628 return ffetarget_iszero_real7 (ffebld_constant_complex7 (c
).real
)
629 && ffetarget_iszero_real7 (ffebld_constant_complex7 (c
).imaginary
);
632 #if FFETARGET_okCOMPLEX8
633 case FFEBLD_constCOMPLEX8
:
634 return ffetarget_iszero_real8 (ffebld_constant_complex8 (c
).real
)
635 && ffetarget_iszero_real8 (ffebld_constant_complex8 (c
).imaginary
);
638 #if FFETARGET_okCHARACTER1
639 case FFEBLD_constCHARACTER1
:
640 return ffetarget_iszero_character1 (ffebld_constant_character1 (c
));
643 #if FFETARGET_okCHARACTER2 || FFETARGET_okCHARACTER3 /* ... */
644 #error "no support for these!!"
647 case FFEBLD_constHOLLERITH
:
648 return ffetarget_iszero_hollerith (ffebld_constant_hollerith (c
));
650 case FFEBLD_constBINARY_MIL
:
651 case FFEBLD_constBINARY_VXT
:
652 case FFEBLD_constOCTAL_MIL
:
653 case FFEBLD_constOCTAL_VXT
:
654 case FFEBLD_constHEX_X_MIL
:
655 case FFEBLD_constHEX_X_VXT
:
656 case FFEBLD_constHEX_Z_MIL
:
657 case FFEBLD_constHEX_Z_VXT
:
658 return ffetarget_iszero_typeless (ffebld_constant_typeless (c
));
665 /* ffebld_constant_new_character1 -- Return character1 constant object from token
669 #if FFETARGET_okCHARACTER1
671 ffebld_constant_new_character1 (ffelexToken t
)
673 ffetargetCharacter1 val
;
675 ffetarget_character1 (&val
, t
, ffebld_constant_pool());
676 return ffebld_constant_new_character1_val (val
);
680 /* ffebld_constant_new_character1_val -- Return an character1 constant object
684 #if FFETARGET_okCHARACTER1
686 ffebld_constant_new_character1_val (ffetargetCharacter1 val
)
692 ffetarget_verify_character1 (ffebld_constant_pool(), val
);
694 for (c
= (ffebldConstant
) &ffebld_constant_character1_
;
698 malloc_verify_kp (ffebld_constant_pool(),
700 sizeof (*(c
->next
)));
701 ffetarget_verify_character1 (ffebld_constant_pool(),
702 ffebld_constant_character1 (c
->next
));
703 cmp
= ffetarget_cmp_character1 (val
,
704 ffebld_constant_character1 (c
->next
));
711 nc
= malloc_new_kp (ffebld_constant_pool(),
712 "FFEBLD_constCHARACTER1",
715 nc
->consttype
= FFEBLD_constCHARACTER1
;
716 nc
->u
.character1
= val
;
717 #ifdef FFECOM_constantHOOK
718 nc
->hook
= FFECOM_constantNULL
;
726 /* ffebld_constant_new_complex1 -- Return complex1 constant object from token
730 #if FFETARGET_okCOMPLEX1
732 ffebld_constant_new_complex1 (ffebldConstant real
,
733 ffebldConstant imaginary
)
735 ffetargetComplex1 val
;
737 val
.real
= ffebld_constant_real1 (real
);
738 val
.imaginary
= ffebld_constant_real1 (imaginary
);
739 return ffebld_constant_new_complex1_val (val
);
743 /* ffebld_constant_new_complex1_val -- Return a complex1 constant object
747 #if FFETARGET_okCOMPLEX1
749 ffebld_constant_new_complex1_val (ffetargetComplex1 val
)
755 for (c
= (ffebldConstant
) &ffebld_constant_complex1_
;
759 cmp
= ffetarget_cmp_real1 (val
.real
, ffebld_constant_complex1 (c
->next
).real
);
761 cmp
= ffetarget_cmp_real1 (val
.imaginary
,
762 ffebld_constant_complex1 (c
->next
).imaginary
);
769 nc
= malloc_new_kp (ffebld_constant_pool(),
770 "FFEBLD_constCOMPLEX1",
773 nc
->consttype
= FFEBLD_constCOMPLEX1
;
774 nc
->u
.complex1
= val
;
775 #ifdef FFECOM_constantHOOK
776 nc
->hook
= FFECOM_constantNULL
;
784 /* ffebld_constant_new_complex2 -- Return complex2 constant object from token
788 #if FFETARGET_okCOMPLEX2
790 ffebld_constant_new_complex2 (ffebldConstant real
,
791 ffebldConstant imaginary
)
793 ffetargetComplex2 val
;
795 val
.real
= ffebld_constant_real2 (real
);
796 val
.imaginary
= ffebld_constant_real2 (imaginary
);
797 return ffebld_constant_new_complex2_val (val
);
801 /* ffebld_constant_new_complex2_val -- Return a complex2 constant object
805 #if FFETARGET_okCOMPLEX2
807 ffebld_constant_new_complex2_val (ffetargetComplex2 val
)
813 for (c
= (ffebldConstant
) &ffebld_constant_complex2_
;
817 cmp
= ffetarget_cmp_real2 (val
.real
, ffebld_constant_complex2 (c
->next
).real
);
819 cmp
= ffetarget_cmp_real2 (val
.imaginary
,
820 ffebld_constant_complex2 (c
->next
).imaginary
);
827 nc
= malloc_new_kp (ffebld_constant_pool(),
828 "FFEBLD_constCOMPLEX2",
831 nc
->consttype
= FFEBLD_constCOMPLEX2
;
832 nc
->u
.complex2
= val
;
833 #ifdef FFECOM_constantHOOK
834 nc
->hook
= FFECOM_constantNULL
;
842 /* ffebld_constant_new_hollerith -- Return hollerith constant object from token
847 ffebld_constant_new_hollerith (ffelexToken t
)
849 ffetargetHollerith val
;
851 ffetarget_hollerith (&val
, t
, ffebld_constant_pool());
852 return ffebld_constant_new_hollerith_val (val
);
855 /* ffebld_constant_new_hollerith_val -- Return an hollerith constant object
860 ffebld_constant_new_hollerith_val (ffetargetHollerith val
)
866 for (c
= (ffebldConstant
) &ffebld_constant_hollerith_
;
870 cmp
= ffetarget_cmp_hollerith (val
, ffebld_constant_hollerith (c
->next
));
877 nc
= malloc_new_kp (ffebld_constant_pool(),
878 "FFEBLD_constHOLLERITH",
881 nc
->consttype
= FFEBLD_constHOLLERITH
;
882 nc
->u
.hollerith
= val
;
883 #ifdef FFECOM_constantHOOK
884 nc
->hook
= FFECOM_constantNULL
;
891 /* ffebld_constant_new_integer1 -- Return integer1 constant object from token
895 Parses the token as a decimal integer constant, thus it must be an
896 FFELEX_typeNUMBER. */
898 #if FFETARGET_okINTEGER1
900 ffebld_constant_new_integer1 (ffelexToken t
)
902 ffetargetInteger1 val
;
904 assert (ffelex_token_type (t
) == FFELEX_typeNUMBER
);
906 ffetarget_integer1 (&val
, t
);
907 return ffebld_constant_new_integer1_val (val
);
911 /* ffebld_constant_new_integer1_val -- Return an integer1 constant object
915 #if FFETARGET_okINTEGER1
917 ffebld_constant_new_integer1_val (ffetargetInteger1 val
)
923 for (c
= (ffebldConstant
) &ffebld_constant_integer1_
;
927 cmp
= ffetarget_cmp_integer1 (val
, ffebld_constant_integer1 (c
->next
));
934 nc
= malloc_new_kp (ffebld_constant_pool(),
935 "FFEBLD_constINTEGER1",
938 nc
->consttype
= FFEBLD_constINTEGER1
;
939 nc
->u
.integer1
= val
;
940 #ifdef FFECOM_constantHOOK
941 nc
->hook
= FFECOM_constantNULL
;
949 /* ffebld_constant_new_integer2_val -- Return an integer2 constant object
953 #if FFETARGET_okINTEGER2
955 ffebld_constant_new_integer2_val (ffetargetInteger2 val
)
961 for (c
= (ffebldConstant
) &ffebld_constant_integer2_
;
965 cmp
= ffetarget_cmp_integer2 (val
, ffebld_constant_integer2 (c
->next
));
972 nc
= malloc_new_kp (ffebld_constant_pool(),
973 "FFEBLD_constINTEGER2",
976 nc
->consttype
= FFEBLD_constINTEGER2
;
977 nc
->u
.integer2
= val
;
978 #ifdef FFECOM_constantHOOK
979 nc
->hook
= FFECOM_constantNULL
;
987 /* ffebld_constant_new_integer3_val -- Return an integer3 constant object
991 #if FFETARGET_okINTEGER3
993 ffebld_constant_new_integer3_val (ffetargetInteger3 val
)
999 for (c
= (ffebldConstant
) &ffebld_constant_integer3_
;
1003 cmp
= ffetarget_cmp_integer3 (val
, ffebld_constant_integer3 (c
->next
));
1010 nc
= malloc_new_kp (ffebld_constant_pool(),
1011 "FFEBLD_constINTEGER3",
1014 nc
->consttype
= FFEBLD_constINTEGER3
;
1015 nc
->u
.integer3
= val
;
1016 #ifdef FFECOM_constantHOOK
1017 nc
->hook
= FFECOM_constantNULL
;
1025 /* ffebld_constant_new_integer4_val -- Return an integer4 constant object
1029 #if FFETARGET_okINTEGER4
1031 ffebld_constant_new_integer4_val (ffetargetInteger4 val
)
1037 for (c
= (ffebldConstant
) &ffebld_constant_integer4_
;
1041 cmp
= ffetarget_cmp_integer4 (val
, ffebld_constant_integer4 (c
->next
));
1048 nc
= malloc_new_kp (ffebld_constant_pool(),
1049 "FFEBLD_constINTEGER4",
1052 nc
->consttype
= FFEBLD_constINTEGER4
;
1053 nc
->u
.integer4
= val
;
1054 #ifdef FFECOM_constantHOOK
1055 nc
->hook
= FFECOM_constantNULL
;
1063 /* ffebld_constant_new_integerbinary -- Return binary constant object from token
1067 Parses the token as a binary integer constant, thus it must be an
1068 FFELEX_typeNUMBER. */
1071 ffebld_constant_new_integerbinary (ffelexToken t
)
1073 ffetargetIntegerDefault val
;
1075 assert ((ffelex_token_type (t
) == FFELEX_typeNAME
)
1076 || (ffelex_token_type (t
) == FFELEX_typeNUMBER
));
1078 ffetarget_integerbinary (&val
, t
);
1079 return ffebld_constant_new_integerdefault_val (val
);
1082 /* ffebld_constant_new_integerhex -- Return hex constant object from token
1086 Parses the token as a hex integer constant, thus it must be an
1087 FFELEX_typeNUMBER. */
1090 ffebld_constant_new_integerhex (ffelexToken t
)
1092 ffetargetIntegerDefault val
;
1094 assert ((ffelex_token_type (t
) == FFELEX_typeNAME
)
1095 || (ffelex_token_type (t
) == FFELEX_typeNUMBER
));
1097 ffetarget_integerhex (&val
, t
);
1098 return ffebld_constant_new_integerdefault_val (val
);
1101 /* ffebld_constant_new_integeroctal -- Return octal constant object from token
1105 Parses the token as a octal integer constant, thus it must be an
1106 FFELEX_typeNUMBER. */
1109 ffebld_constant_new_integeroctal (ffelexToken t
)
1111 ffetargetIntegerDefault val
;
1113 assert ((ffelex_token_type (t
) == FFELEX_typeNAME
)
1114 || (ffelex_token_type (t
) == FFELEX_typeNUMBER
));
1116 ffetarget_integeroctal (&val
, t
);
1117 return ffebld_constant_new_integerdefault_val (val
);
1120 /* ffebld_constant_new_logical1 -- Return logical1 constant object from token
1124 Parses the token as a decimal logical constant, thus it must be an
1125 FFELEX_typeNUMBER. */
1127 #if FFETARGET_okLOGICAL1
1129 ffebld_constant_new_logical1 (bool truth
)
1131 ffetargetLogical1 val
;
1133 ffetarget_logical1 (&val
, truth
);
1134 return ffebld_constant_new_logical1_val (val
);
1138 /* ffebld_constant_new_logical1_val -- Return a logical1 constant object
1142 #if FFETARGET_okLOGICAL1
1144 ffebld_constant_new_logical1_val (ffetargetLogical1 val
)
1150 for (c
= (ffebldConstant
) &ffebld_constant_logical1_
;
1154 cmp
= ffetarget_cmp_logical1 (val
, ffebld_constant_logical1 (c
->next
));
1161 nc
= malloc_new_kp (ffebld_constant_pool(),
1162 "FFEBLD_constLOGICAL1",
1165 nc
->consttype
= FFEBLD_constLOGICAL1
;
1166 nc
->u
.logical1
= val
;
1167 #ifdef FFECOM_constantHOOK
1168 nc
->hook
= FFECOM_constantNULL
;
1176 /* ffebld_constant_new_logical2_val -- Return a logical2 constant object
1180 #if FFETARGET_okLOGICAL2
1182 ffebld_constant_new_logical2_val (ffetargetLogical2 val
)
1188 for (c
= (ffebldConstant
) &ffebld_constant_logical2_
;
1192 cmp
= ffetarget_cmp_logical2 (val
, ffebld_constant_logical2 (c
->next
));
1199 nc
= malloc_new_kp (ffebld_constant_pool(),
1200 "FFEBLD_constLOGICAL2",
1203 nc
->consttype
= FFEBLD_constLOGICAL2
;
1204 nc
->u
.logical2
= val
;
1205 #ifdef FFECOM_constantHOOK
1206 nc
->hook
= FFECOM_constantNULL
;
1214 /* ffebld_constant_new_logical3_val -- Return a logical3 constant object
1218 #if FFETARGET_okLOGICAL3
1220 ffebld_constant_new_logical3_val (ffetargetLogical3 val
)
1226 for (c
= (ffebldConstant
) &ffebld_constant_logical3_
;
1230 cmp
= ffetarget_cmp_logical3 (val
, ffebld_constant_logical3 (c
->next
));
1237 nc
= malloc_new_kp (ffebld_constant_pool(),
1238 "FFEBLD_constLOGICAL3",
1241 nc
->consttype
= FFEBLD_constLOGICAL3
;
1242 nc
->u
.logical3
= val
;
1243 #ifdef FFECOM_constantHOOK
1244 nc
->hook
= FFECOM_constantNULL
;
1252 /* ffebld_constant_new_logical4_val -- Return a logical4 constant object
1256 #if FFETARGET_okLOGICAL4
1258 ffebld_constant_new_logical4_val (ffetargetLogical4 val
)
1264 for (c
= (ffebldConstant
) &ffebld_constant_logical4_
;
1268 cmp
= ffetarget_cmp_logical4 (val
, ffebld_constant_logical4 (c
->next
));
1275 nc
= malloc_new_kp (ffebld_constant_pool(),
1276 "FFEBLD_constLOGICAL4",
1279 nc
->consttype
= FFEBLD_constLOGICAL4
;
1280 nc
->u
.logical4
= val
;
1281 #ifdef FFECOM_constantHOOK
1282 nc
->hook
= FFECOM_constantNULL
;
1290 /* ffebld_constant_new_real1 -- Return real1 constant object from token
1294 #if FFETARGET_okREAL1
1296 ffebld_constant_new_real1 (ffelexToken integer
, ffelexToken decimal
,
1297 ffelexToken fraction
, ffelexToken exponent
, ffelexToken exponent_sign
,
1298 ffelexToken exponent_digits
)
1302 ffetarget_real1 (&val
,
1303 integer
, decimal
, fraction
, exponent
, exponent_sign
, exponent_digits
);
1304 return ffebld_constant_new_real1_val (val
);
1308 /* ffebld_constant_new_real1_val -- Return an real1 constant object
1312 #if FFETARGET_okREAL1
1314 ffebld_constant_new_real1_val (ffetargetReal1 val
)
1320 for (c
= (ffebldConstant
) &ffebld_constant_real1_
;
1324 cmp
= ffetarget_cmp_real1 (val
, ffebld_constant_real1 (c
->next
));
1331 nc
= malloc_new_kp (ffebld_constant_pool(),
1332 "FFEBLD_constREAL1",
1335 nc
->consttype
= FFEBLD_constREAL1
;
1337 #ifdef FFECOM_constantHOOK
1338 nc
->hook
= FFECOM_constantNULL
;
1346 /* ffebld_constant_new_real2 -- Return real2 constant object from token
1350 #if FFETARGET_okREAL2
1352 ffebld_constant_new_real2 (ffelexToken integer
, ffelexToken decimal
,
1353 ffelexToken fraction
, ffelexToken exponent
, ffelexToken exponent_sign
,
1354 ffelexToken exponent_digits
)
1358 ffetarget_real2 (&val
,
1359 integer
, decimal
, fraction
, exponent
, exponent_sign
, exponent_digits
);
1360 return ffebld_constant_new_real2_val (val
);
1364 /* ffebld_constant_new_real2_val -- Return an real2 constant object
1368 #if FFETARGET_okREAL2
1370 ffebld_constant_new_real2_val (ffetargetReal2 val
)
1376 for (c
= (ffebldConstant
) &ffebld_constant_real2_
;
1380 cmp
= ffetarget_cmp_real2 (val
, ffebld_constant_real2 (c
->next
));
1387 nc
= malloc_new_kp (ffebld_constant_pool(),
1388 "FFEBLD_constREAL2",
1391 nc
->consttype
= FFEBLD_constREAL2
;
1393 #ifdef FFECOM_constantHOOK
1394 nc
->hook
= FFECOM_constantNULL
;
1402 /* ffebld_constant_new_typeless_bm -- Return typeless constant object from token
1406 Parses the token as a decimal integer constant, thus it must be an
1407 FFELEX_typeNUMBER. */
1410 ffebld_constant_new_typeless_bm (ffelexToken t
)
1412 ffetargetTypeless val
;
1414 ffetarget_binarymil (&val
, t
);
1415 return ffebld_constant_new_typeless_val (FFEBLD_constBINARY_MIL
, val
);
1418 /* ffebld_constant_new_typeless_bv -- Return typeless constant object from token
1422 Parses the token as a decimal integer constant, thus it must be an
1423 FFELEX_typeNUMBER. */
1426 ffebld_constant_new_typeless_bv (ffelexToken t
)
1428 ffetargetTypeless val
;
1430 ffetarget_binaryvxt (&val
, t
);
1431 return ffebld_constant_new_typeless_val (FFEBLD_constBINARY_VXT
, val
);
1434 /* ffebld_constant_new_typeless_hxm -- Return typeless constant object from token
1438 Parses the token as a decimal integer constant, thus it must be an
1439 FFELEX_typeNUMBER. */
1442 ffebld_constant_new_typeless_hxm (ffelexToken t
)
1444 ffetargetTypeless val
;
1446 ffetarget_hexxmil (&val
, t
);
1447 return ffebld_constant_new_typeless_val (FFEBLD_constHEX_X_MIL
, val
);
1450 /* ffebld_constant_new_typeless_hxv -- Return typeless constant object from token
1454 Parses the token as a decimal integer constant, thus it must be an
1455 FFELEX_typeNUMBER. */
1458 ffebld_constant_new_typeless_hxv (ffelexToken t
)
1460 ffetargetTypeless val
;
1462 ffetarget_hexxvxt (&val
, t
);
1463 return ffebld_constant_new_typeless_val (FFEBLD_constHEX_X_VXT
, val
);
1466 /* ffebld_constant_new_typeless_hzm -- Return typeless constant object from token
1470 Parses the token as a decimal integer constant, thus it must be an
1471 FFELEX_typeNUMBER. */
1474 ffebld_constant_new_typeless_hzm (ffelexToken t
)
1476 ffetargetTypeless val
;
1478 ffetarget_hexzmil (&val
, t
);
1479 return ffebld_constant_new_typeless_val (FFEBLD_constHEX_Z_MIL
, val
);
1482 /* ffebld_constant_new_typeless_hzv -- Return typeless constant object from token
1486 Parses the token as a decimal integer constant, thus it must be an
1487 FFELEX_typeNUMBER. */
1490 ffebld_constant_new_typeless_hzv (ffelexToken t
)
1492 ffetargetTypeless val
;
1494 ffetarget_hexzvxt (&val
, t
);
1495 return ffebld_constant_new_typeless_val (FFEBLD_constHEX_Z_VXT
, val
);
1498 /* ffebld_constant_new_typeless_om -- Return typeless constant object from token
1502 Parses the token as a decimal integer constant, thus it must be an
1503 FFELEX_typeNUMBER. */
1506 ffebld_constant_new_typeless_om (ffelexToken t
)
1508 ffetargetTypeless val
;
1510 ffetarget_octalmil (&val
, t
);
1511 return ffebld_constant_new_typeless_val (FFEBLD_constOCTAL_MIL
, val
);
1514 /* ffebld_constant_new_typeless_ov -- Return typeless constant object from token
1518 Parses the token as a decimal integer constant, thus it must be an
1519 FFELEX_typeNUMBER. */
1522 ffebld_constant_new_typeless_ov (ffelexToken t
)
1524 ffetargetTypeless val
;
1526 ffetarget_octalvxt (&val
, t
);
1527 return ffebld_constant_new_typeless_val (FFEBLD_constOCTAL_VXT
, val
);
1530 /* ffebld_constant_new_typeless_val -- Return a typeless constant object
1535 ffebld_constant_new_typeless_val (ffebldConst type
, ffetargetTypeless val
)
1541 for (c
= (ffebldConstant
) &ffebld_constant_typeless_
[type
1542 - FFEBLD_constTYPELESS_FIRST
];
1546 cmp
= ffetarget_cmp_typeless (val
, ffebld_constant_typeless (c
->next
));
1553 nc
= malloc_new_kp (ffebld_constant_pool(),
1554 "FFEBLD_constTYPELESS",
1557 nc
->consttype
= type
;
1558 nc
->u
.typeless
= val
;
1559 #ifdef FFECOM_constantHOOK
1560 nc
->hook
= FFECOM_constantNULL
;
1567 /* ffebld_constantarray_get -- Get a value from an array of constants
1572 ffebld_constantarray_get (ffebldConstantArray array
, ffeinfoBasictype bt
,
1573 ffeinfoKindtype kt
, ffetargetOffset offset
)
1575 ffebldConstantUnion u
;
1579 case FFEINFO_basictypeINTEGER
:
1582 #if FFETARGET_okINTEGER1
1583 case FFEINFO_kindtypeINTEGER1
:
1584 u
.integer1
= *(array
.integer1
+ offset
);
1588 #if FFETARGET_okINTEGER2
1589 case FFEINFO_kindtypeINTEGER2
:
1590 u
.integer2
= *(array
.integer2
+ offset
);
1594 #if FFETARGET_okINTEGER3
1595 case FFEINFO_kindtypeINTEGER3
:
1596 u
.integer3
= *(array
.integer3
+ offset
);
1600 #if FFETARGET_okINTEGER4
1601 case FFEINFO_kindtypeINTEGER4
:
1602 u
.integer4
= *(array
.integer4
+ offset
);
1606 #if FFETARGET_okINTEGER5
1607 case FFEINFO_kindtypeINTEGER5
:
1608 u
.integer5
= *(array
.integer5
+ offset
);
1612 #if FFETARGET_okINTEGER6
1613 case FFEINFO_kindtypeINTEGER6
:
1614 u
.integer6
= *(array
.integer6
+ offset
);
1618 #if FFETARGET_okINTEGER7
1619 case FFEINFO_kindtypeINTEGER7
:
1620 u
.integer7
= *(array
.integer7
+ offset
);
1624 #if FFETARGET_okINTEGER8
1625 case FFEINFO_kindtypeINTEGER8
:
1626 u
.integer8
= *(array
.integer8
+ offset
);
1631 assert ("bad INTEGER kindtype" == NULL
);
1636 case FFEINFO_basictypeLOGICAL
:
1639 #if FFETARGET_okLOGICAL1
1640 case FFEINFO_kindtypeLOGICAL1
:
1641 u
.logical1
= *(array
.logical1
+ offset
);
1645 #if FFETARGET_okLOGICAL2
1646 case FFEINFO_kindtypeLOGICAL2
:
1647 u
.logical2
= *(array
.logical2
+ offset
);
1651 #if FFETARGET_okLOGICAL3
1652 case FFEINFO_kindtypeLOGICAL3
:
1653 u
.logical3
= *(array
.logical3
+ offset
);
1657 #if FFETARGET_okLOGICAL4
1658 case FFEINFO_kindtypeLOGICAL4
:
1659 u
.logical4
= *(array
.logical4
+ offset
);
1663 #if FFETARGET_okLOGICAL5
1664 case FFEINFO_kindtypeLOGICAL5
:
1665 u
.logical5
= *(array
.logical5
+ offset
);
1669 #if FFETARGET_okLOGICAL6
1670 case FFEINFO_kindtypeLOGICAL6
:
1671 u
.logical6
= *(array
.logical6
+ offset
);
1675 #if FFETARGET_okLOGICAL7
1676 case FFEINFO_kindtypeLOGICAL7
:
1677 u
.logical7
= *(array
.logical7
+ offset
);
1681 #if FFETARGET_okLOGICAL8
1682 case FFEINFO_kindtypeLOGICAL8
:
1683 u
.logical8
= *(array
.logical8
+ offset
);
1688 assert ("bad LOGICAL kindtype" == NULL
);
1693 case FFEINFO_basictypeREAL
:
1696 #if FFETARGET_okREAL1
1697 case FFEINFO_kindtypeREAL1
:
1698 u
.real1
= *(array
.real1
+ offset
);
1702 #if FFETARGET_okREAL2
1703 case FFEINFO_kindtypeREAL2
:
1704 u
.real2
= *(array
.real2
+ offset
);
1708 #if FFETARGET_okREAL3
1709 case FFEINFO_kindtypeREAL3
:
1710 u
.real3
= *(array
.real3
+ offset
);
1714 #if FFETARGET_okREAL4
1715 case FFEINFO_kindtypeREAL4
:
1716 u
.real4
= *(array
.real4
+ offset
);
1720 #if FFETARGET_okREAL5
1721 case FFEINFO_kindtypeREAL5
:
1722 u
.real5
= *(array
.real5
+ offset
);
1726 #if FFETARGET_okREAL6
1727 case FFEINFO_kindtypeREAL6
:
1728 u
.real6
= *(array
.real6
+ offset
);
1732 #if FFETARGET_okREAL7
1733 case FFEINFO_kindtypeREAL7
:
1734 u
.real7
= *(array
.real7
+ offset
);
1738 #if FFETARGET_okREAL8
1739 case FFEINFO_kindtypeREAL8
:
1740 u
.real8
= *(array
.real8
+ offset
);
1745 assert ("bad REAL kindtype" == NULL
);
1750 case FFEINFO_basictypeCOMPLEX
:
1753 #if FFETARGET_okCOMPLEX1
1754 case FFEINFO_kindtypeREAL1
:
1755 u
.complex1
= *(array
.complex1
+ offset
);
1759 #if FFETARGET_okCOMPLEX2
1760 case FFEINFO_kindtypeREAL2
:
1761 u
.complex2
= *(array
.complex2
+ offset
);
1765 #if FFETARGET_okCOMPLEX3
1766 case FFEINFO_kindtypeREAL3
:
1767 u
.complex3
= *(array
.complex3
+ offset
);
1771 #if FFETARGET_okCOMPLEX4
1772 case FFEINFO_kindtypeREAL4
:
1773 u
.complex4
= *(array
.complex4
+ offset
);
1777 #if FFETARGET_okCOMPLEX5
1778 case FFEINFO_kindtypeREAL5
:
1779 u
.complex5
= *(array
.complex5
+ offset
);
1783 #if FFETARGET_okCOMPLEX6
1784 case FFEINFO_kindtypeREAL6
:
1785 u
.complex6
= *(array
.complex6
+ offset
);
1789 #if FFETARGET_okCOMPLEX7
1790 case FFEINFO_kindtypeREAL7
:
1791 u
.complex7
= *(array
.complex7
+ offset
);
1795 #if FFETARGET_okCOMPLEX8
1796 case FFEINFO_kindtypeREAL8
:
1797 u
.complex8
= *(array
.complex8
+ offset
);
1802 assert ("bad COMPLEX kindtype" == NULL
);
1807 case FFEINFO_basictypeCHARACTER
:
1810 #if FFETARGET_okCHARACTER1
1811 case FFEINFO_kindtypeCHARACTER1
:
1812 u
.character1
.length
= 1;
1813 u
.character1
.text
= array
.character1
+ offset
;
1817 #if FFETARGET_okCHARACTER2
1818 case FFEINFO_kindtypeCHARACTER2
:
1819 u
.character2
.length
= 1;
1820 u
.character2
.text
= array
.character2
+ offset
;
1824 #if FFETARGET_okCHARACTER3
1825 case FFEINFO_kindtypeCHARACTER3
:
1826 u
.character3
.length
= 1;
1827 u
.character3
.text
= array
.character3
+ offset
;
1831 #if FFETARGET_okCHARACTER4
1832 case FFEINFO_kindtypeCHARACTER4
:
1833 u
.character4
.length
= 1;
1834 u
.character4
.text
= array
.character4
+ offset
;
1838 #if FFETARGET_okCHARACTER5
1839 case FFEINFO_kindtypeCHARACTER5
:
1840 u
.character5
.length
= 1;
1841 u
.character5
.text
= array
.character5
+ offset
;
1845 #if FFETARGET_okCHARACTER6
1846 case FFEINFO_kindtypeCHARACTER6
:
1847 u
.character6
.length
= 1;
1848 u
.character6
.text
= array
.character6
+ offset
;
1852 #if FFETARGET_okCHARACTER7
1853 case FFEINFO_kindtypeCHARACTER7
:
1854 u
.character7
.length
= 1;
1855 u
.character7
.text
= array
.character7
+ offset
;
1859 #if FFETARGET_okCHARACTER8
1860 case FFEINFO_kindtypeCHARACTER8
:
1861 u
.character8
.length
= 1;
1862 u
.character8
.text
= array
.character8
+ offset
;
1867 assert ("bad CHARACTER kindtype" == NULL
);
1873 assert ("bad basictype" == NULL
);
1880 /* ffebld_constantarray_new -- Make an array of constants
1885 ffebld_constantarray_new (ffeinfoBasictype bt
,
1886 ffeinfoKindtype kt
, ffetargetOffset size
)
1888 ffebldConstantArray ptr
;
1892 case FFEINFO_basictypeINTEGER
:
1895 #if FFETARGET_okINTEGER1
1896 case FFEINFO_kindtypeINTEGER1
:
1897 ptr
.integer1
= malloc_new_zkp (ffebld_constant_pool(),
1898 "ffebldConstantArray",
1899 size
*= sizeof (ffetargetInteger1
),
1904 #if FFETARGET_okINTEGER2
1905 case FFEINFO_kindtypeINTEGER2
:
1906 ptr
.integer2
= malloc_new_zkp (ffebld_constant_pool(),
1907 "ffebldConstantArray",
1908 size
*= sizeof (ffetargetInteger2
),
1913 #if FFETARGET_okINTEGER3
1914 case FFEINFO_kindtypeINTEGER3
:
1915 ptr
.integer3
= malloc_new_zkp (ffebld_constant_pool(),
1916 "ffebldConstantArray",
1917 size
*= sizeof (ffetargetInteger3
),
1922 #if FFETARGET_okINTEGER4
1923 case FFEINFO_kindtypeINTEGER4
:
1924 ptr
.integer4
= malloc_new_zkp (ffebld_constant_pool(),
1925 "ffebldConstantArray",
1926 size
*= sizeof (ffetargetInteger4
),
1931 #if FFETARGET_okINTEGER5
1932 case FFEINFO_kindtypeINTEGER5
:
1933 ptr
.integer5
= malloc_new_zkp (ffebld_constant_pool(),
1934 "ffebldConstantArray",
1935 size
*= sizeof (ffetargetInteger5
),
1940 #if FFETARGET_okINTEGER6
1941 case FFEINFO_kindtypeINTEGER6
:
1942 ptr
.integer6
= malloc_new_zkp (ffebld_constant_pool(),
1943 "ffebldConstantArray",
1944 size
*= sizeof (ffetargetInteger6
),
1949 #if FFETARGET_okINTEGER7
1950 case FFEINFO_kindtypeINTEGER7
:
1951 ptr
.integer7
= malloc_new_zkp (ffebld_constant_pool(),
1952 "ffebldConstantArray",
1953 size
*= sizeof (ffetargetInteger7
),
1958 #if FFETARGET_okINTEGER8
1959 case FFEINFO_kindtypeINTEGER8
:
1960 ptr
.integer8
= malloc_new_zkp (ffebld_constant_pool(),
1961 "ffebldConstantArray",
1962 size
*= sizeof (ffetargetInteger8
),
1968 assert ("bad INTEGER kindtype" == NULL
);
1973 case FFEINFO_basictypeLOGICAL
:
1976 #if FFETARGET_okLOGICAL1
1977 case FFEINFO_kindtypeLOGICAL1
:
1978 ptr
.logical1
= malloc_new_zkp (ffebld_constant_pool(),
1979 "ffebldConstantArray",
1980 size
*= sizeof (ffetargetLogical1
),
1985 #if FFETARGET_okLOGICAL2
1986 case FFEINFO_kindtypeLOGICAL2
:
1987 ptr
.logical2
= malloc_new_zkp (ffebld_constant_pool(),
1988 "ffebldConstantArray",
1989 size
*= sizeof (ffetargetLogical2
),
1994 #if FFETARGET_okLOGICAL3
1995 case FFEINFO_kindtypeLOGICAL3
:
1996 ptr
.logical3
= malloc_new_zkp (ffebld_constant_pool(),
1997 "ffebldConstantArray",
1998 size
*= sizeof (ffetargetLogical3
),
2003 #if FFETARGET_okLOGICAL4
2004 case FFEINFO_kindtypeLOGICAL4
:
2005 ptr
.logical4
= malloc_new_zkp (ffebld_constant_pool(),
2006 "ffebldConstantArray",
2007 size
*= sizeof (ffetargetLogical4
),
2012 #if FFETARGET_okLOGICAL5
2013 case FFEINFO_kindtypeLOGICAL5
:
2014 ptr
.logical5
= malloc_new_zkp (ffebld_constant_pool(),
2015 "ffebldConstantArray",
2016 size
*= sizeof (ffetargetLogical5
),
2021 #if FFETARGET_okLOGICAL6
2022 case FFEINFO_kindtypeLOGICAL6
:
2023 ptr
.logical6
= malloc_new_zkp (ffebld_constant_pool(),
2024 "ffebldConstantArray",
2025 size
*= sizeof (ffetargetLogical6
),
2030 #if FFETARGET_okLOGICAL7
2031 case FFEINFO_kindtypeLOGICAL7
:
2032 ptr
.logical7
= malloc_new_zkp (ffebld_constant_pool(),
2033 "ffebldConstantArray",
2034 size
*= sizeof (ffetargetLogical7
),
2039 #if FFETARGET_okLOGICAL8
2040 case FFEINFO_kindtypeLOGICAL8
:
2041 ptr
.logical8
= malloc_new_zkp (ffebld_constant_pool(),
2042 "ffebldConstantArray",
2043 size
*= sizeof (ffetargetLogical8
),
2049 assert ("bad LOGICAL kindtype" == NULL
);
2054 case FFEINFO_basictypeREAL
:
2057 #if FFETARGET_okREAL1
2058 case FFEINFO_kindtypeREAL1
:
2059 ptr
.real1
= malloc_new_zkp (ffebld_constant_pool(),
2060 "ffebldConstantArray",
2061 size
*= sizeof (ffetargetReal1
),
2066 #if FFETARGET_okREAL2
2067 case FFEINFO_kindtypeREAL2
:
2068 ptr
.real2
= malloc_new_zkp (ffebld_constant_pool(),
2069 "ffebldConstantArray",
2070 size
*= sizeof (ffetargetReal2
),
2075 #if FFETARGET_okREAL3
2076 case FFEINFO_kindtypeREAL3
:
2077 ptr
.real3
= malloc_new_zkp (ffebld_constant_pool(),
2078 "ffebldConstantArray",
2079 size
*= sizeof (ffetargetReal3
),
2084 #if FFETARGET_okREAL4
2085 case FFEINFO_kindtypeREAL4
:
2086 ptr
.real4
= malloc_new_zkp (ffebld_constant_pool(),
2087 "ffebldConstantArray",
2088 size
*= sizeof (ffetargetReal4
),
2093 #if FFETARGET_okREAL5
2094 case FFEINFO_kindtypeREAL5
:
2095 ptr
.real5
= malloc_new_zkp (ffebld_constant_pool(),
2096 "ffebldConstantArray",
2097 size
*= sizeof (ffetargetReal5
),
2102 #if FFETARGET_okREAL6
2103 case FFEINFO_kindtypeREAL6
:
2104 ptr
.real6
= malloc_new_zkp (ffebld_constant_pool(),
2105 "ffebldConstantArray",
2106 size
*= sizeof (ffetargetReal6
),
2111 #if FFETARGET_okREAL7
2112 case FFEINFO_kindtypeREAL7
:
2113 ptr
.real7
= malloc_new_zkp (ffebld_constant_pool(),
2114 "ffebldConstantArray",
2115 size
*= sizeof (ffetargetReal7
),
2120 #if FFETARGET_okREAL8
2121 case FFEINFO_kindtypeREAL8
:
2122 ptr
.real8
= malloc_new_zkp (ffebld_constant_pool(),
2123 "ffebldConstantArray",
2124 size
*= sizeof (ffetargetReal8
),
2130 assert ("bad REAL kindtype" == NULL
);
2135 case FFEINFO_basictypeCOMPLEX
:
2138 #if FFETARGET_okCOMPLEX1
2139 case FFEINFO_kindtypeREAL1
:
2140 ptr
.complex1
= malloc_new_zkp (ffebld_constant_pool(),
2141 "ffebldConstantArray",
2142 size
*= sizeof (ffetargetComplex1
),
2147 #if FFETARGET_okCOMPLEX2
2148 case FFEINFO_kindtypeREAL2
:
2149 ptr
.complex2
= malloc_new_zkp (ffebld_constant_pool(),
2150 "ffebldConstantArray",
2151 size
*= sizeof (ffetargetComplex2
),
2156 #if FFETARGET_okCOMPLEX3
2157 case FFEINFO_kindtypeREAL3
:
2158 ptr
.complex3
= malloc_new_zkp (ffebld_constant_pool(),
2159 "ffebldConstantArray",
2160 size
*= sizeof (ffetargetComplex3
),
2165 #if FFETARGET_okCOMPLEX4
2166 case FFEINFO_kindtypeREAL4
:
2167 ptr
.complex4
= malloc_new_zkp (ffebld_constant_pool(),
2168 "ffebldConstantArray",
2169 size
*= sizeof (ffetargetComplex4
),
2174 #if FFETARGET_okCOMPLEX5
2175 case FFEINFO_kindtypeREAL5
:
2176 ptr
.complex5
= malloc_new_zkp (ffebld_constant_pool(),
2177 "ffebldConstantArray",
2178 size
*= sizeof (ffetargetComplex5
),
2183 #if FFETARGET_okCOMPLEX6
2184 case FFEINFO_kindtypeREAL6
:
2185 ptr
.complex6
= malloc_new_zkp (ffebld_constant_pool(),
2186 "ffebldConstantArray",
2187 size
*= sizeof (ffetargetComplex6
),
2192 #if FFETARGET_okCOMPLEX7
2193 case FFEINFO_kindtypeREAL7
:
2194 ptr
.complex7
= malloc_new_zkp (ffebld_constant_pool(),
2195 "ffebldConstantArray",
2196 size
*= sizeof (ffetargetComplex7
),
2201 #if FFETARGET_okCOMPLEX8
2202 case FFEINFO_kindtypeREAL8
:
2203 ptr
.complex8
= malloc_new_zkp (ffebld_constant_pool(),
2204 "ffebldConstantArray",
2205 size
*= sizeof (ffetargetComplex8
),
2211 assert ("bad COMPLEX kindtype" == NULL
);
2216 case FFEINFO_basictypeCHARACTER
:
2219 #if FFETARGET_okCHARACTER1
2220 case FFEINFO_kindtypeCHARACTER1
:
2221 ptr
.character1
= malloc_new_zkp (ffebld_constant_pool(),
2222 "ffebldConstantArray",
2224 *= sizeof (ffetargetCharacterUnit1
),
2229 #if FFETARGET_okCHARACTER2
2230 case FFEINFO_kindtypeCHARACTER2
:
2231 ptr
.character2
= malloc_new_zkp (ffebld_constant_pool(),
2232 "ffebldConstantArray",
2234 *= sizeof (ffetargetCharacterUnit2
),
2239 #if FFETARGET_okCHARACTER3
2240 case FFEINFO_kindtypeCHARACTER3
:
2241 ptr
.character3
= malloc_new_zkp (ffebld_constant_pool(),
2242 "ffebldConstantArray",
2244 *= sizeof (ffetargetCharacterUnit3
),
2249 #if FFETARGET_okCHARACTER4
2250 case FFEINFO_kindtypeCHARACTER4
:
2251 ptr
.character4
= malloc_new_zkp (ffebld_constant_pool(),
2252 "ffebldConstantArray",
2254 *= sizeof (ffetargetCharacterUnit4
),
2259 #if FFETARGET_okCHARACTER5
2260 case FFEINFO_kindtypeCHARACTER5
:
2261 ptr
.character5
= malloc_new_zkp (ffebld_constant_pool(),
2262 "ffebldConstantArray",
2264 *= sizeof (ffetargetCharacterUnit5
),
2269 #if FFETARGET_okCHARACTER6
2270 case FFEINFO_kindtypeCHARACTER6
:
2271 ptr
.character6
= malloc_new_zkp (ffebld_constant_pool(),
2272 "ffebldConstantArray",
2274 *= sizeof (ffetargetCharacterUnit6
),
2279 #if FFETARGET_okCHARACTER7
2280 case FFEINFO_kindtypeCHARACTER7
:
2281 ptr
.character7
= malloc_new_zkp (ffebld_constant_pool(),
2282 "ffebldConstantArray",
2284 *= sizeof (ffetargetCharacterUnit7
),
2289 #if FFETARGET_okCHARACTER8
2290 case FFEINFO_kindtypeCHARACTER8
:
2291 ptr
.character8
= malloc_new_zkp (ffebld_constant_pool(),
2292 "ffebldConstantArray",
2294 *= sizeof (ffetargetCharacterUnit8
),
2300 assert ("bad CHARACTER kindtype" == NULL
);
2306 assert ("bad basictype" == NULL
);
2313 /* ffebld_constantarray_preparray -- Prepare for copy between arrays
2317 Like _prepare, but the source is an array instead of a single-value
2321 ffebld_constantarray_preparray (void **aptr
, void **cptr
, size_t *size
,
2322 ffebldConstantArray array
, ffeinfoBasictype abt
, ffeinfoKindtype akt
,
2323 ffetargetOffset offset
, ffebldConstantArray source_array
,
2324 ffeinfoBasictype cbt
, ffeinfoKindtype ckt
)
2328 case FFEINFO_basictypeINTEGER
:
2331 #if FFETARGET_okINTEGER1
2332 case FFEINFO_kindtypeINTEGER1
:
2333 *aptr
= array
.integer1
+ offset
;
2337 #if FFETARGET_okINTEGER2
2338 case FFEINFO_kindtypeINTEGER2
:
2339 *aptr
= array
.integer2
+ offset
;
2343 #if FFETARGET_okINTEGER3
2344 case FFEINFO_kindtypeINTEGER3
:
2345 *aptr
= array
.integer3
+ offset
;
2349 #if FFETARGET_okINTEGER4
2350 case FFEINFO_kindtypeINTEGER4
:
2351 *aptr
= array
.integer4
+ offset
;
2355 #if FFETARGET_okINTEGER5
2356 case FFEINFO_kindtypeINTEGER5
:
2357 *aptr
= array
.integer5
+ offset
;
2361 #if FFETARGET_okINTEGER6
2362 case FFEINFO_kindtypeINTEGER6
:
2363 *aptr
= array
.integer6
+ offset
;
2367 #if FFETARGET_okINTEGER7
2368 case FFEINFO_kindtypeINTEGER7
:
2369 *aptr
= array
.integer7
+ offset
;
2373 #if FFETARGET_okINTEGER8
2374 case FFEINFO_kindtypeINTEGER8
:
2375 *aptr
= array
.integer8
+ offset
;
2380 assert ("bad INTEGER akindtype" == NULL
);
2385 case FFEINFO_basictypeLOGICAL
:
2388 #if FFETARGET_okLOGICAL1
2389 case FFEINFO_kindtypeLOGICAL1
:
2390 *aptr
= array
.logical1
+ offset
;
2394 #if FFETARGET_okLOGICAL2
2395 case FFEINFO_kindtypeLOGICAL2
:
2396 *aptr
= array
.logical2
+ offset
;
2400 #if FFETARGET_okLOGICAL3
2401 case FFEINFO_kindtypeLOGICAL3
:
2402 *aptr
= array
.logical3
+ offset
;
2406 #if FFETARGET_okLOGICAL4
2407 case FFEINFO_kindtypeLOGICAL4
:
2408 *aptr
= array
.logical4
+ offset
;
2412 #if FFETARGET_okLOGICAL5
2413 case FFEINFO_kindtypeLOGICAL5
:
2414 *aptr
= array
.logical5
+ offset
;
2418 #if FFETARGET_okLOGICAL6
2419 case FFEINFO_kindtypeLOGICAL6
:
2420 *aptr
= array
.logical6
+ offset
;
2424 #if FFETARGET_okLOGICAL7
2425 case FFEINFO_kindtypeLOGICAL7
:
2426 *aptr
= array
.logical7
+ offset
;
2430 #if FFETARGET_okLOGICAL8
2431 case FFEINFO_kindtypeLOGICAL8
:
2432 *aptr
= array
.logical8
+ offset
;
2437 assert ("bad LOGICAL akindtype" == NULL
);
2442 case FFEINFO_basictypeREAL
:
2445 #if FFETARGET_okREAL1
2446 case FFEINFO_kindtypeREAL1
:
2447 *aptr
= array
.real1
+ offset
;
2451 #if FFETARGET_okREAL2
2452 case FFEINFO_kindtypeREAL2
:
2453 *aptr
= array
.real2
+ offset
;
2457 #if FFETARGET_okREAL3
2458 case FFEINFO_kindtypeREAL3
:
2459 *aptr
= array
.real3
+ offset
;
2463 #if FFETARGET_okREAL4
2464 case FFEINFO_kindtypeREAL4
:
2465 *aptr
= array
.real4
+ offset
;
2469 #if FFETARGET_okREAL5
2470 case FFEINFO_kindtypeREAL5
:
2471 *aptr
= array
.real5
+ offset
;
2475 #if FFETARGET_okREAL6
2476 case FFEINFO_kindtypeREAL6
:
2477 *aptr
= array
.real6
+ offset
;
2481 #if FFETARGET_okREAL7
2482 case FFEINFO_kindtypeREAL7
:
2483 *aptr
= array
.real7
+ offset
;
2487 #if FFETARGET_okREAL8
2488 case FFEINFO_kindtypeREAL8
:
2489 *aptr
= array
.real8
+ offset
;
2494 assert ("bad REAL akindtype" == NULL
);
2499 case FFEINFO_basictypeCOMPLEX
:
2502 #if FFETARGET_okCOMPLEX1
2503 case FFEINFO_kindtypeREAL1
:
2504 *aptr
= array
.complex1
+ offset
;
2508 #if FFETARGET_okCOMPLEX2
2509 case FFEINFO_kindtypeREAL2
:
2510 *aptr
= array
.complex2
+ offset
;
2514 #if FFETARGET_okCOMPLEX3
2515 case FFEINFO_kindtypeREAL3
:
2516 *aptr
= array
.complex3
+ offset
;
2520 #if FFETARGET_okCOMPLEX4
2521 case FFEINFO_kindtypeREAL4
:
2522 *aptr
= array
.complex4
+ offset
;
2526 #if FFETARGET_okCOMPLEX5
2527 case FFEINFO_kindtypeREAL5
:
2528 *aptr
= array
.complex5
+ offset
;
2532 #if FFETARGET_okCOMPLEX6
2533 case FFEINFO_kindtypeREAL6
:
2534 *aptr
= array
.complex6
+ offset
;
2538 #if FFETARGET_okCOMPLEX7
2539 case FFEINFO_kindtypeREAL7
:
2540 *aptr
= array
.complex7
+ offset
;
2544 #if FFETARGET_okCOMPLEX8
2545 case FFEINFO_kindtypeREAL8
:
2546 *aptr
= array
.complex8
+ offset
;
2551 assert ("bad COMPLEX akindtype" == NULL
);
2556 case FFEINFO_basictypeCHARACTER
:
2559 #if FFETARGET_okCHARACTER1
2560 case FFEINFO_kindtypeCHARACTER1
:
2561 *aptr
= array
.character1
+ offset
;
2565 #if FFETARGET_okCHARACTER2
2566 case FFEINFO_kindtypeCHARACTER2
:
2567 *aptr
= array
.character2
+ offset
;
2571 #if FFETARGET_okCHARACTER3
2572 case FFEINFO_kindtypeCHARACTER3
:
2573 *aptr
= array
.character3
+ offset
;
2577 #if FFETARGET_okCHARACTER4
2578 case FFEINFO_kindtypeCHARACTER4
:
2579 *aptr
= array
.character4
+ offset
;
2583 #if FFETARGET_okCHARACTER5
2584 case FFEINFO_kindtypeCHARACTER5
:
2585 *aptr
= array
.character5
+ offset
;
2589 #if FFETARGET_okCHARACTER6
2590 case FFEINFO_kindtypeCHARACTER6
:
2591 *aptr
= array
.character6
+ offset
;
2595 #if FFETARGET_okCHARACTER7
2596 case FFEINFO_kindtypeCHARACTER7
:
2597 *aptr
= array
.character7
+ offset
;
2601 #if FFETARGET_okCHARACTER8
2602 case FFEINFO_kindtypeCHARACTER8
:
2603 *aptr
= array
.character8
+ offset
;
2608 assert ("bad CHARACTER akindtype" == NULL
);
2614 assert ("bad abasictype" == NULL
);
2620 case FFEINFO_basictypeINTEGER
:
2623 #if FFETARGET_okINTEGER1
2624 case FFEINFO_kindtypeINTEGER1
:
2625 *cptr
= source_array
.integer1
;
2626 *size
= sizeof (*source_array
.integer1
);
2630 #if FFETARGET_okINTEGER2
2631 case FFEINFO_kindtypeINTEGER2
:
2632 *cptr
= source_array
.integer2
;
2633 *size
= sizeof (*source_array
.integer2
);
2637 #if FFETARGET_okINTEGER3
2638 case FFEINFO_kindtypeINTEGER3
:
2639 *cptr
= source_array
.integer3
;
2640 *size
= sizeof (*source_array
.integer3
);
2644 #if FFETARGET_okINTEGER4
2645 case FFEINFO_kindtypeINTEGER4
:
2646 *cptr
= source_array
.integer4
;
2647 *size
= sizeof (*source_array
.integer4
);
2651 #if FFETARGET_okINTEGER5
2652 case FFEINFO_kindtypeINTEGER5
:
2653 *cptr
= source_array
.integer5
;
2654 *size
= sizeof (*source_array
.integer5
);
2658 #if FFETARGET_okINTEGER6
2659 case FFEINFO_kindtypeINTEGER6
:
2660 *cptr
= source_array
.integer6
;
2661 *size
= sizeof (*source_array
.integer6
);
2665 #if FFETARGET_okINTEGER7
2666 case FFEINFO_kindtypeINTEGER7
:
2667 *cptr
= source_array
.integer7
;
2668 *size
= sizeof (*source_array
.integer7
);
2672 #if FFETARGET_okINTEGER8
2673 case FFEINFO_kindtypeINTEGER8
:
2674 *cptr
= source_array
.integer8
;
2675 *size
= sizeof (*source_array
.integer8
);
2680 assert ("bad INTEGER ckindtype" == NULL
);
2685 case FFEINFO_basictypeLOGICAL
:
2688 #if FFETARGET_okLOGICAL1
2689 case FFEINFO_kindtypeLOGICAL1
:
2690 *cptr
= source_array
.logical1
;
2691 *size
= sizeof (*source_array
.logical1
);
2695 #if FFETARGET_okLOGICAL2
2696 case FFEINFO_kindtypeLOGICAL2
:
2697 *cptr
= source_array
.logical2
;
2698 *size
= sizeof (*source_array
.logical2
);
2702 #if FFETARGET_okLOGICAL3
2703 case FFEINFO_kindtypeLOGICAL3
:
2704 *cptr
= source_array
.logical3
;
2705 *size
= sizeof (*source_array
.logical3
);
2709 #if FFETARGET_okLOGICAL4
2710 case FFEINFO_kindtypeLOGICAL4
:
2711 *cptr
= source_array
.logical4
;
2712 *size
= sizeof (*source_array
.logical4
);
2716 #if FFETARGET_okLOGICAL5
2717 case FFEINFO_kindtypeLOGICAL5
:
2718 *cptr
= source_array
.logical5
;
2719 *size
= sizeof (*source_array
.logical5
);
2723 #if FFETARGET_okLOGICAL6
2724 case FFEINFO_kindtypeLOGICAL6
:
2725 *cptr
= source_array
.logical6
;
2726 *size
= sizeof (*source_array
.logical6
);
2730 #if FFETARGET_okLOGICAL7
2731 case FFEINFO_kindtypeLOGICAL7
:
2732 *cptr
= source_array
.logical7
;
2733 *size
= sizeof (*source_array
.logical7
);
2737 #if FFETARGET_okLOGICAL8
2738 case FFEINFO_kindtypeLOGICAL8
:
2739 *cptr
= source_array
.logical8
;
2740 *size
= sizeof (*source_array
.logical8
);
2745 assert ("bad LOGICAL ckindtype" == NULL
);
2750 case FFEINFO_basictypeREAL
:
2753 #if FFETARGET_okREAL1
2754 case FFEINFO_kindtypeREAL1
:
2755 *cptr
= source_array
.real1
;
2756 *size
= sizeof (*source_array
.real1
);
2760 #if FFETARGET_okREAL2
2761 case FFEINFO_kindtypeREAL2
:
2762 *cptr
= source_array
.real2
;
2763 *size
= sizeof (*source_array
.real2
);
2767 #if FFETARGET_okREAL3
2768 case FFEINFO_kindtypeREAL3
:
2769 *cptr
= source_array
.real3
;
2770 *size
= sizeof (*source_array
.real3
);
2774 #if FFETARGET_okREAL4
2775 case FFEINFO_kindtypeREAL4
:
2776 *cptr
= source_array
.real4
;
2777 *size
= sizeof (*source_array
.real4
);
2781 #if FFETARGET_okREAL5
2782 case FFEINFO_kindtypeREAL5
:
2783 *cptr
= source_array
.real5
;
2784 *size
= sizeof (*source_array
.real5
);
2788 #if FFETARGET_okREAL6
2789 case FFEINFO_kindtypeREAL6
:
2790 *cptr
= source_array
.real6
;
2791 *size
= sizeof (*source_array
.real6
);
2795 #if FFETARGET_okREAL7
2796 case FFEINFO_kindtypeREAL7
:
2797 *cptr
= source_array
.real7
;
2798 *size
= sizeof (*source_array
.real7
);
2802 #if FFETARGET_okREAL8
2803 case FFEINFO_kindtypeREAL8
:
2804 *cptr
= source_array
.real8
;
2805 *size
= sizeof (*source_array
.real8
);
2810 assert ("bad REAL ckindtype" == NULL
);
2815 case FFEINFO_basictypeCOMPLEX
:
2818 #if FFETARGET_okCOMPLEX1
2819 case FFEINFO_kindtypeREAL1
:
2820 *cptr
= source_array
.complex1
;
2821 *size
= sizeof (*source_array
.complex1
);
2825 #if FFETARGET_okCOMPLEX2
2826 case FFEINFO_kindtypeREAL2
:
2827 *cptr
= source_array
.complex2
;
2828 *size
= sizeof (*source_array
.complex2
);
2832 #if FFETARGET_okCOMPLEX3
2833 case FFEINFO_kindtypeREAL3
:
2834 *cptr
= source_array
.complex3
;
2835 *size
= sizeof (*source_array
.complex3
);
2839 #if FFETARGET_okCOMPLEX4
2840 case FFEINFO_kindtypeREAL4
:
2841 *cptr
= source_array
.complex4
;
2842 *size
= sizeof (*source_array
.complex4
);
2846 #if FFETARGET_okCOMPLEX5
2847 case FFEINFO_kindtypeREAL5
:
2848 *cptr
= source_array
.complex5
;
2849 *size
= sizeof (*source_array
.complex5
);
2853 #if FFETARGET_okCOMPLEX6
2854 case FFEINFO_kindtypeREAL6
:
2855 *cptr
= source_array
.complex6
;
2856 *size
= sizeof (*source_array
.complex6
);
2860 #if FFETARGET_okCOMPLEX7
2861 case FFEINFO_kindtypeREAL7
:
2862 *cptr
= source_array
.complex7
;
2863 *size
= sizeof (*source_array
.complex7
);
2867 #if FFETARGET_okCOMPLEX8
2868 case FFEINFO_kindtypeREAL8
:
2869 *cptr
= source_array
.complex8
;
2870 *size
= sizeof (*source_array
.complex8
);
2875 assert ("bad COMPLEX ckindtype" == NULL
);
2880 case FFEINFO_basictypeCHARACTER
:
2883 #if FFETARGET_okCHARACTER1
2884 case FFEINFO_kindtypeCHARACTER1
:
2885 *cptr
= source_array
.character1
;
2886 *size
= sizeof (*source_array
.character1
);
2890 #if FFETARGET_okCHARACTER2
2891 case FFEINFO_kindtypeCHARACTER2
:
2892 *cptr
= source_array
.character2
;
2893 *size
= sizeof (*source_array
.character2
);
2897 #if FFETARGET_okCHARACTER3
2898 case FFEINFO_kindtypeCHARACTER3
:
2899 *cptr
= source_array
.character3
;
2900 *size
= sizeof (*source_array
.character3
);
2904 #if FFETARGET_okCHARACTER4
2905 case FFEINFO_kindtypeCHARACTER4
:
2906 *cptr
= source_array
.character4
;
2907 *size
= sizeof (*source_array
.character4
);
2911 #if FFETARGET_okCHARACTER5
2912 case FFEINFO_kindtypeCHARACTER5
:
2913 *cptr
= source_array
.character5
;
2914 *size
= sizeof (*source_array
.character5
);
2918 #if FFETARGET_okCHARACTER6
2919 case FFEINFO_kindtypeCHARACTER6
:
2920 *cptr
= source_array
.character6
;
2921 *size
= sizeof (*source_array
.character6
);
2925 #if FFETARGET_okCHARACTER7
2926 case FFEINFO_kindtypeCHARACTER7
:
2927 *cptr
= source_array
.character7
;
2928 *size
= sizeof (*source_array
.character7
);
2932 #if FFETARGET_okCHARACTER8
2933 case FFEINFO_kindtypeCHARACTER8
:
2934 *cptr
= source_array
.character8
;
2935 *size
= sizeof (*source_array
.character8
);
2940 assert ("bad CHARACTER ckindtype" == NULL
);
2946 assert ("bad cbasictype" == NULL
);
2951 /* ffebld_constantarray_prepare -- Prepare for copy between value and array
2955 Like _put, but just returns the pointers to the beginnings of the
2956 array and the constant and returns the size (the amount of info to
2957 copy). The idea is that the caller can use memcpy to accomplish the
2958 same thing as _put (though slower), or the caller can use a different
2959 function that swaps bytes, words, etc for a different target machine.
2960 Also, the type of the array may be different from the type of the
2961 constant; the array type is used to determine the meaning (scale) of
2962 the offset field (to calculate the array pointer), the constant type is
2963 used to determine the constant pointer and the size (amount of info to
2967 ffebld_constantarray_prepare (void **aptr
, void **cptr
, size_t *size
,
2968 ffebldConstantArray array
, ffeinfoBasictype abt
, ffeinfoKindtype akt
,
2969 ffetargetOffset offset
, ffebldConstantUnion
*constant
,
2970 ffeinfoBasictype cbt
, ffeinfoKindtype ckt
)
2974 case FFEINFO_basictypeINTEGER
:
2977 #if FFETARGET_okINTEGER1
2978 case FFEINFO_kindtypeINTEGER1
:
2979 *aptr
= array
.integer1
+ offset
;
2983 #if FFETARGET_okINTEGER2
2984 case FFEINFO_kindtypeINTEGER2
:
2985 *aptr
= array
.integer2
+ offset
;
2989 #if FFETARGET_okINTEGER3
2990 case FFEINFO_kindtypeINTEGER3
:
2991 *aptr
= array
.integer3
+ offset
;
2995 #if FFETARGET_okINTEGER4
2996 case FFEINFO_kindtypeINTEGER4
:
2997 *aptr
= array
.integer4
+ offset
;
3001 #if FFETARGET_okINTEGER5
3002 case FFEINFO_kindtypeINTEGER5
:
3003 *aptr
= array
.integer5
+ offset
;
3007 #if FFETARGET_okINTEGER6
3008 case FFEINFO_kindtypeINTEGER6
:
3009 *aptr
= array
.integer6
+ offset
;
3013 #if FFETARGET_okINTEGER7
3014 case FFEINFO_kindtypeINTEGER7
:
3015 *aptr
= array
.integer7
+ offset
;
3019 #if FFETARGET_okINTEGER8
3020 case FFEINFO_kindtypeINTEGER8
:
3021 *aptr
= array
.integer8
+ offset
;
3026 assert ("bad INTEGER akindtype" == NULL
);
3031 case FFEINFO_basictypeLOGICAL
:
3034 #if FFETARGET_okLOGICAL1
3035 case FFEINFO_kindtypeLOGICAL1
:
3036 *aptr
= array
.logical1
+ offset
;
3040 #if FFETARGET_okLOGICAL2
3041 case FFEINFO_kindtypeLOGICAL2
:
3042 *aptr
= array
.logical2
+ offset
;
3046 #if FFETARGET_okLOGICAL3
3047 case FFEINFO_kindtypeLOGICAL3
:
3048 *aptr
= array
.logical3
+ offset
;
3052 #if FFETARGET_okLOGICAL4
3053 case FFEINFO_kindtypeLOGICAL4
:
3054 *aptr
= array
.logical4
+ offset
;
3058 #if FFETARGET_okLOGICAL5
3059 case FFEINFO_kindtypeLOGICAL5
:
3060 *aptr
= array
.logical5
+ offset
;
3064 #if FFETARGET_okLOGICAL6
3065 case FFEINFO_kindtypeLOGICAL6
:
3066 *aptr
= array
.logical6
+ offset
;
3070 #if FFETARGET_okLOGICAL7
3071 case FFEINFO_kindtypeLOGICAL7
:
3072 *aptr
= array
.logical7
+ offset
;
3076 #if FFETARGET_okLOGICAL8
3077 case FFEINFO_kindtypeLOGICAL8
:
3078 *aptr
= array
.logical8
+ offset
;
3083 assert ("bad LOGICAL akindtype" == NULL
);
3088 case FFEINFO_basictypeREAL
:
3091 #if FFETARGET_okREAL1
3092 case FFEINFO_kindtypeREAL1
:
3093 *aptr
= array
.real1
+ offset
;
3097 #if FFETARGET_okREAL2
3098 case FFEINFO_kindtypeREAL2
:
3099 *aptr
= array
.real2
+ offset
;
3103 #if FFETARGET_okREAL3
3104 case FFEINFO_kindtypeREAL3
:
3105 *aptr
= array
.real3
+ offset
;
3109 #if FFETARGET_okREAL4
3110 case FFEINFO_kindtypeREAL4
:
3111 *aptr
= array
.real4
+ offset
;
3115 #if FFETARGET_okREAL5
3116 case FFEINFO_kindtypeREAL5
:
3117 *aptr
= array
.real5
+ offset
;
3121 #if FFETARGET_okREAL6
3122 case FFEINFO_kindtypeREAL6
:
3123 *aptr
= array
.real6
+ offset
;
3127 #if FFETARGET_okREAL7
3128 case FFEINFO_kindtypeREAL7
:
3129 *aptr
= array
.real7
+ offset
;
3133 #if FFETARGET_okREAL8
3134 case FFEINFO_kindtypeREAL8
:
3135 *aptr
= array
.real8
+ offset
;
3140 assert ("bad REAL akindtype" == NULL
);
3145 case FFEINFO_basictypeCOMPLEX
:
3148 #if FFETARGET_okCOMPLEX1
3149 case FFEINFO_kindtypeREAL1
:
3150 *aptr
= array
.complex1
+ offset
;
3154 #if FFETARGET_okCOMPLEX2
3155 case FFEINFO_kindtypeREAL2
:
3156 *aptr
= array
.complex2
+ offset
;
3160 #if FFETARGET_okCOMPLEX3
3161 case FFEINFO_kindtypeREAL3
:
3162 *aptr
= array
.complex3
+ offset
;
3166 #if FFETARGET_okCOMPLEX4
3167 case FFEINFO_kindtypeREAL4
:
3168 *aptr
= array
.complex4
+ offset
;
3172 #if FFETARGET_okCOMPLEX5
3173 case FFEINFO_kindtypeREAL5
:
3174 *aptr
= array
.complex5
+ offset
;
3178 #if FFETARGET_okCOMPLEX6
3179 case FFEINFO_kindtypeREAL6
:
3180 *aptr
= array
.complex6
+ offset
;
3184 #if FFETARGET_okCOMPLEX7
3185 case FFEINFO_kindtypeREAL7
:
3186 *aptr
= array
.complex7
+ offset
;
3190 #if FFETARGET_okCOMPLEX8
3191 case FFEINFO_kindtypeREAL8
:
3192 *aptr
= array
.complex8
+ offset
;
3197 assert ("bad COMPLEX akindtype" == NULL
);
3202 case FFEINFO_basictypeCHARACTER
:
3205 #if FFETARGET_okCHARACTER1
3206 case FFEINFO_kindtypeCHARACTER1
:
3207 *aptr
= array
.character1
+ offset
;
3211 #if FFETARGET_okCHARACTER2
3212 case FFEINFO_kindtypeCHARACTER2
:
3213 *aptr
= array
.character2
+ offset
;
3217 #if FFETARGET_okCHARACTER3
3218 case FFEINFO_kindtypeCHARACTER3
:
3219 *aptr
= array
.character3
+ offset
;
3223 #if FFETARGET_okCHARACTER4
3224 case FFEINFO_kindtypeCHARACTER4
:
3225 *aptr
= array
.character4
+ offset
;
3229 #if FFETARGET_okCHARACTER5
3230 case FFEINFO_kindtypeCHARACTER5
:
3231 *aptr
= array
.character5
+ offset
;
3235 #if FFETARGET_okCHARACTER6
3236 case FFEINFO_kindtypeCHARACTER6
:
3237 *aptr
= array
.character6
+ offset
;
3241 #if FFETARGET_okCHARACTER7
3242 case FFEINFO_kindtypeCHARACTER7
:
3243 *aptr
= array
.character7
+ offset
;
3247 #if FFETARGET_okCHARACTER8
3248 case FFEINFO_kindtypeCHARACTER8
:
3249 *aptr
= array
.character8
+ offset
;
3254 assert ("bad CHARACTER akindtype" == NULL
);
3260 assert ("bad abasictype" == NULL
);
3266 case FFEINFO_basictypeINTEGER
:
3269 #if FFETARGET_okINTEGER1
3270 case FFEINFO_kindtypeINTEGER1
:
3271 *cptr
= &constant
->integer1
;
3272 *size
= sizeof (constant
->integer1
);
3276 #if FFETARGET_okINTEGER2
3277 case FFEINFO_kindtypeINTEGER2
:
3278 *cptr
= &constant
->integer2
;
3279 *size
= sizeof (constant
->integer2
);
3283 #if FFETARGET_okINTEGER3
3284 case FFEINFO_kindtypeINTEGER3
:
3285 *cptr
= &constant
->integer3
;
3286 *size
= sizeof (constant
->integer3
);
3290 #if FFETARGET_okINTEGER4
3291 case FFEINFO_kindtypeINTEGER4
:
3292 *cptr
= &constant
->integer4
;
3293 *size
= sizeof (constant
->integer4
);
3297 #if FFETARGET_okINTEGER5
3298 case FFEINFO_kindtypeINTEGER5
:
3299 *cptr
= &constant
->integer5
;
3300 *size
= sizeof (constant
->integer5
);
3304 #if FFETARGET_okINTEGER6
3305 case FFEINFO_kindtypeINTEGER6
:
3306 *cptr
= &constant
->integer6
;
3307 *size
= sizeof (constant
->integer6
);
3311 #if FFETARGET_okINTEGER7
3312 case FFEINFO_kindtypeINTEGER7
:
3313 *cptr
= &constant
->integer7
;
3314 *size
= sizeof (constant
->integer7
);
3318 #if FFETARGET_okINTEGER8
3319 case FFEINFO_kindtypeINTEGER8
:
3320 *cptr
= &constant
->integer8
;
3321 *size
= sizeof (constant
->integer8
);
3326 assert ("bad INTEGER ckindtype" == NULL
);
3331 case FFEINFO_basictypeLOGICAL
:
3334 #if FFETARGET_okLOGICAL1
3335 case FFEINFO_kindtypeLOGICAL1
:
3336 *cptr
= &constant
->logical1
;
3337 *size
= sizeof (constant
->logical1
);
3341 #if FFETARGET_okLOGICAL2
3342 case FFEINFO_kindtypeLOGICAL2
:
3343 *cptr
= &constant
->logical2
;
3344 *size
= sizeof (constant
->logical2
);
3348 #if FFETARGET_okLOGICAL3
3349 case FFEINFO_kindtypeLOGICAL3
:
3350 *cptr
= &constant
->logical3
;
3351 *size
= sizeof (constant
->logical3
);
3355 #if FFETARGET_okLOGICAL4
3356 case FFEINFO_kindtypeLOGICAL4
:
3357 *cptr
= &constant
->logical4
;
3358 *size
= sizeof (constant
->logical4
);
3362 #if FFETARGET_okLOGICAL5
3363 case FFEINFO_kindtypeLOGICAL5
:
3364 *cptr
= &constant
->logical5
;
3365 *size
= sizeof (constant
->logical5
);
3369 #if FFETARGET_okLOGICAL6
3370 case FFEINFO_kindtypeLOGICAL6
:
3371 *cptr
= &constant
->logical6
;
3372 *size
= sizeof (constant
->logical6
);
3376 #if FFETARGET_okLOGICAL7
3377 case FFEINFO_kindtypeLOGICAL7
:
3378 *cptr
= &constant
->logical7
;
3379 *size
= sizeof (constant
->logical7
);
3383 #if FFETARGET_okLOGICAL8
3384 case FFEINFO_kindtypeLOGICAL8
:
3385 *cptr
= &constant
->logical8
;
3386 *size
= sizeof (constant
->logical8
);
3391 assert ("bad LOGICAL ckindtype" == NULL
);
3396 case FFEINFO_basictypeREAL
:
3399 #if FFETARGET_okREAL1
3400 case FFEINFO_kindtypeREAL1
:
3401 *cptr
= &constant
->real1
;
3402 *size
= sizeof (constant
->real1
);
3406 #if FFETARGET_okREAL2
3407 case FFEINFO_kindtypeREAL2
:
3408 *cptr
= &constant
->real2
;
3409 *size
= sizeof (constant
->real2
);
3413 #if FFETARGET_okREAL3
3414 case FFEINFO_kindtypeREAL3
:
3415 *cptr
= &constant
->real3
;
3416 *size
= sizeof (constant
->real3
);
3420 #if FFETARGET_okREAL4
3421 case FFEINFO_kindtypeREAL4
:
3422 *cptr
= &constant
->real4
;
3423 *size
= sizeof (constant
->real4
);
3427 #if FFETARGET_okREAL5
3428 case FFEINFO_kindtypeREAL5
:
3429 *cptr
= &constant
->real5
;
3430 *size
= sizeof (constant
->real5
);
3434 #if FFETARGET_okREAL6
3435 case FFEINFO_kindtypeREAL6
:
3436 *cptr
= &constant
->real6
;
3437 *size
= sizeof (constant
->real6
);
3441 #if FFETARGET_okREAL7
3442 case FFEINFO_kindtypeREAL7
:
3443 *cptr
= &constant
->real7
;
3444 *size
= sizeof (constant
->real7
);
3448 #if FFETARGET_okREAL8
3449 case FFEINFO_kindtypeREAL8
:
3450 *cptr
= &constant
->real8
;
3451 *size
= sizeof (constant
->real8
);
3456 assert ("bad REAL ckindtype" == NULL
);
3461 case FFEINFO_basictypeCOMPLEX
:
3464 #if FFETARGET_okCOMPLEX1
3465 case FFEINFO_kindtypeREAL1
:
3466 *cptr
= &constant
->complex1
;
3467 *size
= sizeof (constant
->complex1
);
3471 #if FFETARGET_okCOMPLEX2
3472 case FFEINFO_kindtypeREAL2
:
3473 *cptr
= &constant
->complex2
;
3474 *size
= sizeof (constant
->complex2
);
3478 #if FFETARGET_okCOMPLEX3
3479 case FFEINFO_kindtypeREAL3
:
3480 *cptr
= &constant
->complex3
;
3481 *size
= sizeof (constant
->complex3
);
3485 #if FFETARGET_okCOMPLEX4
3486 case FFEINFO_kindtypeREAL4
:
3487 *cptr
= &constant
->complex4
;
3488 *size
= sizeof (constant
->complex4
);
3492 #if FFETARGET_okCOMPLEX5
3493 case FFEINFO_kindtypeREAL5
:
3494 *cptr
= &constant
->complex5
;
3495 *size
= sizeof (constant
->complex5
);
3499 #if FFETARGET_okCOMPLEX6
3500 case FFEINFO_kindtypeREAL6
:
3501 *cptr
= &constant
->complex6
;
3502 *size
= sizeof (constant
->complex6
);
3506 #if FFETARGET_okCOMPLEX7
3507 case FFEINFO_kindtypeREAL7
:
3508 *cptr
= &constant
->complex7
;
3509 *size
= sizeof (constant
->complex7
);
3513 #if FFETARGET_okCOMPLEX8
3514 case FFEINFO_kindtypeREAL8
:
3515 *cptr
= &constant
->complex8
;
3516 *size
= sizeof (constant
->complex8
);
3521 assert ("bad COMPLEX ckindtype" == NULL
);
3526 case FFEINFO_basictypeCHARACTER
:
3529 #if FFETARGET_okCHARACTER1
3530 case FFEINFO_kindtypeCHARACTER1
:
3531 *cptr
= ffetarget_text_character1 (constant
->character1
);
3532 *size
= ffetarget_length_character1 (constant
->character1
);
3536 #if FFETARGET_okCHARACTER2
3537 case FFEINFO_kindtypeCHARACTER2
:
3538 *cptr
= ffetarget_text_character2 (constant
->character2
);
3539 *size
= ffetarget_length_character2 (constant
->character2
);
3543 #if FFETARGET_okCHARACTER3
3544 case FFEINFO_kindtypeCHARACTER3
:
3545 *cptr
= ffetarget_text_character3 (constant
->character3
);
3546 *size
= ffetarget_length_character3 (constant
->character3
);
3550 #if FFETARGET_okCHARACTER4
3551 case FFEINFO_kindtypeCHARACTER4
:
3552 *cptr
= ffetarget_text_character4 (constant
->character4
);
3553 *size
= ffetarget_length_character4 (constant
->character4
);
3557 #if FFETARGET_okCHARACTER5
3558 case FFEINFO_kindtypeCHARACTER5
:
3559 *cptr
= ffetarget_text_character5 (constant
->character5
);
3560 *size
= ffetarget_length_character5 (constant
->character5
);
3564 #if FFETARGET_okCHARACTER6
3565 case FFEINFO_kindtypeCHARACTER6
:
3566 *cptr
= ffetarget_text_character6 (constant
->character6
);
3567 *size
= ffetarget_length_character6 (constant
->character6
);
3571 #if FFETARGET_okCHARACTER7
3572 case FFEINFO_kindtypeCHARACTER7
:
3573 *cptr
= ffetarget_text_character7 (constant
->character7
);
3574 *size
= ffetarget_length_character7 (constant
->character7
);
3578 #if FFETARGET_okCHARACTER8
3579 case FFEINFO_kindtypeCHARACTER8
:
3580 *cptr
= ffetarget_text_character8 (constant
->character8
);
3581 *size
= ffetarget_length_character8 (constant
->character8
);
3586 assert ("bad CHARACTER ckindtype" == NULL
);
3592 assert ("bad cbasictype" == NULL
);
3597 /* ffebld_constantarray_put -- Put a value into an array of constants
3602 ffebld_constantarray_put (ffebldConstantArray array
, ffeinfoBasictype bt
,
3603 ffeinfoKindtype kt
, ffetargetOffset offset
, ffebldConstantUnion constant
)
3607 case FFEINFO_basictypeINTEGER
:
3610 #if FFETARGET_okINTEGER1
3611 case FFEINFO_kindtypeINTEGER1
:
3612 *(array
.integer1
+ offset
) = constant
.integer1
;
3616 #if FFETARGET_okINTEGER2
3617 case FFEINFO_kindtypeINTEGER2
:
3618 *(array
.integer2
+ offset
) = constant
.integer2
;
3622 #if FFETARGET_okINTEGER3
3623 case FFEINFO_kindtypeINTEGER3
:
3624 *(array
.integer3
+ offset
) = constant
.integer3
;
3628 #if FFETARGET_okINTEGER4
3629 case FFEINFO_kindtypeINTEGER4
:
3630 *(array
.integer4
+ offset
) = constant
.integer4
;
3634 #if FFETARGET_okINTEGER5
3635 case FFEINFO_kindtypeINTEGER5
:
3636 *(array
.integer5
+ offset
) = constant
.integer5
;
3640 #if FFETARGET_okINTEGER6
3641 case FFEINFO_kindtypeINTEGER6
:
3642 *(array
.integer6
+ offset
) = constant
.integer6
;
3646 #if FFETARGET_okINTEGER7
3647 case FFEINFO_kindtypeINTEGER7
:
3648 *(array
.integer7
+ offset
) = constant
.integer7
;
3652 #if FFETARGET_okINTEGER8
3653 case FFEINFO_kindtypeINTEGER8
:
3654 *(array
.integer8
+ offset
) = constant
.integer8
;
3659 assert ("bad INTEGER kindtype" == NULL
);
3664 case FFEINFO_basictypeLOGICAL
:
3667 #if FFETARGET_okLOGICAL1
3668 case FFEINFO_kindtypeLOGICAL1
:
3669 *(array
.logical1
+ offset
) = constant
.logical1
;
3673 #if FFETARGET_okLOGICAL2
3674 case FFEINFO_kindtypeLOGICAL2
:
3675 *(array
.logical2
+ offset
) = constant
.logical2
;
3679 #if FFETARGET_okLOGICAL3
3680 case FFEINFO_kindtypeLOGICAL3
:
3681 *(array
.logical3
+ offset
) = constant
.logical3
;
3685 #if FFETARGET_okLOGICAL4
3686 case FFEINFO_kindtypeLOGICAL4
:
3687 *(array
.logical4
+ offset
) = constant
.logical4
;
3691 #if FFETARGET_okLOGICAL5
3692 case FFEINFO_kindtypeLOGICAL5
:
3693 *(array
.logical5
+ offset
) = constant
.logical5
;
3697 #if FFETARGET_okLOGICAL6
3698 case FFEINFO_kindtypeLOGICAL6
:
3699 *(array
.logical6
+ offset
) = constant
.logical6
;
3703 #if FFETARGET_okLOGICAL7
3704 case FFEINFO_kindtypeLOGICAL7
:
3705 *(array
.logical7
+ offset
) = constant
.logical7
;
3709 #if FFETARGET_okLOGICAL8
3710 case FFEINFO_kindtypeLOGICAL8
:
3711 *(array
.logical8
+ offset
) = constant
.logical8
;
3716 assert ("bad LOGICAL kindtype" == NULL
);
3721 case FFEINFO_basictypeREAL
:
3724 #if FFETARGET_okREAL1
3725 case FFEINFO_kindtypeREAL1
:
3726 *(array
.real1
+ offset
) = constant
.real1
;
3730 #if FFETARGET_okREAL2
3731 case FFEINFO_kindtypeREAL2
:
3732 *(array
.real2
+ offset
) = constant
.real2
;
3736 #if FFETARGET_okREAL3
3737 case FFEINFO_kindtypeREAL3
:
3738 *(array
.real3
+ offset
) = constant
.real3
;
3742 #if FFETARGET_okREAL4
3743 case FFEINFO_kindtypeREAL4
:
3744 *(array
.real4
+ offset
) = constant
.real4
;
3748 #if FFETARGET_okREAL5
3749 case FFEINFO_kindtypeREAL5
:
3750 *(array
.real5
+ offset
) = constant
.real5
;
3754 #if FFETARGET_okREAL6
3755 case FFEINFO_kindtypeREAL6
:
3756 *(array
.real6
+ offset
) = constant
.real6
;
3760 #if FFETARGET_okREAL7
3761 case FFEINFO_kindtypeREAL7
:
3762 *(array
.real7
+ offset
) = constant
.real7
;
3766 #if FFETARGET_okREAL8
3767 case FFEINFO_kindtypeREAL8
:
3768 *(array
.real8
+ offset
) = constant
.real8
;
3773 assert ("bad REAL kindtype" == NULL
);
3778 case FFEINFO_basictypeCOMPLEX
:
3781 #if FFETARGET_okCOMPLEX1
3782 case FFEINFO_kindtypeREAL1
:
3783 *(array
.complex1
+ offset
) = constant
.complex1
;
3787 #if FFETARGET_okCOMPLEX2
3788 case FFEINFO_kindtypeREAL2
:
3789 *(array
.complex2
+ offset
) = constant
.complex2
;
3793 #if FFETARGET_okCOMPLEX3
3794 case FFEINFO_kindtypeREAL3
:
3795 *(array
.complex3
+ offset
) = constant
.complex3
;
3799 #if FFETARGET_okCOMPLEX4
3800 case FFEINFO_kindtypeREAL4
:
3801 *(array
.complex4
+ offset
) = constant
.complex4
;
3805 #if FFETARGET_okCOMPLEX5
3806 case FFEINFO_kindtypeREAL5
:
3807 *(array
.complex5
+ offset
) = constant
.complex5
;
3811 #if FFETARGET_okCOMPLEX6
3812 case FFEINFO_kindtypeREAL6
:
3813 *(array
.complex6
+ offset
) = constant
.complex6
;
3817 #if FFETARGET_okCOMPLEX7
3818 case FFEINFO_kindtypeREAL7
:
3819 *(array
.complex7
+ offset
) = constant
.complex7
;
3823 #if FFETARGET_okCOMPLEX8
3824 case FFEINFO_kindtypeREAL8
:
3825 *(array
.complex8
+ offset
) = constant
.complex8
;
3830 assert ("bad COMPLEX kindtype" == NULL
);
3835 case FFEINFO_basictypeCHARACTER
:
3838 #if FFETARGET_okCHARACTER1
3839 case FFEINFO_kindtypeCHARACTER1
:
3840 memcpy (array
.character1
+ offset
,
3841 ffetarget_text_character1 (constant
.character1
),
3842 ffetarget_length_character1 (constant
.character1
));
3846 #if FFETARGET_okCHARACTER2
3847 case FFEINFO_kindtypeCHARACTER2
:
3848 memcpy (array
.character2
+ offset
,
3849 ffetarget_text_character2 (constant
.character2
),
3850 ffetarget_length_character2 (constant
.character2
));
3854 #if FFETARGET_okCHARACTER3
3855 case FFEINFO_kindtypeCHARACTER3
:
3856 memcpy (array
.character3
+ offset
,
3857 ffetarget_text_character3 (constant
.character3
),
3858 ffetarget_length_character3 (constant
.character3
));
3862 #if FFETARGET_okCHARACTER4
3863 case FFEINFO_kindtypeCHARACTER4
:
3864 memcpy (array
.character4
+ offset
,
3865 ffetarget_text_character4 (constant
.character4
),
3866 ffetarget_length_character4 (constant
.character4
));
3870 #if FFETARGET_okCHARACTER5
3871 case FFEINFO_kindtypeCHARACTER5
:
3872 memcpy (array
.character5
+ offset
,
3873 ffetarget_text_character5 (constant
.character5
),
3874 ffetarget_length_character5 (constant
.character5
));
3878 #if FFETARGET_okCHARACTER6
3879 case FFEINFO_kindtypeCHARACTER6
:
3880 memcpy (array
.character6
+ offset
,
3881 ffetarget_text_character6 (constant
.character6
),
3882 ffetarget_length_character6 (constant
.character6
));
3886 #if FFETARGET_okCHARACTER7
3887 case FFEINFO_kindtypeCHARACTER7
:
3888 memcpy (array
.character7
+ offset
,
3889 ffetarget_text_character7 (constant
.character7
),
3890 ffetarget_length_character7 (constant
.character7
));
3894 #if FFETARGET_okCHARACTER8
3895 case FFEINFO_kindtypeCHARACTER8
:
3896 memcpy (array
.character8
+ offset
,
3897 ffetarget_text_character8 (constant
.character8
),
3898 ffetarget_length_character8 (constant
.character8
));
3903 assert ("bad CHARACTER kindtype" == NULL
);
3909 assert ("bad basictype" == NULL
);
3914 /* ffebld_init_0 -- Initialize the module
3921 assert (FFEBLD_op
== ARRAY_SIZE (ffebld_op_string_
));
3922 assert (FFEBLD_op
== ARRAY_SIZE (ffebld_arity_op_
));
3925 /* ffebld_init_1 -- Initialize the module for a file
3932 #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstFILE_
3935 #if FFETARGET_okCHARACTER1
3936 ffebld_constant_character1_
= NULL
;
3938 #if FFETARGET_okCHARACTER2
3939 ffebld_constant_character2_
= NULL
;
3941 #if FFETARGET_okCHARACTER3
3942 ffebld_constant_character3_
= NULL
;
3944 #if FFETARGET_okCHARACTER4
3945 ffebld_constant_character4_
= NULL
;
3947 #if FFETARGET_okCHARACTER5
3948 ffebld_constant_character5_
= NULL
;
3950 #if FFETARGET_okCHARACTER6
3951 ffebld_constant_character6_
= NULL
;
3953 #if FFETARGET_okCHARACTER7
3954 ffebld_constant_character7_
= NULL
;
3956 #if FFETARGET_okCHARACTER8
3957 ffebld_constant_character8_
= NULL
;
3959 #if FFETARGET_okCOMPLEX1
3960 ffebld_constant_complex1_
= NULL
;
3962 #if FFETARGET_okCOMPLEX2
3963 ffebld_constant_complex2_
= NULL
;
3965 #if FFETARGET_okCOMPLEX3
3966 ffebld_constant_complex3_
= NULL
;
3968 #if FFETARGET_okCOMPLEX4
3969 ffebld_constant_complex4_
= NULL
;
3971 #if FFETARGET_okCOMPLEX5
3972 ffebld_constant_complex5_
= NULL
;
3974 #if FFETARGET_okCOMPLEX6
3975 ffebld_constant_complex6_
= NULL
;
3977 #if FFETARGET_okCOMPLEX7
3978 ffebld_constant_complex7_
= NULL
;
3980 #if FFETARGET_okCOMPLEX8
3981 ffebld_constant_complex8_
= NULL
;
3983 #if FFETARGET_okINTEGER1
3984 ffebld_constant_integer1_
= NULL
;
3986 #if FFETARGET_okINTEGER2
3987 ffebld_constant_integer2_
= NULL
;
3989 #if FFETARGET_okINTEGER3
3990 ffebld_constant_integer3_
= NULL
;
3992 #if FFETARGET_okINTEGER4
3993 ffebld_constant_integer4_
= NULL
;
3995 #if FFETARGET_okINTEGER5
3996 ffebld_constant_integer5_
= NULL
;
3998 #if FFETARGET_okINTEGER6
3999 ffebld_constant_integer6_
= NULL
;
4001 #if FFETARGET_okINTEGER7
4002 ffebld_constant_integer7_
= NULL
;
4004 #if FFETARGET_okINTEGER8
4005 ffebld_constant_integer8_
= NULL
;
4007 #if FFETARGET_okLOGICAL1
4008 ffebld_constant_logical1_
= NULL
;
4010 #if FFETARGET_okLOGICAL2
4011 ffebld_constant_logical2_
= NULL
;
4013 #if FFETARGET_okLOGICAL3
4014 ffebld_constant_logical3_
= NULL
;
4016 #if FFETARGET_okLOGICAL4
4017 ffebld_constant_logical4_
= NULL
;
4019 #if FFETARGET_okLOGICAL5
4020 ffebld_constant_logical5_
= NULL
;
4022 #if FFETARGET_okLOGICAL6
4023 ffebld_constant_logical6_
= NULL
;
4025 #if FFETARGET_okLOGICAL7
4026 ffebld_constant_logical7_
= NULL
;
4028 #if FFETARGET_okLOGICAL8
4029 ffebld_constant_logical8_
= NULL
;
4031 #if FFETARGET_okREAL1
4032 ffebld_constant_real1_
= NULL
;
4034 #if FFETARGET_okREAL2
4035 ffebld_constant_real2_
= NULL
;
4037 #if FFETARGET_okREAL3
4038 ffebld_constant_real3_
= NULL
;
4040 #if FFETARGET_okREAL4
4041 ffebld_constant_real4_
= NULL
;
4043 #if FFETARGET_okREAL5
4044 ffebld_constant_real5_
= NULL
;
4046 #if FFETARGET_okREAL6
4047 ffebld_constant_real6_
= NULL
;
4049 #if FFETARGET_okREAL7
4050 ffebld_constant_real7_
= NULL
;
4052 #if FFETARGET_okREAL8
4053 ffebld_constant_real8_
= NULL
;
4055 ffebld_constant_hollerith_
= NULL
;
4056 for (i
= FFEBLD_constTYPELESS_FIRST
; i
<= FFEBLD_constTYPELESS_LAST
; ++i
)
4057 ffebld_constant_typeless_
[i
- FFEBLD_constTYPELESS_FIRST
] = NULL
;
4061 /* ffebld_init_2 -- Initialize the module
4068 #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_
4072 ffebld_pool_stack_
.next
= NULL
;
4073 ffebld_pool_stack_
.pool
= ffe_pool_program_unit ();
4074 #if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_
4075 #if FFETARGET_okCHARACTER1
4076 ffebld_constant_character1_
= NULL
;
4078 #if FFETARGET_okCHARACTER2
4079 ffebld_constant_character2_
= NULL
;
4081 #if FFETARGET_okCHARACTER3
4082 ffebld_constant_character3_
= NULL
;
4084 #if FFETARGET_okCHARACTER4
4085 ffebld_constant_character4_
= NULL
;
4087 #if FFETARGET_okCHARACTER5
4088 ffebld_constant_character5_
= NULL
;
4090 #if FFETARGET_okCHARACTER6
4091 ffebld_constant_character6_
= NULL
;
4093 #if FFETARGET_okCHARACTER7
4094 ffebld_constant_character7_
= NULL
;
4096 #if FFETARGET_okCHARACTER8
4097 ffebld_constant_character8_
= NULL
;
4099 #if FFETARGET_okCOMPLEX1
4100 ffebld_constant_complex1_
= NULL
;
4102 #if FFETARGET_okCOMPLEX2
4103 ffebld_constant_complex2_
= NULL
;
4105 #if FFETARGET_okCOMPLEX3
4106 ffebld_constant_complex3_
= NULL
;
4108 #if FFETARGET_okCOMPLEX4
4109 ffebld_constant_complex4_
= NULL
;
4111 #if FFETARGET_okCOMPLEX5
4112 ffebld_constant_complex5_
= NULL
;
4114 #if FFETARGET_okCOMPLEX6
4115 ffebld_constant_complex6_
= NULL
;
4117 #if FFETARGET_okCOMPLEX7
4118 ffebld_constant_complex7_
= NULL
;
4120 #if FFETARGET_okCOMPLEX8
4121 ffebld_constant_complex8_
= NULL
;
4123 #if FFETARGET_okINTEGER1
4124 ffebld_constant_integer1_
= NULL
;
4126 #if FFETARGET_okINTEGER2
4127 ffebld_constant_integer2_
= NULL
;
4129 #if FFETARGET_okINTEGER3
4130 ffebld_constant_integer3_
= NULL
;
4132 #if FFETARGET_okINTEGER4
4133 ffebld_constant_integer4_
= NULL
;
4135 #if FFETARGET_okINTEGER5
4136 ffebld_constant_integer5_
= NULL
;
4138 #if FFETARGET_okINTEGER6
4139 ffebld_constant_integer6_
= NULL
;
4141 #if FFETARGET_okINTEGER7
4142 ffebld_constant_integer7_
= NULL
;
4144 #if FFETARGET_okINTEGER8
4145 ffebld_constant_integer8_
= NULL
;
4147 #if FFETARGET_okLOGICAL1
4148 ffebld_constant_logical1_
= NULL
;
4150 #if FFETARGET_okLOGICAL2
4151 ffebld_constant_logical2_
= NULL
;
4153 #if FFETARGET_okLOGICAL3
4154 ffebld_constant_logical3_
= NULL
;
4156 #if FFETARGET_okLOGICAL4
4157 ffebld_constant_logical4_
= NULL
;
4159 #if FFETARGET_okLOGICAL5
4160 ffebld_constant_logical5_
= NULL
;
4162 #if FFETARGET_okLOGICAL6
4163 ffebld_constant_logical6_
= NULL
;
4165 #if FFETARGET_okLOGICAL7
4166 ffebld_constant_logical7_
= NULL
;
4168 #if FFETARGET_okLOGICAL8
4169 ffebld_constant_logical8_
= NULL
;
4171 #if FFETARGET_okREAL1
4172 ffebld_constant_real1_
= NULL
;
4174 #if FFETARGET_okREAL2
4175 ffebld_constant_real2_
= NULL
;
4177 #if FFETARGET_okREAL3
4178 ffebld_constant_real3_
= NULL
;
4180 #if FFETARGET_okREAL4
4181 ffebld_constant_real4_
= NULL
;
4183 #if FFETARGET_okREAL5
4184 ffebld_constant_real5_
= NULL
;
4186 #if FFETARGET_okREAL6
4187 ffebld_constant_real6_
= NULL
;
4189 #if FFETARGET_okREAL7
4190 ffebld_constant_real7_
= NULL
;
4192 #if FFETARGET_okREAL8
4193 ffebld_constant_real8_
= NULL
;
4195 ffebld_constant_hollerith_
= NULL
;
4196 for (i
= FFEBLD_constTYPELESS_FIRST
; i
<= FFEBLD_constTYPELESS_LAST
; ++i
)
4197 ffebld_constant_typeless_
[i
- FFEBLD_constTYPELESS_FIRST
] = NULL
;
4201 /* ffebld_list_length -- Return # of opITEMs in list
4203 ffebld list; // Must be NULL or opITEM
4204 ffebldListLength length;
4205 length = ffebld_list_length(list);
4207 Returns 0 if list is NULL, 1 if it's ffebld_trail is NULL, and so on. */
4210 ffebld_list_length (ffebld list
)
4212 ffebldListLength length
;
4214 for (length
= 0; list
!= NULL
; ++length
, list
= ffebld_trail (list
))
4220 /* ffebld_new_accter -- Create an ffebld object that is an array
4223 ffebldConstantArray a;
4225 x = ffebld_new_accter(a,b); */
4228 ffebld_new_accter (ffebldConstantArray a
, ffebit b
)
4236 x
->op
= FFEBLD_opACCTER
;
4237 x
->u
.accter
.array
= a
;
4238 x
->u
.accter
.bits
= b
;
4239 x
->u
.accter
.pad
= 0;
4243 /* ffebld_new_arrter -- Create an ffebld object that is an array
4246 ffebldConstantArray a;
4247 ffetargetOffset size;
4248 x = ffebld_new_arrter(a,size); */
4251 ffebld_new_arrter (ffebldConstantArray a
, ffetargetOffset size
)
4259 x
->op
= FFEBLD_opARRTER
;
4260 x
->u
.arrter
.array
= a
;
4261 x
->u
.arrter
.size
= size
;
4262 x
->u
.arrter
.pad
= 0;
4266 /* ffebld_new_conter_with_orig -- Create an ffebld object that is a constant
4270 x = ffebld_new_conter_with_orig(c,NULL); */
4273 ffebld_new_conter_with_orig (ffebldConstant c
, ffebld o
)
4281 x
->op
= FFEBLD_opCONTER
;
4282 x
->u
.conter
.expr
= c
;
4283 x
->u
.conter
.orig
= o
;
4284 x
->u
.conter
.pad
= 0;
4288 /* ffebld_new_item -- Create an ffebld item object
4291 x = ffebld_new_item(y,z); */
4294 ffebld_new_item (ffebld head
, ffebld trail
)
4302 x
->op
= FFEBLD_opITEM
;
4303 x
->u
.item
.head
= head
;
4304 x
->u
.item
.trail
= trail
;
4305 #ifdef FFECOM_itemHOOK
4306 x
->u
.item
.hook
= FFECOM_itemNULL
;
4311 /* ffebld_new_labter -- Create an ffebld object that is a label
4315 x = ffebld_new_labter(c); */
4318 ffebld_new_labter (ffelab l
)
4326 x
->op
= FFEBLD_opLABTER
;
4331 /* ffebld_new_labtok -- Create object that is a label's NUMBER token
4335 x = ffebld_new_labter(c);
4337 Like the other ffebld_new_ functions, the
4338 supplied argument is stored exactly as is: ffelex_token_use is NOT
4339 called, so the token is "consumed", if one is indeed supplied (it may
4343 ffebld_new_labtok (ffelexToken t
)
4351 x
->op
= FFEBLD_opLABTOK
;
4356 /* ffebld_new_none -- Create an ffebld object with no arguments
4359 x = ffebld_new_none(FFEBLD_opWHATEVER); */
4362 ffebld_new_none (ffebldOp o
)
4374 /* ffebld_new_one -- Create an ffebld object with one argument
4377 x = ffebld_new_one(FFEBLD_opWHATEVER,y); */
4380 ffebld_new_one (ffebldOp o
, ffebld left
)
4389 x
->u
.nonter
.left
= left
;
4390 #ifdef FFECOM_nonterHOOK
4391 x
->u
.nonter
.hook
= FFECOM_nonterNULL
;
4396 /* ffebld_new_symter -- Create an ffebld object that is a symbol
4400 ffeintrinGen gen; // Generic intrinsic id, if any
4401 ffeintrinSpec spec; // Specific intrinsic id, if any
4402 ffeintrinImp imp; // Implementation intrinsic id, if any
4403 x = ffebld_new_symter (s, gen, spec, imp); */
4406 ffebld_new_symter (ffesymbol s
, ffeintrinGen gen
, ffeintrinSpec spec
,
4415 x
->op
= FFEBLD_opSYMTER
;
4416 x
->u
.symter
.symbol
= s
;
4417 x
->u
.symter
.generic
= gen
;
4418 x
->u
.symter
.specific
= spec
;
4419 x
->u
.symter
.implementation
= imp
;
4420 x
->u
.symter
.do_iter
= FALSE
;
4424 /* ffebld_new_two -- Create an ffebld object with two arguments
4427 x = ffebld_new_two(FFEBLD_opWHATEVER,y,z); */
4430 ffebld_new_two (ffebldOp o
, ffebld left
, ffebld right
)
4439 x
->u
.nonter
.left
= left
;
4440 x
->u
.nonter
.right
= right
;
4441 #ifdef FFECOM_nonterHOOK
4442 x
->u
.nonter
.hook
= FFECOM_nonterNULL
;
4447 /* ffebld_pool_pop -- Pop ffebld's pool stack
4449 ffebld_pool_pop(); */
4454 ffebldPoolstack_ ps
;
4456 assert (ffebld_pool_stack_
.next
!= NULL
);
4457 ps
= ffebld_pool_stack_
.next
;
4458 ffebld_pool_stack_
.next
= ps
->next
;
4459 ffebld_pool_stack_
.pool
= ps
->pool
;
4460 malloc_kill_ks (malloc_pool_image (), ps
, sizeof (*ps
));
4463 /* ffebld_pool_push -- Push ffebld's pool stack
4465 ffebld_pool_push(); */
4468 ffebld_pool_push (mallocPool pool
)
4470 ffebldPoolstack_ ps
;
4472 ps
= malloc_new_ks (malloc_pool_image (), "Pool stack", sizeof (*ps
));
4473 ps
->next
= ffebld_pool_stack_
.next
;
4474 ps
->pool
= ffebld_pool_stack_
.pool
;
4475 ffebld_pool_stack_
.next
= ps
;
4476 ffebld_pool_stack_
.pool
= pool
;
4479 /* ffebld_op_string -- Return short string describing op
4482 ffebld_op_string(o);
4484 Returns a short string (uppercase) containing the name of the op. */
4487 ffebld_op_string (ffebldOp o
)
4489 if (o
>= ARRAY_SIZE (ffebld_op_string_
))
4491 return ffebld_op_string_
[o
];
4494 /* ffebld_size_max -- Return maximum possible size of CHARACTER-type expr
4496 ffetargetCharacterSize sz;
4498 sz = ffebld_size_max (b);
4500 Like ffebld_size_known, but if that would return NONE and the expression
4501 is opSUBSTR, opCONVERT, opPAREN, or opCONCATENATE, returns ffebld_size_max
4502 of the subexpression(s). */
4504 ffetargetCharacterSize
4505 ffebld_size_max (ffebld b
)
4507 ffetargetCharacterSize sz
;
4509 recurse
: /* :::::::::::::::::::: */
4511 sz
= ffebld_size_known (b
);
4513 if (sz
!= FFETARGET_charactersizeNONE
)
4516 switch (ffebld_op (b
))
4518 case FFEBLD_opSUBSTR
:
4519 case FFEBLD_opCONVERT
:
4520 case FFEBLD_opPAREN
:
4521 b
= ffebld_left (b
);
4522 goto recurse
; /* :::::::::::::::::::: */
4524 case FFEBLD_opCONCATENATE
:
4525 sz
= ffebld_size_max (ffebld_left (b
))
4526 + ffebld_size_max (ffebld_right (b
));