diff options
author | Jason Downs <downsj@cvs.openbsd.org> | 1996-07-27 02:52:39 +0000 |
---|---|---|
committer | Jason Downs <downsj@cvs.openbsd.org> | 1996-07-27 02:52:39 +0000 |
commit | 978f1b8e18efed5647513070f53f269049feb83c (patch) | |
tree | ce00da25c18405cf3e6847ad3d72d14d363e98b9 /gnu/usr.bin/gcc/f/global.h | |
parent | e2ce9843b6a157aadf0700edefbe6d916cb98c57 (diff) |
Initial integration of G77.
Please do a make cleandir before rebuilding gcc!
Diffstat (limited to 'gnu/usr.bin/gcc/f/global.h')
-rw-r--r-- | gnu/usr.bin/gcc/f/global.h | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/f/global.h b/gnu/usr.bin/gcc/f/global.h new file mode 100644 index 00000000000..5e9a76124ac --- /dev/null +++ b/gnu/usr.bin/gcc/f/global.h @@ -0,0 +1,139 @@ +/* global.h -- Public #include File (module.h template V1.0) + Copyright (C) 1995 Free Software Foundation, Inc. + Contributed by James Craig Burley (burley@gnu.ai.mit.edu). + +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: + global.c + + Modifications: +*/ + +/* Allow multiple inclusion to work. */ + +#ifndef _H_f_global +#define _H_f_global + +/* Simple definitions and enumerations. */ + +typedef enum + { + FFEGLOBAL_typeMAIN, + FFEGLOBAL_typeSUBR, + FFEGLOBAL_typeFUNC, + FFEGLOBAL_typeBDATA, + FFEGLOBAL_typeCOMMON, + FFEGLOBAL_typeANY, /* Confusion reigns, so just ignore. */ + FFEGLOBAL_type + } ffeglobalType; + +/* Typedefs. */ + +typedef struct _ffeglobal_ *ffeglobal; + +/* Include files needed by this one. */ + +#include "lex.h" +#include "name.h" +#include "symbol.h" +#include "target.h" +#include "top.h" + +/* Structure definitions. */ + +struct _ffeglobal_ + { + ffelexToken t; + ffename n; +#ifdef FFECOM_globalHOOK + ffecomGlobal hook; +#endif + ffeCounter init; /* COMMON block given initial value(s) in + this progunit. */ + ffelexToken initt; /* First initial value. */ + ffeglobalType type; + bool have_pad; /* Padding info avail for COMMON? */ + ffetargetAlign pad; /* Initial padding for COMMON. */ + ffewhereLine pad_where_line; + ffewhereColumn pad_where_col; + bool have_save; /* Save info avail for COMMON? */ + bool save; /* Save info for COMMON. */ + ffewhereLine save_where_line; + ffewhereColumn save_where_col; + bool have_size; /* Size info avail for COMMON? */ + long size; /* Size info for COMMON. */ + bool blank; /* TRUE if blank COMMON. */ + }; + +/* Global objects accessed by users of this module. */ + + +/* Declare functions with prototypes. */ + +void ffeglobal_drive (ffeglobal (*fn) ()); +void ffeglobal_init_1 (void); +void ffeglobal_init_common (ffesymbol s, ffelexToken t); +void ffeglobal_new_progunit_ (ffesymbol s, ffelexToken t, ffeglobalType type); +void ffeglobal_new_common (ffesymbol s, ffelexToken t, bool blank); +void ffeglobal_pad_common (ffesymbol s, ffetargetAlign pad, ffewhereLine wl, + ffewhereColumn wc); +void ffeglobal_save_common (ffesymbol s, bool save, ffewhereLine wl, + ffewhereColumn wc); +bool ffeglobal_size_common (ffesymbol s, long size); +void ffeglobal_terminate_1 (void); + +/* Define macros. */ + +#if FFECOM_targetCURRENT == FFECOM_targetFFE +#define FFEGLOBAL_ENABLED 0 +#elif FFECOM_targetCURRENT == FFECOM_targetGCC +#define FFEGLOBAL_ENABLED 1 +#else +#error +#endif + +#define ffeglobal_common_init(g) ((g)->init != 0) +#define ffeglobal_have_pad(g) ((g)->have_pad) +#define ffeglobal_have_size(g) ((g)->have_size) +#define ffeglobal_hook(g) ((g)->hook) +#define ffeglobal_init_0() +#define ffeglobal_init_2() +#define ffeglobal_init_3() +#define ffeglobal_init_4() +#define ffeglobal_new_blockdata(s,t) \ + ffeglobal_new_progunit_(s,t,FFEGLOBAL_typeBDATA) +#define ffeglobal_new_function(s,t) \ + ffeglobal_new_progunit_(s,t,FFEGLOBAL_typeFUNC) +#define ffeglobal_new_program(s,t) \ + ffeglobal_new_progunit_(s,t,FFEGLOBAL_typeMAIN) +#define ffeglobal_new_subroutine(s,t) \ + ffeglobal_new_progunit_(s,t,FFEGLOBAL_typeSUBR) +#define ffeglobal_pad(g) ((g)->pad) +#define ffeglobal_set_hook(g,h) ((g)->hook = (h)) +#define ffeglobal_size(g) ((g)->size) +#define ffeglobal_terminate_0() +#define ffeglobal_terminate_2() +#define ffeglobal_terminate_3() +#define ffeglobal_terminate_4() +#define ffeglobal_text(g) ffename_text((g)->n) +#define ffeglobal_type(g) ((g)->type) + +/* End of #include file. */ + +#endif |