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