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