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