summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc/f/global.h
diff options
context:
space:
mode:
authorJason Downs <downsj@cvs.openbsd.org>1996-07-27 02:52:39 +0000
committerJason Downs <downsj@cvs.openbsd.org>1996-07-27 02:52:39 +0000
commit978f1b8e18efed5647513070f53f269049feb83c (patch)
treece00da25c18405cf3e6847ad3d72d14d363e98b9 /gnu/usr.bin/gcc/f/global.h
parente2ce9843b6a157aadf0700edefbe6d916cb98c57 (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.h139
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