xref: /openbsd/gnu/usr.bin/gcc/gcc/f/name.h (revision c87b03e5)
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 */
110