OSDN Git Service

* invoke.texi: Use @gol at ends of lines inside @gccoptlist.
[pf3gnuchains/gcc-fork.git] / gcc / f / name.h
1 /* name.h -- Public #include File (module.h template V1.0)
2    Copyright (C) 1995 Free Software Foundation, Inc.
3    Contributed by James Craig Burley.
4
5 This file is part of GNU Fortran.
6
7 GNU Fortran is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GNU Fortran is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GNU Fortran; see the file COPYING.  If not, write to
19 the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21
22    Owning Modules:
23       name.c
24
25    Modifications:
26 */
27
28 /* Allow multiple inclusion to work. */
29
30 #ifndef GCC_F_NAME_H
31 #define GCC_F_NAME_H
32
33 /* Simple definitions and enumerations. */
34
35
36 /* Typedefs. */
37
38 typedef struct _ffename_ *ffename;
39 typedef struct _ffename_space_ *ffenameSpace;
40
41 /* Include files needed by this one. */
42
43 #include "global.h"
44 #include "lex.h"
45 #include "malloc.h"
46 #include "symbol.h"
47
48 /* Structure definitions. */
49
50 struct _ffename_
51   {
52     ffename next;
53     ffename previous;
54     ffelexToken t;
55     union
56       {
57         ffesymbol s;
58         ffeglobal g;
59       }
60     u;
61   };
62
63 struct _ffename_space_
64   {
65     ffename first;
66     ffename last;
67     mallocPool pool;
68   };
69
70 /* Global objects accessed by users of this module. */
71
72
73 /* Declare functions with prototypes. */
74
75 ffename ffename_find (ffenameSpace ns, ffelexToken t);
76 void ffename_kill (ffenameSpace ns, ffename n);
77 ffename ffename_lookup (ffenameSpace ns, ffelexToken t);
78 void ffename_space_drive_global (ffenameSpace ns, ffeglobal (*fn) (ffeglobal));
79 void ffename_space_drive_symbol (ffenameSpace ns, ffesymbol (*fn) (ffesymbol));
80 void ffename_space_kill (ffenameSpace ns);
81 ffenameSpace ffename_space_new (mallocPool pool);
82
83 /* Define macros. */
84
85 #define ffename_first_token(n) ((n)->t)
86 #define ffename_global(n) ((n)->u.g)
87 #define ffename_init_0()
88 #define ffename_init_1()
89 #define ffename_init_2()
90 #define ffename_init_3()
91 #define ffename_init_4()
92 #define ffename_set_global(n,glob) ((n)->u.g = (glob))
93 #define ffename_set_symbol(n,sym) ((n)->u.s = (sym))
94 #define ffename_symbol(n) ((n)->u.s)
95 #define ffename_terminate_0()
96 #define ffename_terminate_1()
97 #define ffename_terminate_2()
98 #define ffename_terminate_3()
99 #define ffename_terminate_4()
100 #define ffename_text(n) ffelex_token_text((n)->t)
101 #define ffename_token(n) ((n)->t)
102 #define ffename_where_filename(n) ffelex_token_where_filename((n)->t)
103 #define ffename_where_filelinenum(n) ffelex_token_where_filelinenum((n)->t)
104 #define ffename_where_line(n) ffelex_token_where_line((n)->t)
105 #define ffename_where_column(n) ffelex_token_where_column((n)->t)
106
107 /* End of #include file. */
108
109 #endif /* ! GCC_F_NAME_H */