diff options
author | Marc Espie <espie@cvs.openbsd.org> | 1999-05-26 13:38:57 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 1999-05-26 13:38:57 +0000 |
commit | 0126e157b87f137fc08dc7f46f6c291b9d06ac5d (patch) | |
tree | f8555e3e504eb82b4cd3cba5cec20ae4ce8124ff /gnu/egcs/gcc/f/bld.h | |
parent | ff8e9a4356e55ed142306c3a375fa280800abc86 (diff) |
egcs projects compiler system
Exact copy of the snapshot, except for the removal of
texinfo/
gcc/ch/
libchill/
Diffstat (limited to 'gnu/egcs/gcc/f/bld.h')
-rw-r--r-- | gnu/egcs/gcc/f/bld.h | 1039 |
1 files changed, 1039 insertions, 0 deletions
diff --git a/gnu/egcs/gcc/f/bld.h b/gnu/egcs/gcc/f/bld.h new file mode 100644 index 00000000000..ddbd44841e7 --- /dev/null +++ b/gnu/egcs/gcc/f/bld.h @@ -0,0 +1,1039 @@ +/* bld.h -- Public #include File (module.h template V1.0) + Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Contributed by James Craig Burley. + +This file is part of GNU Fortran. + +GNU Fortran is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Fortran is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Fortran; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. + + Owning Modules: + bld.c + + Modifications: +*/ + +/* Allow multiple inclusion to work. */ + +#ifndef _H_f_bld +#define _H_f_bld + +/* Simple definitions and enumerations. */ + +typedef enum + { + FFEBLD_constNONE, + FFEBLD_constINTEGER1, + FFEBLD_constINTEGER2, + FFEBLD_constINTEGER3, + FFEBLD_constINTEGER4, + FFEBLD_constINTEGER5, + FFEBLD_constINTEGER6, + FFEBLD_constINTEGER7, + FFEBLD_constINTEGER8, + FFEBLD_constLOGICAL1, + FFEBLD_constLOGICAL2, + FFEBLD_constLOGICAL3, + FFEBLD_constLOGICAL4, + FFEBLD_constLOGICAL5, + FFEBLD_constLOGICAL6, + FFEBLD_constLOGICAL7, + FFEBLD_constLOGICAL8, + FFEBLD_constREAL1, + FFEBLD_constREAL2, + FFEBLD_constREAL3, + FFEBLD_constREAL4, + FFEBLD_constREAL5, + FFEBLD_constREAL6, + FFEBLD_constREAL7, + FFEBLD_constREAL8, + FFEBLD_constCOMPLEX1, + FFEBLD_constCOMPLEX2, + FFEBLD_constCOMPLEX3, + FFEBLD_constCOMPLEX4, + FFEBLD_constCOMPLEX5, + FFEBLD_constCOMPLEX6, + FFEBLD_constCOMPLEX7, + FFEBLD_constCOMPLEX8, + FFEBLD_constCHARACTER1, + FFEBLD_constCHARACTER2, + FFEBLD_constCHARACTER3, + FFEBLD_constCHARACTER4, + FFEBLD_constCHARACTER5, + FFEBLD_constCHARACTER6, + FFEBLD_constCHARACTER7, + FFEBLD_constCHARACTER8, + FFEBLD_constHOLLERITH, + FFEBLD_constTYPELESS_FIRST, + FFEBLD_constBINARY_MIL = FFEBLD_constTYPELESS_FIRST, + FFEBLD_constBINARY_VXT, + FFEBLD_constOCTAL_MIL, + FFEBLD_constOCTAL_VXT, + FFEBLD_constHEX_X_MIL, + FFEBLD_constHEX_X_VXT, + FFEBLD_constHEX_Z_MIL, + FFEBLD_constHEX_Z_VXT, + FFEBLD_constTYPELESS_LAST = FFEBLD_constHEX_Z_VXT, + FFEBLD_const + } ffebldConst; + +typedef enum + { +#define FFEBLD_OP(KWD,NAME,ARITY) KWD, +#include "bld-op.def" +#undef FFEBLD_OP + FFEBLD_op + } ffebldOp; + +/* Typedefs. */ + +typedef struct _ffebld_ *ffebld; +typedef unsigned char ffebldArity; +typedef union _ffebld_constant_array_ ffebldConstantArray; +typedef struct _ffebld_constant_ *ffebldConstant; +typedef union _ffebld_constant_union_ ffebldConstantUnion; +typedef ffebld *ffebldListBottom; +typedef unsigned int ffebldListLength; +#define ffebldListLength_f "" +typedef struct _ffebld_pool_stack_ *ffebldPoolstack_; + +/* Include files needed by this one. */ + +#include "bit.h" +#include "com.h" +#include "info.h" +#include "intrin.h" +#include "lab.h" +#include "lex.h" +#include "malloc.h" +#include "symbol.h" +#include "target.h" + +#define FFEBLD_whereconstPROGUNIT_ 1 +#define FFEBLD_whereconstFILE_ 2 + +#if FFECOM_targetCURRENT == FFECOM_targetFFE +#define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstPROGUNIT_ +#elif FFECOM_targetCURRENT == FFECOM_targetGCC +#define FFEBLD_whereconstCURRENT_ FFEBLD_whereconstFILE_ +#else +#error +#endif + +/* Structure definitions. */ + +#define FFEBLD_constINTEGERDEFAULT FFEBLD_constINTEGER1 +#define FFEBLD_constLOGICALDEFAULT FFEBLD_constLOGICAL1 +#define FFEBLD_constREALDEFAULT FFEBLD_constREAL1 +#define FFEBLD_constREALDOUBLE FFEBLD_constREAL2 +#define FFEBLD_constREALQUAD FFEBLD_constREAL3 +#define FFEBLD_constCOMPLEX FFEBLD_constCOMPLEX1 +#define FFEBLD_constCOMPLEXDOUBLE FFEBLD_constCOMPLEX2 +#define FFEBLD_constCOMPLEXQUAD FFEBLD_constCOMPLEX3 +#define FFEBLD_constCHARACTERDEFAULT FFEBLD_constCHARACTER1 + +union _ffebld_constant_union_ + { + ffetargetTypeless typeless; + ffetargetHollerith hollerith; +#if FFETARGET_okINTEGER1 + ffetargetInteger1 integer1; +#endif +#if FFETARGET_okINTEGER2 + ffetargetInteger2 integer2; +#endif +#if FFETARGET_okINTEGER3 + ffetargetInteger3 integer3; +#endif +#if FFETARGET_okINTEGER4 + ffetargetInteger4 integer4; +#endif +#if FFETARGET_okINTEGER5 + ffetargetInteger5 integer5; +#endif +#if FFETARGET_okINTEGER6 + ffetargetInteger6 integer6; +#endif +#if FFETARGET_okINTEGER7 + ffetargetInteger7 integer7; +#endif +#if FFETARGET_okINTEGER8 + ffetargetInteger8 integer8; +#endif +#if FFETARGET_okLOGICAL1 + ffetargetLogical1 logical1; +#endif +#if FFETARGET_okLOGICAL2 + ffetargetLogical2 logical2; +#endif +#if FFETARGET_okLOGICAL3 + ffetargetLogical3 logical3; +#endif +#if FFETARGET_okLOGICAL4 + ffetargetLogical4 logical4; +#endif +#if FFETARGET_okLOGICAL5 + ffetargetLogical5 logical5; +#endif +#if FFETARGET_okLOGICAL6 + ffetargetLogical6 logical6; +#endif +#if FFETARGET_okLOGICAL7 + ffetargetLogical7 logical7; +#endif +#if FFETARGET_okLOGICAL8 + ffetargetLogical8 logical8; +#endif +#if FFETARGET_okREAL1 + ffetargetReal1 real1; +#endif +#if FFETARGET_okREAL2 + ffetargetReal2 real2; +#endif +#if FFETARGET_okREAL3 + ffetargetReal3 real3; +#endif +#if FFETARGET_okREAL4 + ffetargetReal4 real4; +#endif +#if FFETARGET_okREAL5 + ffetargetReal5 real5; +#endif +#if FFETARGET_okREAL6 + ffetargetReal6 real6; +#endif +#if FFETARGET_okREAL7 + ffetargetReal7 real7; +#endif +#if FFETARGET_okREAL8 + ffetargetReal8 real8; +#endif +#if FFETARGET_okCOMPLEX1 + ffetargetComplex1 complex1; +#endif +#if FFETARGET_okCOMPLEX2 + ffetargetComplex2 complex2; +#endif +#if FFETARGET_okCOMPLEX3 + ffetargetComplex3 complex3; +#endif +#if FFETARGET_okCOMPLEX4 + ffetargetComplex4 complex4; +#endif +#if FFETARGET_okCOMPLEX5 + ffetargetComplex5 complex5; +#endif +#if FFETARGET_okCOMPLEX6 + ffetargetComplex6 complex6; +#endif +#if FFETARGET_okCOMPLEX7 + ffetargetComplex7 complex7; +#endif +#if FFETARGET_okCOMPLEX8 + ffetargetComplex8 complex8; +#endif +#if FFETARGET_okCHARACTER1 + ffetargetCharacter1 character1; +#endif +#if FFETARGET_okCHARACTER2 + ffetargetCharacter2 character2; +#endif +#if FFETARGET_okCHARACTER3 + ffetargetCharacter3 character3; +#endif +#if FFETARGET_okCHARACTER4 + ffetargetCharacter4 character4; +#endif +#if FFETARGET_okCHARACTER5 + ffetargetCharacter5 character5; +#endif +#if FFETARGET_okCHARACTER6 + ffetargetCharacter6 character6; +#endif +#if FFETARGET_okCHARACTER7 + ffetargetCharacter7 character7; +#endif +#if FFETARGET_okCHARACTER8 + ffetargetCharacter8 character8; +#endif + }; + +union _ffebld_constant_array_ + { +#if FFETARGET_okINTEGER1 + ffetargetInteger1 *integer1; +#endif +#if FFETARGET_okINTEGER2 + ffetargetInteger2 *integer2; +#endif +#if FFETARGET_okINTEGER3 + ffetargetInteger3 *integer3; +#endif +#if FFETARGET_okINTEGER4 + ffetargetInteger4 *integer4; +#endif +#if FFETARGET_okINTEGER5 + ffetargetInteger5 *integer5; +#endif +#if FFETARGET_okINTEGER6 + ffetargetInteger6 *integer6; +#endif +#if FFETARGET_okINTEGER7 + ffetargetInteger7 *integer7; +#endif +#if FFETARGET_okINTEGER8 + ffetargetInteger8 *integer8; +#endif +#if FFETARGET_okLOGICAL1 + ffetargetLogical1 *logical1; +#endif +#if FFETARGET_okLOGICAL2 + ffetargetLogical2 *logical2; +#endif +#if FFETARGET_okLOGICAL3 + ffetargetLogical3 *logical3; +#endif +#if FFETARGET_okLOGICAL4 + ffetargetLogical4 *logical4; +#endif +#if FFETARGET_okLOGICAL5 + ffetargetLogical5 *logical5; +#endif +#if FFETARGET_okLOGICAL6 + ffetargetLogical6 *logical6; +#endif +#if FFETARGET_okLOGICAL7 + ffetargetLogical7 *logical7; +#endif +#if FFETARGET_okLOGICAL8 + ffetargetLogical8 *logical8; +#endif +#if FFETARGET_okREAL1 + ffetargetReal1 *real1; +#endif +#if FFETARGET_okREAL2 + ffetargetReal2 *real2; +#endif +#if FFETARGET_okREAL3 + ffetargetReal3 *real3; +#endif +#if FFETARGET_okREAL4 + ffetargetReal4 *real4; +#endif +#if FFETARGET_okREAL5 + ffetargetReal5 *real5; +#endif +#if FFETARGET_okREAL6 + ffetargetReal6 *real6; +#endif +#if FFETARGET_okREAL7 + ffetargetReal7 *real7; +#endif +#if FFETARGET_okREAL8 + ffetargetReal8 *real8; +#endif +#if FFETARGET_okCOMPLEX1 + ffetargetComplex1 *complex1; +#endif +#if FFETARGET_okCOMPLEX2 + ffetargetComplex2 *complex2; +#endif +#if FFETARGET_okCOMPLEX3 + ffetargetComplex3 *complex3; +#endif +#if FFETARGET_okCOMPLEX4 + ffetargetComplex4 *complex4; +#endif +#if FFETARGET_okCOMPLEX5 + ffetargetComplex5 *complex5; +#endif +#if FFETARGET_okCOMPLEX6 + ffetargetComplex6 *complex6; +#endif +#if FFETARGET_okCOMPLEX7 + ffetargetComplex7 *complex7; +#endif +#if FFETARGET_okCOMPLEX8 + ffetargetComplex8 *complex8; +#endif +#if FFETARGET_okCHARACTER1 + ffetargetCharacterUnit1 *character1; +#endif +#if FFETARGET_okCHARACTER2 + ffetargetCharacterUnit2 *character2; +#endif +#if FFETARGET_okCHARACTER3 + ffetargetCharacterUnit3 *character3; +#endif +#if FFETARGET_okCHARACTER4 + ffetargetCharacterUnit4 *character4; +#endif +#if FFETARGET_okCHARACTER5 + ffetargetCharacterUnit5 *character5; +#endif +#if FFETARGET_okCHARACTER6 + ffetargetCharacterUnit6 *character6; +#endif +#if FFETARGET_okCHARACTER7 + ffetargetCharacterUnit7 *character7; +#endif +#if FFETARGET_okCHARACTER8 + ffetargetCharacterUnit8 *character8; +#endif + }; + +struct _ffebld_ + { + ffebldOp op; + ffeinfo info; /* Not used or valid for + op=={STAR,ITEM,BOUNDS,REPEAT,LABTER, + LABTOK,IMPDO}. */ + union + { + struct + { + ffebld left; + ffebld right; +#ifdef FFECOM_nonterHOOK + ffecomNonter hook; /* Whatever the compiler/backend wants! */ +#endif + } + nonter; + struct + { + ffebld head; + ffebld trail; +#ifdef FFECOM_itemHOOK + ffecomItem hook; /* Whatever the compiler/backend wants! */ +#endif + } + item; + struct + { + ffebldConstant expr; + ffebld orig; /* Original expression, or NULL if none. */ + ffetargetAlign pad; /* Initial padding (for DATA, etc.). */ + } + conter; + struct + { + ffebldConstantArray array; + ffetargetOffset size; + ffetargetAlign pad; /* Initial padding (for DATA, etc.). */ + } + arrter; + struct + { + ffebldConstantArray array; + ffebit bits; + ffetargetAlign pad; /* Initial padding (for DATA, etc.). */ + } + accter; + struct + { + ffesymbol symbol; + ffeintrinGen generic; /* Id for generic intrinsic. */ + ffeintrinSpec specific; /* Id for specific intrinsic. */ + ffeintrinImp implementation; /* Id for implementation. */ + bool do_iter; /* TRUE if this ref is a read-only ref by + definition (ref within DO loop using this + var as iterator). */ + } + symter; + ffelab labter; + ffelexToken labtok; + } + u; + }; + +struct _ffebld_constant_ + { + ffebldConstant next; + ffebldConstant first_complex; /* First complex const with me as + real. */ + ffebldConstant negated; /* We point to each other through here. */ + ffebldConst consttype; +#ifdef FFECOM_constantHOOK + ffecomConstant hook; /* Whatever the compiler/backend wants! */ +#endif + bool numeric; /* A numeric kind of constant. */ + ffebldConstantUnion u; + }; + +struct _ffebld_pool_stack_ + { + ffebldPoolstack_ next; + mallocPool pool; + }; + +/* Global objects accessed by users of this module. */ + +extern ffebldArity ffebld_arity_op_[]; +extern struct _ffebld_pool_stack_ ffebld_pool_stack_; + +/* Declare functions with prototypes. */ + +int ffebld_constant_cmp (ffebldConstant c1, ffebldConstant c2); +#if FFECOM_targetCURRENT == FFECOM_targetFFE +void ffebld_constant_dump (ffebldConstant c); +#endif +bool ffebld_constant_is_magical (ffebldConstant c); +bool ffebld_constant_is_zero (ffebldConstant c); +#if FFETARGET_okCHARACTER1 +ffebldConstant ffebld_constant_new_character1 (ffelexToken t); +ffebldConstant ffebld_constant_new_character1_val (ffetargetCharacter1 val); +#endif +#if FFETARGET_okCHARACTER2 +ffebldConstant ffebld_constant_new_character2 (ffelexToken t); +ffebldConstant ffebld_constant_new_character2_val (ffetargetCharacter2 val); +#endif +#if FFETARGET_okCHARACTER3 +ffebldConstant ffebld_constant_new_character3 (ffelexToken t); +ffebldConstant ffebld_constant_new_character3_val (ffetargetCharacter3 val); +#endif +#if FFETARGET_okCHARACTER4 +ffebldConstant ffebld_constant_new_character4 (ffelexToken t); +ffebldConstant ffebld_constant_new_character4_val (ffetargetCharacter4 val); +#endif +#if FFETARGET_okCHARACTER5 +ffebldConstant ffebld_constant_new_character5 (ffelexToken t); +ffebldConstant ffebld_constant_new_character5_val (ffetargetCharacter5 val); +#endif +#if FFETARGET_okCHARACTER6 +ffebldConstant ffebld_constant_new_character6 (ffelexToken t); +ffebldConstant ffebld_constant_new_character6_val (ffetargetCharacter6 val); +#endif +#if FFETARGET_okCHARACTER7 +ffebldConstant ffebld_constant_new_character7 (ffelexToken t); +ffebldConstant ffebld_constant_new_character7_val (ffetargetCharacter7 val); +#endif +#if FFETARGET_okCHARACTER8 +ffebldConstant ffebld_constant_new_character8 (ffelexToken t); +ffebldConstant ffebld_constant_new_character8_val (ffetargetCharacter8 val); +#endif +#if FFETARGET_okCOMPLEX1 +ffebldConstant ffebld_constant_new_complex1 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex1_val (ffetargetComplex1 val); +#endif +#if FFETARGET_okCOMPLEX2 +ffebldConstant ffebld_constant_new_complex2 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex2_val (ffetargetComplex2 val); +#endif +#if FFETARGET_okCOMPLEX3 +ffebldConstant ffebld_constant_new_complex3 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex3_val (ffetargetComplex3 val); +#endif +#if FFETARGET_okCOMPLEX4 +ffebldConstant ffebld_constant_new_complex4 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex4_val (ffetargetComplex4 val); +#endif +#if FFETARGET_okCOMPLEX5 +ffebldConstant ffebld_constant_new_complex5 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex5_val (ffetargetComplex5 val); +#endif +#if FFETARGET_okCOMPLEX6 +ffebldConstant ffebld_constant_new_complex6 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex6_val (ffetargetComplex6 val); +#endif +#if FFETARGET_okCOMPLEX7 +ffebldConstant ffebld_constant_new_complex7 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex7_val (ffetargetComplex7 val); +#endif +#if FFETARGET_okCOMPLEX8 +ffebldConstant ffebld_constant_new_complex8 (ffebldConstant real, + ffebldConstant imaginary); +ffebldConstant ffebld_constant_new_complex8_val (ffetargetComplex8 val); +#endif +ffebldConstant ffebld_constant_new_hollerith (ffelexToken t); +ffebldConstant ffebld_constant_new_hollerith_val (ffetargetHollerith val); +#if FFETARGET_okINTEGER1 +ffebldConstant ffebld_constant_new_integer1 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer1_val (ffetargetInteger1 val); +#endif +#if FFETARGET_okINTEGER2 +ffebldConstant ffebld_constant_new_integer2 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer2_val (ffetargetInteger2 val); +#endif +#if FFETARGET_okINTEGER3 +ffebldConstant ffebld_constant_new_integer3 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer3_val (ffetargetInteger3 val); +#endif +#if FFETARGET_okINTEGER4 +ffebldConstant ffebld_constant_new_integer4 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer4_val (ffetargetInteger4 val); +#endif +#if FFETARGET_okINTEGER5 +ffebldConstant ffebld_constant_new_integer5 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer5_val (ffetargetInteger5 val); +#endif +#if FFETARGET_okINTEGER6 +ffebldConstant ffebld_constant_new_integer6 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer6_val (ffetargetInteger6 val); +#endif +#if FFETARGET_okINTEGER7 +ffebldConstant ffebld_constant_new_integer7 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer7_val (ffetargetInteger7 val); +#endif +#if FFETARGET_okINTEGER8 +ffebldConstant ffebld_constant_new_integer8 (ffelexToken t); +ffebldConstant ffebld_constant_new_integer8_val (ffetargetInteger8 val); +#endif +ffebldConstant ffebld_constant_new_integerbinary (ffelexToken t); +ffebldConstant ffebld_constant_new_integerhex (ffelexToken t); +ffebldConstant ffebld_constant_new_integeroctal (ffelexToken t); +#if FFETARGET_okLOGICAL1 +ffebldConstant ffebld_constant_new_logical1 (bool truth); +ffebldConstant ffebld_constant_new_logical1_val (ffetargetLogical1 val); +#endif +#if FFETARGET_okLOGICAL2 +ffebldConstant ffebld_constant_new_logical2 (bool truth); +ffebldConstant ffebld_constant_new_logical2_val (ffetargetLogical2 val); +#endif +#if FFETARGET_okLOGICAL3 +ffebldConstant ffebld_constant_new_logical3 (bool truth); +ffebldConstant ffebld_constant_new_logical3_val (ffetargetLogical3 val); +#endif +#if FFETARGET_okLOGICAL4 +ffebldConstant ffebld_constant_new_logical4 (bool truth); +ffebldConstant ffebld_constant_new_logical4_val (ffetargetLogical4 val); +#endif +#if FFETARGET_okLOGICAL5 +ffebldConstant ffebld_constant_new_logical5 (bool truth); +ffebldConstant ffebld_constant_new_logical5_val (ffetargetLogical5 val); +#endif +#if FFETARGET_okLOGICAL6 +ffebldConstant ffebld_constant_new_logical6 (bool truth); +ffebldConstant ffebld_constant_new_logical6_val (ffetargetLogical6 val); +#endif +#if FFETARGET_okLOGICAL7 +ffebldConstant ffebld_constant_new_logical7 (bool truth); +ffebldConstant ffebld_constant_new_logical7_val (ffetargetLogical7 val); +#endif +#if FFETARGET_okLOGICAL8 +ffebldConstant ffebld_constant_new_logical8 (bool truth); +ffebldConstant ffebld_constant_new_logical8_val (ffetargetLogical8 val); +#endif +#if FFETARGET_okREAL1 +ffebldConstant ffebld_constant_new_real1 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real1_val (ffetargetReal1 val); +#endif +#if FFETARGET_okREAL2 +ffebldConstant ffebld_constant_new_real2 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real2_val (ffetargetReal2 val); +#endif +#if FFETARGET_okREAL3 +ffebldConstant ffebld_constant_new_real3 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real3_val (ffetargetReal3 val); +#endif +#if FFETARGET_okREAL4 +ffebldConstant ffebld_constant_new_real4 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real4_val (ffetargetReal4 val); +#endif +#if FFETARGET_okREAL5 +ffebldConstant ffebld_constant_new_real5 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real5_val (ffetargetReal5 val); +#endif +#if FFETARGET_okREAL6 +ffebldConstant ffebld_constant_new_real6 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real6_val (ffetargetReal6 val); +#endif +#if FFETARGET_okREAL7 +ffebldConstant ffebld_constant_new_real7 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real7_val (ffetargetReal7 val); +#endif +#if FFETARGET_okREAL8 +ffebldConstant ffebld_constant_new_real8 (ffelexToken integer, + ffelexToken decimal, ffelexToken fraction, ffelexToken exponent, + ffelexToken exponent_sign, ffelexToken exponent_digits); +ffebldConstant ffebld_constant_new_real8_val (ffetargetReal8 val); +#endif +ffebldConstant ffebld_constant_new_typeless_bm (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_bv (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_hxm (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_hxv (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_hzm (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_hzv (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_om (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_ov (ffelexToken t); +ffebldConstant ffebld_constant_new_typeless_val (ffebldConst type, + ffetargetTypeless val); +ffebldConstant ffebld_constant_negated (ffebldConstant c); +#if FFECOM_targetCURRENT == FFECOM_targetFFE +void ffebld_constantarray_dump (ffebldConstantArray array, ffeinfoBasictype bt, + ffeinfoKindtype kt, ffetargetOffset size, ffebit bits); +#endif +ffebldConstantUnion ffebld_constantarray_get (ffebldConstantArray array, + ffeinfoBasictype bt, ffeinfoKindtype kt, ffetargetOffset offset); +void ffebld_constantarray_kill (ffebldConstantArray array, ffeinfoBasictype bt, + ffeinfoKindtype kt, ffetargetOffset size); +ffebldConstantArray ffebld_constantarray_new (ffeinfoBasictype bt, + ffeinfoKindtype kt, ffetargetOffset size); +void ffebld_constantarray_prepare (void **aptr, void **cptr, size_t *size, + ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt, + ffetargetOffset offset, ffebldConstantUnion *constant, + ffeinfoBasictype cbt, ffeinfoKindtype ckt); +void ffebld_constantarray_preparray (void **aptr, void **cptr, size_t *size, + ffebldConstantArray array, ffeinfoBasictype abt, ffeinfoKindtype akt, + ffetargetOffset offset, ffebldConstantArray source_array, + ffeinfoBasictype cbt, ffeinfoKindtype ckt); +void ffebld_constantarray_put (ffebldConstantArray array, ffeinfoBasictype bt, + ffeinfoKindtype kt, ffetargetOffset offset, ffebldConstantUnion constant); +#if FFECOM_targetCURRENT == FFECOM_targetFFE +void ffebld_constantunion_dump (ffebldConstantUnion u, ffeinfoBasictype bt, + ffeinfoKindtype kt); +void ffebld_dump (ffebld b); +void ffebld_dump_prefix (FILE *out, ffeinfoBasictype bt, ffeinfoKindtype kt); +#endif +void ffebld_init_0 (void); +void ffebld_init_1 (void); +void ffebld_init_2 (void); +ffebldListLength ffebld_list_length (ffebld l); +ffebld ffebld_new_accter (ffebldConstantArray array, ffebit b); +ffebld ffebld_new_arrter (ffebldConstantArray array, ffetargetOffset size); +ffebld ffebld_new_conter_with_orig (ffebldConstant c, ffebld orig); +ffebld ffebld_new_item (ffebld head, ffebld trail); +ffebld ffebld_new_labter (ffelab l); +ffebld ffebld_new_labtok (ffelexToken t); +ffebld ffebld_new_none (ffebldOp o); +ffebld ffebld_new_symter (ffesymbol s, ffeintrinGen gen, ffeintrinSpec spec, + ffeintrinImp imp); +ffebld ffebld_new_one (ffebldOp o, ffebld left); +ffebld ffebld_new_two (ffebldOp o, ffebld left, ffebld right); +const char *ffebld_op_string (ffebldOp o); +void ffebld_pool_pop (void); +void ffebld_pool_push (mallocPool pool); +ffetargetCharacterSize ffebld_size_max (ffebld b); + +/* Define macros. */ + +#define ffebld_accter(b) ((b)->u.accter.array) +#define ffebld_accter_bits(b) ((b)->u.accter.bits) +#define ffebld_accter_pad(b) ((b)->u.accter.pad) +#define ffebld_accter_set_bits(b,bt) ((b)->u.accter.bits = (bt)) +#define ffebld_accter_set_pad(b,p) ((b)->u.accter.pad = (p)) +#define ffebld_accter_size(b) ffebit_size((b)->u.accter.bits) +#define ffebld_append_item(b,i) (**(b) = ffebld_new_item((i),NULL), \ + *(b) = &((**(b))->u.item.trail)) +#define ffebld_arity(b) ffebld_arity_op(ffebld_op(b)) +#define ffebld_arity_op(o) (ffebld_arity_op_[o]) +#define ffebld_arrter(b) ((b)->u.arrter.array) +#define ffebld_arrter_pad(b) ((b)->u.arrter.pad) +#define ffebld_arrter_set_pad(b,p) ((b)->u.arrter.pad = (p)) +#define ffebld_arrter_set_size(b,s) ((b)->u.arrter.size = (s)) +#define ffebld_arrter_size(b) ((b)->u.arrter.size) +#define ffebld_basictype(b) (ffeinfo_basictype (ffebld_info ((b)))) +#if FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstPROGUNIT_ +#define ffebld_constant_pool() ffe_pool_program_unit() +#elif FFEBLD_whereconstCURRENT_ == FFEBLD_whereconstFILE_ +#define ffebld_constant_pool() ffe_pool_file() +#else +#error +#endif +#define ffebld_constant_character1(c) ((c)->u.character1) +#define ffebld_constant_character2(c) ((c)->u.character2) +#define ffebld_constant_character3(c) ((c)->u.character3) +#define ffebld_constant_character4(c) ((c)->u.character4) +#define ffebld_constant_character5(c) ((c)->u.character5) +#define ffebld_constant_character6(c) ((c)->u.character6) +#define ffebld_constant_character7(c) ((c)->u.character7) +#define ffebld_constant_character8(c) ((c)->u.character8) +#define ffebld_constant_characterdefault ffebld_constant_character1 +#define ffebld_constant_complex1(c) ((c)->u.complex1) +#define ffebld_constant_complex2(c) ((c)->u.complex2) +#define ffebld_constant_complex3(c) ((c)->u.complex3) +#define ffebld_constant_complex4(c) ((c)->u.complex4) +#define ffebld_constant_complex5(c) ((c)->u.complex5) +#define ffebld_constant_complex6(c) ((c)->u.complex6) +#define ffebld_constant_complex7(c) ((c)->u.complex7) +#define ffebld_constant_complex8(c) ((c)->u.complex8) +#define ffebld_constant_complexdefault ffebld_constant_complex1 +#define ffebld_constant_complexdouble ffebld_constant_complex2 +#define ffebld_constant_complexquad ffebld_constant_complex3 +#define ffebld_constant_copy(c) (c) +#define ffebld_constant_hollerith(c) ((c)->u.hollerith) +#define ffebld_constant_hook(c) ((c)->hook) +#define ffebld_constant_integer1(c) ((c)->u.integer1) +#define ffebld_constant_integer2(c) ((c)->u.integer2) +#define ffebld_constant_integer3(c) ((c)->u.integer3) +#define ffebld_constant_integer4(c) ((c)->u.integer4) +#define ffebld_constant_integer5(c) ((c)->u.integer5) +#define ffebld_constant_integer6(c) ((c)->u.integer6) +#define ffebld_constant_integer7(c) ((c)->u.integer7) +#define ffebld_constant_integer8(c) ((c)->u.integer8) +#define ffebld_constant_integerdefault ffebld_constant_integer1 +#define ffebld_constant_is_numeric(c) ((c)->numeric) +#define ffebld_constant_logical1(c) ((c)->u.logical1) +#define ffebld_constant_logical2(c) ((c)->u.logical2) +#define ffebld_constant_logical3(c) ((c)->u.logical3) +#define ffebld_constant_logical4(c) ((c)->u.logical4) +#define ffebld_constant_logical5(c) ((c)->u.logical5) +#define ffebld_constant_logical6(c) ((c)->u.logical6) +#define ffebld_constant_logical7(c) ((c)->u.logical7) +#define ffebld_constant_logical8(c) ((c)->u.logical8) +#define ffebld_constant_logicaldefault ffebld_constant_logical1 +#define ffebld_constant_new_characterdefault ffebld_constant_new_character1 +#define ffebld_constant_new_characterdefault_val ffebld_constant_new_character1_val +#define ffebld_constant_new_complexdefault ffebld_constant_new_complex1 +#define ffebld_constant_new_complexdefault_val ffebld_constant_new_complex1_val +#define ffebld_constant_new_complexdouble ffebld_constant_new_complex2 +#define ffebld_constant_new_complexdouble_val ffebld_constant_new_complex2_val +#define ffebld_constant_new_complexquad ffebld_constant_new_complex3 +#define ffebld_constant_new_complexquad_valffebld_constant_new_complex3_val +#define ffebld_constant_new_integerdefault ffebld_constant_new_integer1 +#define ffebld_constant_new_integerdefault_val ffebld_constant_new_integer1_val +#define ffebld_constant_new_logicaldefault ffebld_constant_new_logical1 +#define ffebld_constant_new_logicaldefault_val ffebld_constant_new_logical1_val +#define ffebld_constant_new_realdefault ffebld_constant_new_real1 +#define ffebld_constant_new_realdefault_val ffebld_constant_new_real1_val +#define ffebld_constant_new_realdouble ffebld_constant_new_real2 +#define ffebld_constant_new_realdouble_val ffebld_constant_new_real2_val +#define ffebld_constant_new_realquad ffebld_constant_new_real3 +#define ffebld_constant_new_realquad_val ffebld_constant_new_real3_val +#define ffebld_constant_ptr_to_union(c) (&(c)->u) +#define ffebld_constant_real1(c) ((c)->u.real1) +#define ffebld_constant_real2(c) ((c)->u.real2) +#define ffebld_constant_real3(c) ((c)->u.real3) +#define ffebld_constant_real4(c) ((c)->u.real4) +#define ffebld_constant_real5(c) ((c)->u.real5) +#define ffebld_constant_real6(c) ((c)->u.real6) +#define ffebld_constant_real7(c) ((c)->u.real7) +#define ffebld_constant_real8(c) ((c)->u.real8) +#define ffebld_constant_realdefault ffebld_constant_real1 +#define ffebld_constant_realdouble ffebld_constant_real2 +#define ffebld_constant_realquad ffebld_constant_real3 +#define ffebld_constant_set_hook(c,h) ((c)->hook = (h)) +#define ffebld_constant_set_union(c,un) ((c)->u = (un)) +#define ffebld_constant_type(c) ((c)->consttype) +#define ffebld_constant_typeless(c) ((c)->u.typeless) +#define ffebld_constant_union(c) ((c)->u) +#define ffebld_conter(b) ((b)->u.conter.expr) +#define ffebld_conter_orig(b) ((b)->u.conter.orig) +#define ffebld_conter_pad(b) ((b)->u.conter.pad) +#define ffebld_conter_set_orig(b,o) ((b)->u.conter.orig = (o)) +#define ffebld_conter_set_pad(b,p) ((b)->u.conter.pad = (p)) +#define ffebld_copy(b) (b) /* ~~~Someday really make a copy. */ +#define ffebld_cu_ptr_typeless(u) &(u).typeless +#define ffebld_cu_ptr_hollerith(u) &(u).hollerith +#define ffebld_cu_ptr_integer1(u) &(u).integer1 +#define ffebld_cu_ptr_integer2(u) &(u).integer2 +#define ffebld_cu_ptr_integer3(u) &(u).integer3 +#define ffebld_cu_ptr_integer4(u) &(u).integer4 +#define ffebld_cu_ptr_integer5(u) &(u).integer5 +#define ffebld_cu_ptr_integer6(u) &(u).integer6 +#define ffebld_cu_ptr_integer7(u) &(u).integer7 +#define ffebld_cu_ptr_integer8(u) &(u).integer8 +#define ffebld_cu_ptr_integerdefault ffebld_cu_ptr_integer1 +#define ffebld_cu_ptr_logical1(u) &(u).logical1 +#define ffebld_cu_ptr_logical2(u) &(u).logical2 +#define ffebld_cu_ptr_logical3(u) &(u).logical3 +#define ffebld_cu_ptr_logical4(u) &(u).logical4 +#define ffebld_cu_ptr_logical5(u) &(u).logical5 +#define ffebld_cu_ptr_logical6(u) &(u).logical6 +#define ffebld_cu_ptr_logical7(u) &(u).logical7 +#define ffebld_cu_ptr_logical8(u) &(u).logical8 +#define ffebld_cu_ptr_logicaldefault ffebld_cu_ptr_logical1 +#define ffebld_cu_ptr_real1(u) &(u).real1 +#define ffebld_cu_ptr_real2(u) &(u).real2 +#define ffebld_cu_ptr_real3(u) &(u).real3 +#define ffebld_cu_ptr_real4(u) &(u).real4 +#define ffebld_cu_ptr_real5(u) &(u).real5 +#define ffebld_cu_ptr_real6(u) &(u).real6 +#define ffebld_cu_ptr_real7(u) &(u).real7 +#define ffebld_cu_ptr_real8(u) &(u).real8 +#define ffebld_cu_ptr_realdefault ffebld_cu_ptr_real1 +#define ffebld_cu_ptr_realdouble ffebld_cu_ptr_real2 +#define ffebld_cu_ptr_realquad ffebld_cu_ptr_real3 +#define ffebld_cu_ptr_complex1(u) &(u).complex1 +#define ffebld_cu_ptr_complex2(u) &(u).complex2 +#define ffebld_cu_ptr_complex3(u) &(u).complex3 +#define ffebld_cu_ptr_complex4(u) &(u).complex4 +#define ffebld_cu_ptr_complex5(u) &(u).complex5 +#define ffebld_cu_ptr_complex6(u) &(u).complex6 +#define ffebld_cu_ptr_complex7(u) &(u).complex7 +#define ffebld_cu_ptr_complex8(u) &(u).complex8 +#define ffebld_cu_ptr_complexdefault ffebld_cu_ptr_complex1 +#define ffebld_cu_ptr_complexdouble ffebld_cu_ptr_complex2 +#define ffebld_cu_ptr_complexquad ffebld_cu_ptr_complex3 +#define ffebld_cu_ptr_character1(u) &(u).character1 +#define ffebld_cu_ptr_character2(u) &(u).character2 +#define ffebld_cu_ptr_character3(u) &(u).character3 +#define ffebld_cu_ptr_character4(u) &(u).character4 +#define ffebld_cu_ptr_character5(u) &(u).character5 +#define ffebld_cu_ptr_character6(u) &(u).character6 +#define ffebld_cu_ptr_character7(u) &(u).character7 +#define ffebld_cu_ptr_character8(u) &(u).character8 +#define ffebld_cu_val_typeless(u) (u).typeless +#define ffebld_cu_val_hollerith(u) (u).hollerith +#define ffebld_cu_val_integer1(u) (u).integer1 +#define ffebld_cu_val_integer2(u) (u).integer2 +#define ffebld_cu_val_integer3(u) (u).integer3 +#define ffebld_cu_val_integer4(u) (u).integer4 +#define ffebld_cu_val_integer5(u) (u).integer5 +#define ffebld_cu_val_integer6(u) (u).integer6 +#define ffebld_cu_val_integer7(u) (u).integer7 +#define ffebld_cu_val_integer8(u) (u).integer8 +#define ffebld_cu_val_integerdefault ffebld_cu_val_integer1 +#define ffebld_cu_val_logical1(u) (u).logical1 +#define ffebld_cu_val_logical2(u) (u).logical2 +#define ffebld_cu_val_logical3(u) (u).logical3 +#define ffebld_cu_val_logical4(u) (u).logical4 +#define ffebld_cu_val_logical5(u) (u).logical5 +#define ffebld_cu_val_logical6(u) (u).logical6 +#define ffebld_cu_val_logical7(u) (u).logical7 +#define ffebld_cu_val_logical8(u) (u).logical8 +#define ffebld_cu_val_logicaldefault ffebld_cu_val_logical +#define ffebld_cu_val_real1(u) (u).real1 +#define ffebld_cu_val_real2(u) (u).real2 +#define ffebld_cu_val_real3(u) (u).real3 +#define ffebld_cu_val_real4(u) (u).real4 +#define ffebld_cu_val_real5(u) (u).real5 +#define ffebld_cu_val_real6(u) (u).real6 +#define ffebld_cu_val_real7(u) (u).real7 +#define ffebld_cu_val_real8(u) (u).real8 +#define ffebld_cu_val_realdefault ffebld_cu_val_real1 +#define ffebld_cu_val_realdouble ffebld_cu_val_real2 +#define ffebld_cu_val_realquad ffebld_cu_val_real3 +#define ffebld_cu_val_complex1(u) (u).complex1 +#define ffebld_cu_val_complex2(u) (u).complex2 +#define ffebld_cu_val_complex3(u) (u).complex3 +#define ffebld_cu_val_complex4(u) (u).complex4 +#define ffebld_cu_val_complex5(u) (u).complex5 +#define ffebld_cu_val_complex6(u) (u).complex6 +#define ffebld_cu_val_complex7(u) (u).complex7 +#define ffebld_cu_val_complex8(u) (u).complex8 +#define ffebld_cu_val_complexdefault ffebld_cu_val_complex1 +#define ffebld_cu_val_complexdouble ffebld_cu_val_complex2 +#define ffebld_cu_val_complexquad ffebld_cu_val_complex3 +#define ffebld_cu_val_character1(u) (u).character1 +#define ffebld_cu_val_character2(u) (u).character2 +#define ffebld_cu_val_character3(u) (u).character3 +#define ffebld_cu_val_character4(u) (u).character4 +#define ffebld_cu_val_character5(u) (u).character5 +#define ffebld_cu_val_character6(u) (u).character6 +#define ffebld_cu_val_character7(u) (u).character7 +#define ffebld_cu_val_character8(u) (u).character8 +#define ffebld_end_list(b) (*(b) = NULL) +#define ffebld_head(b) ((b)->u.item.head) +#define ffebld_info(b) ((b)->info) +#define ffebld_init_3() +#define ffebld_init_4() +#define ffebld_init_list(l,b) (*(l) = NULL, *(b) = (l)) +#define ffebld_item_hook(b) ((b)->u.item.hook) +#define ffebld_item_set_hook(b,h) ((b)->u.item.hook = (h)) +#define ffebld_kind(b) (ffeinfo_kind (ffebld_info ((b)))) +#define ffebld_kindtype(b) (ffeinfo_kindtype (ffebld_info ((b)))) +#define ffebld_labter(b) ((b)->u.labter) +#define ffebld_labtok(b) ((b)->u.labtok) +#define ffebld_left(b) ((b)->u.nonter.left) +#define ffebld_name_string(n) ((n)->name) +#define ffebld_new() \ + ((ffebld) malloc_new_kp(ffebld_pool(), "FFEBLD",sizeof(struct _ffebld_))) +#define ffebld_new_any() ffebld_new_none(FFEBLD_opANY) +#define ffebld_new_conter(c) ffebld_new_conter_with_orig((c),NULL) +#define ffebld_new_star() ffebld_new_none(FFEBLD_opSTAR) +#define ffebld_new_uplus(l) ffebld_new_one(FFEBLD_opUPLUS,(l)) +#define ffebld_new_uminus(l) ffebld_new_one(FFEBLD_opUMINUS,(l)) +#define ffebld_new_add(l,r) ffebld_new_two(FFEBLD_opADD,(l),(r)) +#define ffebld_new_subtract(l,r) ffebld_new_two(FFEBLD_opSUBTRACT,(l),(r)) +#define ffebld_new_multiply(l,r) ffebld_new_two(FFEBLD_opMULTIPLY,(l),(r)) +#define ffebld_new_divide(l,r) ffebld_new_two(FFEBLD_opDIVIDE,(l),(r)) +#define ffebld_new_power(l,r) ffebld_new_two(FFEBLD_opPOWER,(l),(r)) +#define ffebld_new_bounds(l,r) ffebld_new_two(FFEBLD_opBOUNDS,(l),(r)) +#define ffebld_new_concatenate(l,r) ffebld_new_two(FFEBLD_opCONCATENATE,(l),(r)) +#define ffebld_new_not(l) ffebld_new_one(FFEBLD_opNOT,(l)) +#define ffebld_new_lt(l,r) ffebld_new_two(FFEBLD_opLT,(l),(r)) +#define ffebld_new_le(l,r) ffebld_new_two(FFEBLD_opLE,(l),(r)) +#define ffebld_new_eq(l,r) ffebld_new_two(FFEBLD_opEQ,(l),(r)) +#define ffebld_new_ne(l,r) ffebld_new_two(FFEBLD_opNE,(l),(r)) +#define ffebld_new_gt(l,r) ffebld_new_two(FFEBLD_opGT,(l),(r)) +#define ffebld_new_ge(l,r) ffebld_new_two(FFEBLD_opGE,(l),(r)) +#define ffebld_new_and(l,r) ffebld_new_two(FFEBLD_opAND,(l),(r)) +#define ffebld_new_or(l,r) ffebld_new_two(FFEBLD_opOR,(l),(r)) +#define ffebld_new_xor(l,r) ffebld_new_two(FFEBLD_opXOR,(l),(r)) +#define ffebld_new_eqv(l,r) ffebld_new_two(FFEBLD_opEQV,(l),(r)) +#define ffebld_new_neqv(l,r) ffebld_new_two(FFEBLD_opNEQV,(l),(r)) +#define ffebld_new_paren(l) ffebld_new_one(FFEBLD_opPAREN,(l)) +#define ffebld_new_repeat(l,r) ffebld_new_two(FFEBLD_opREPEAT,(l),(r)) +#define ffebld_new_percent_descr(l) ffebld_new_one(FFEBLD_opPERCENT_DESCR,(l)) +#define ffebld_new_percent_loc(l) ffebld_new_one(FFEBLD_opPERCENT_LOC,(l)) +#define ffebld_new_percent_ref(l) ffebld_new_one(FFEBLD_opPERCENT_REF,(l)) +#define ffebld_new_percent_val(l) ffebld_new_one(FFEBLD_opPERCENT_VAL,(l)) +#define ffebld_new_complex(l,r) ffebld_new_two(FFEBLD_opCOMPLEX,(l),(r)) +#define ffebld_new_convert(l) ffebld_new_one(FFEBLD_opCONVERT,(l)) +#define ffebld_new_funcref(l,r) ffebld_new_two(FFEBLD_opFUNCREF,(l),(r)) +#define ffebld_new_subrref(l,r) ffebld_new_two(FFEBLD_opSUBRREF,(l),(r)) +#define ffebld_new_arrayref(l,r) ffebld_new_two(FFEBLD_opARRAYREF,(l),(r)) +#define ffebld_new_substr(l,r) ffebld_new_two(FFEBLD_opSUBSTR,(l),(r)) +#define ffebld_new_impdo(l,r) ffebld_new_two(FFEBLD_opIMPDO,(l),(r)) +#define ffebld_nonter_hook(b) ((b)->u.nonter.hook) +#define ffebld_nonter_set_hook(b,h) ((b)->u.nonter.hook = (h)) +#define ffebld_op(b) ((b)->op) +#define ffebld_pool() (ffebld_pool_stack_.pool) +#define ffebld_rank(b) (ffeinfo_rank (ffebld_info ((b)))) +#define ffebld_right(b) ((b)->u.nonter.right) +#define ffebld_set_accter(b,a) ((b)->u.accter.array = (a)) +#define ffebld_set_arrter(b,a) ((b)->u.arrter.array = (a)) +#define ffebld_set_conter(b,c) ((b)->u.conter.expr = (c)) +#define ffebld_set_info(b,i) ((b)->info = (i)) +#define ffebld_set_labter(b,l) ((b)->u.labter = (l)) +#define ffebld_set_op(b,o) ((b)->op = (o)) +#define ffebld_set_head(b,h) ((b)->u.item.head = (h)) +#define ffebld_set_left(b,l) ((b)->u.nonter.left = (l)) +#define ffebld_set_right(b,r) ((b)->u.nonter.right = (r)) +#define ffebld_set_trail(b,t) ((b)->u.item.trail = (t)) +#define ffebld_size(b) (ffeinfo_size (ffebld_info ((b)))) +#define ffebld_size_known(b) ffebld_size((b)) +#define ffebld_symter(b) ((b)->u.symter.symbol) +#define ffebld_symter_generic(b) ((b)->u.symter.generic) +#define ffebld_symter_doiter(b) ((b)->u.symter.do_iter) +#define ffebld_symter_implementation(b) ((b)->u.symter.implementation) +#define ffebld_symter_specific(b) ((b)->u.symter.specific) +#define ffebld_symter_set_generic(b,g) ((b)->u.symter.generic = (g)) +#define ffebld_symter_set_implementation(b,i) \ + ((b)->u.symter.implementation = (i)) +#define ffebld_symter_set_is_doiter(b,f) ((b)->u.symter.do_iter = (f)) +#define ffebld_symter_set_specific(b,s) ((b)->u.symter.specific = (s)) +#define ffebld_terminate_0() +#define ffebld_terminate_1() +#define ffebld_terminate_2() +#define ffebld_terminate_3() +#define ffebld_terminate_4() +#define ffebld_trail(b) ((b)->u.item.trail) +#define ffebld_where(b) (ffeinfo_where (ffebld_info ((b)))) + +/* End of #include file. */ + +#endif |