blob: a3f959f46086181a80627bd8544f745381acbd91 [file] [log] [blame]
/* stv.h -- Private #include File (module.h template V1.0)
Copyright (C) 1995 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:
stv.c
Modifications:
*/
/* Allow multiple inclusion to work. */
#ifndef GCC_F_STV_H
#define GCC_F_STV_H
/* Simple definitions and enumerations. */
typedef enum
{
FFESTV_accessstateNONE, /* Haven't seen PUBLIC or PRIVATE yet. */
FFESTV_accessstatePUBLIC, /* Seen PUBLIC stmt w/o args. */
FFESTV_accessstatePRIVATE, /* Seen PRIVATE stmt w/o args. */
FFESTV_accessstateANY, /* Conflict seen and reported, so stop
whining. */
FFESTV_accessstate
} ffestvAccessstate;
typedef enum
{ /* Format specifier in an I/O statement. */
FFESTV_formatNONE, /* None. */
FFESTV_formatLABEL, /* Label (normal format). */
FFESTV_formatCHAREXPR, /* Character expression (normal format). */
FFESTV_formatASTERISK, /* Asterisk (list-directed). */
FFESTV_formatINTEXPR, /* Integer expression (assigned label). */
FFESTV_formatNAMELIST, /* Namelist (namelist-directed). */
FFESTV_format
} ffestvFormat;
typedef enum
{
FFESTV_savestateNONE, /* Haven't seen SAVE stmt or attribute yet. */
FFESTV_savestateSPECIFIC, /* Seen SAVE stmt w/args or SAVE attr. */
FFESTV_savestateALL, /* Seen SAVE stmt w/o args. */
FFESTV_savestateANY, /* Conflict seen and reported, so stop
whining. */
FFESTV_savestate
} ffestvSavestate;
typedef enum
{
FFESTV_stateNIL, /* Initial state, and after end of outer prog
unit. */
FFESTV_statePROGRAM0, /* After PROGRAM. */
FFESTV_statePROGRAM1, /* Before first non-USE statement. */
FFESTV_statePROGRAM2, /* After IMPLICIT NONE. */
FFESTV_statePROGRAM3, /* After IMPLICIT, PARAMETER, FORMAT. */
FFESTV_statePROGRAM4, /* Before executable stmt or CONTAINS. */
FFESTV_statePROGRAM5, /* After CONTAINS. */
FFESTV_stateSUBROUTINE0, /* After SUBROUTINE. */
FFESTV_stateSUBROUTINE1, /* Before first non-USE statement. */
FFESTV_stateSUBROUTINE2, /* After IMPLICIT NONE. */
FFESTV_stateSUBROUTINE3, /* After IMPLICIT, PARAMETER, FORMAT, ENTRY. */
FFESTV_stateSUBROUTINE4, /* Before executable stmt or CONTAINS. */
FFESTV_stateSUBROUTINE5, /* After CONTAINS. */
FFESTV_stateFUNCTION0, /* After FUNCTION. */
FFESTV_stateFUNCTION1, /* Before first non-USE statement. */
FFESTV_stateFUNCTION2, /* After IMPLICIT NONE. */
FFESTV_stateFUNCTION3, /* After IMPLICIT, PARAMETER, FORMAT, ENTRY. */
FFESTV_stateFUNCTION4, /* Before executable stmt or CONTAINS. */
FFESTV_stateFUNCTION5, /* After CONTAINS. */
FFESTV_stateMODULE0, /* After MODULE. */
FFESTV_stateMODULE1, /* Before first non-USE statement. */
FFESTV_stateMODULE2, /* After IMPLICIT NONE. */
FFESTV_stateMODULE3, /* After IMPLICIT, PARAMETER, FORMAT, ENTRY. */
FFESTV_stateMODULE4, /* Before executable stmt or CONTAINS. */
FFESTV_stateMODULE5, /* After CONTAINS. */
FFESTV_stateBLOCKDATA0, /* After BLOCKDATA. */
FFESTV_stateBLOCKDATA1, /* Before first non-USE statement. */
FFESTV_stateBLOCKDATA2, /* After IMPLICIT NONE. */
FFESTV_stateBLOCKDATA3, /* After IMPLICIT, PARAMETER, FORMAT, ENTRY. */
FFESTV_stateBLOCKDATA4, /* Before executable stmt or CONTAINS. */
FFESTV_stateBLOCKDATA5, /* After CONTAINS. */
FFESTV_stateUSE, /* Before first USE thru last USE. */
FFESTV_stateTYPE, /* After TYPE thru END TYPE. */
FFESTV_stateINTERFACE0, /* After INTERFACE thru MODULE PROCEDURE. */
FFESTV_stateINTERFACE1, /* After MODULE PROCEDURE thru END INTERFACE. */
FFESTV_stateSTRUCTURE, /* After STRUCTURE thru END STRUCTURE. */
FFESTV_stateUNION, /* After UNION thru END UNION. */
FFESTV_stateMAP, /* After MAP thru END MAP. */
FFESTV_stateWHERETHEN, /* After WHERE-construct thru END WHERE. */
FFESTV_stateWHERE, /* After WHERE-stmt thru next stmt. */
FFESTV_stateIFTHEN, /* After IF THEN thru END IF. */
FFESTV_stateIF, /* After IF thru next stmt. */
FFESTV_stateDO, /* After DO thru END DO or terminating label. */
FFESTV_stateSELECT0, /* After SELECT to before first CASE. */
FFESTV_stateSELECT1, /* First CASE in SELECT thru END SELECT. */
FFESTV_state
} ffestvState;
typedef enum
{ /* Unit specifier. */
FFESTV_unitNONE, /* None. */
FFESTV_unitINTEXPR, /* Integer expression (external file unit). */
FFESTV_unitASTERISK, /* Default unit. */
FFESTV_unitCHAREXPR, /* Character expression (internal file unit). */
FFESTV_unit
} ffestvUnit;
/* Typedefs. */
/* Include files needed by this one. */
#include "lab.h"
#include "where.h"
/* Structure definitions. */
/* Global objects accessed by users of this module. */
extern ffestvSavestate ffestv_save_state_;
extern ffewhereLine ffestv_save_line_;
extern ffewhereColumn ffestv_save_col_;
extern ffestvAccessstate ffestv_access_state_;
extern ffewhereLine ffestv_access_line_;
extern ffewhereColumn ffestv_access_col_;
extern ffelabNumber ffestv_num_label_defines_;
/* Declare functions with prototypes. */
/* Define macros. */
#define ffestv_init_0()
#define ffestv_init_1()
#define ffestv_init_2()
#define ffestv_init_3()
#define ffestv_init_4()
#define ffestv_terminate_0()
#define ffestv_terminate_1()
#define ffestv_terminate_2()
#define ffestv_terminate_3()
#define ffestv_terminate_4()
/* End of #include file. */
#endif /* ! GCC_F_STV_H */