]>
Commit | Line | Data |
---|---|---|
8e5578ea | 1 | /* info.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 | info.c | |
24 | ||
25 | Modifications: | |
26 | 30-Aug-90 JCB 2.0 | |
27 | Extensive rewrite for new cleaner approach. | |
28 | */ | |
29 | ||
30 | /* Allow multiple inclusion to work. */ | |
31 | ||
32 | #ifndef GCC_F_INFO_H | |
33 | #define GCC_F_INFO_H | |
34 | ||
35 | /* Simple definitions and enumerations. */ | |
36 | ||
37 | typedef enum | |
38 | { | |
39 | #define FFEINFO_BASICTYPE(KWD,LNAM,SNAM) KWD, | |
40 | #include "info-b.def" | |
41 | #undef FFEINFO_BASICTYPE | |
42 | FFEINFO_basictype | |
43 | } ffeinfoBasictype; | |
44 | ||
45 | typedef enum | |
46 | { /* If these kindtypes aren't in size order, | |
47 | change _kindtype_max. */ | |
48 | FFEINFO_kindtypeNONE, | |
49 | FFEINFO_kindtypeINTEGER1, | |
50 | FFEINFO_kindtypeINTEGER2, | |
51 | FFEINFO_kindtypeINTEGER3, | |
52 | FFEINFO_kindtypeINTEGER4, | |
53 | FFEINFO_kindtypeINTEGER5, | |
54 | FFEINFO_kindtypeINTEGER6, | |
55 | FFEINFO_kindtypeINTEGER7, | |
56 | FFEINFO_kindtypeINTEGER8, | |
57 | FFEINFO_kindtypeLOGICAL1 = 1, /* Ok to omit, but ok to overlap. */ | |
58 | FFEINFO_kindtypeLOGICAL2, | |
59 | FFEINFO_kindtypeLOGICAL3, | |
60 | FFEINFO_kindtypeLOGICAL4, | |
61 | FFEINFO_kindtypeLOGICAL5, | |
62 | FFEINFO_kindtypeLOGICAL6, | |
63 | FFEINFO_kindtypeLOGICAL7, | |
64 | FFEINFO_kindtypeLOGICAL8, | |
65 | FFEINFO_kindtypeREAL1 = 1, /* Ok to omit, but ok to overlap. */ | |
66 | FFEINFO_kindtypeREAL2, | |
67 | FFEINFO_kindtypeREAL3, | |
68 | FFEINFO_kindtypeREAL4, | |
69 | FFEINFO_kindtypeREAL5, | |
70 | FFEINFO_kindtypeREAL6, | |
71 | FFEINFO_kindtypeREAL7, | |
72 | FFEINFO_kindtypeREAL8, | |
73 | FFEINFO_kindtypeCHARACTER1 = 1, /* Ok to omit, but ok to overlap. */ | |
74 | FFEINFO_kindtypeCHARACTER2, | |
75 | FFEINFO_kindtypeCHARACTER3, | |
76 | FFEINFO_kindtypeCHARACTER4, | |
77 | FFEINFO_kindtypeCHARACTER5, | |
78 | FFEINFO_kindtypeCHARACTER6, | |
79 | FFEINFO_kindtypeCHARACTER7, | |
80 | FFEINFO_kindtypeCHARACTER8, | |
81 | FFEINFO_kindtypeANY, | |
82 | FFEINFO_kindtype | |
83 | } ffeinfoKindtype; | |
84 | ||
85 | typedef enum | |
86 | { | |
87 | #define FFEINFO_KIND(KWD,LNAM,SNAM) KWD, | |
88 | #include "info-k.def" | |
89 | #undef FFEINFO_KIND | |
90 | FFEINFO_kind | |
91 | } ffeinfoKind; | |
92 | ||
93 | typedef enum | |
94 | { | |
95 | #define FFEINFO_WHERE(KWD,LNAM,SNAM) KWD, | |
96 | #include "info-w.def" | |
97 | #undef FFEINFO_WHERE | |
98 | FFEINFO_where | |
99 | } ffeinfoWhere; | |
100 | ||
101 | /* Typedefs. */ | |
102 | ||
103 | typedef struct _ffeinfo_ ffeinfo; | |
104 | typedef char ffeinfoRank; | |
105 | ||
106 | /* Include files needed by this one. */ | |
107 | ||
108 | #include "target.h" | |
109 | #include "type.h" | |
110 | ||
111 | /* Structure definitions. */ | |
112 | ||
113 | struct _ffeinfo_ | |
114 | { | |
115 | ffeinfoBasictype basictype; | |
116 | ffeinfoKindtype kindtype; | |
117 | ffeinfoRank rank; | |
118 | ffeinfoKind kind; | |
119 | ffeinfoWhere where; | |
120 | ffetargetCharacterSize size; | |
121 | }; | |
122 | ||
123 | /* Global objects accessed by users of this module. */ | |
124 | ||
125 | ||
126 | /* Declare functions with prototypes. */ | |
127 | ||
128 | ffeinfoBasictype ffeinfo_basictype_combine (ffeinfoBasictype l, | |
129 | ffeinfoBasictype r); | |
130 | const char *ffeinfo_basictype_string (ffeinfoBasictype basictype); | |
131 | void ffeinfo_init_0 (void); | |
132 | const char *ffeinfo_kind_message (ffeinfoKind kind); | |
133 | const char *ffeinfo_kind_string (ffeinfoKind kind); | |
134 | ffeinfoKindtype ffeinfo_kindtype_max(ffeinfoBasictype bt, | |
135 | ffeinfoKindtype k1, | |
136 | ffeinfoKindtype k2); | |
137 | const char *ffeinfo_kindtype_string (ffeinfoKindtype kind_type); | |
138 | const char *ffeinfo_where_string (ffeinfoWhere where); | |
139 | ffeinfo ffeinfo_new (ffeinfoBasictype basictype, ffeinfoKindtype kindtype, | |
140 | ffeinfoRank rank, ffeinfoKind kind, ffeinfoWhere where, | |
141 | ffetargetCharacterSize size); | |
142 | void ffeinfo_set_type (ffeinfoBasictype basictype, ffeinfoKindtype kindtype, | |
143 | ffetype type); | |
144 | ffetype ffeinfo_type (ffeinfoBasictype basictype, ffeinfoKindtype kindtype); | |
145 | ||
146 | /* Define macros. */ | |
147 | ||
148 | #define ffeinfo_basictype(i) (i.basictype) | |
149 | #define ffeinfo_init_1() | |
150 | #define ffeinfo_init_2() | |
151 | #define ffeinfo_init_3() | |
152 | #define ffeinfo_init_4() | |
153 | #define ffeinfo_kind(i) (i.kind) | |
154 | #define ffeinfo_kindtype(i) (i.kindtype) | |
155 | #ifdef __GNUC__ | |
156 | #define ffeinfo_new(bt,kt,r,k,w,sz) \ | |
157 | ((ffeinfo) {(bt), (kt), (r), (k), (w), (sz)}) | |
158 | #endif | |
159 | #define ffeinfo_new_any() \ | |
160 | ffeinfo_new (FFEINFO_basictypeANY, FFEINFO_kindtypeANY, 0, \ | |
161 | FFEINFO_kindANY, FFEINFO_whereANY, \ | |
162 | FFETARGET_charactersizeNONE) | |
163 | #define ffeinfo_new_null() \ | |
164 | ffeinfo_new (FFEINFO_basictypeNONE, FFEINFO_kindtypeNONE, 0, \ | |
165 | FFEINFO_kindNONE, FFEINFO_whereNONE, \ | |
166 | FFETARGET_charactersizeNONE) | |
167 | #define ffeinfo_rank(i) (i.rank) | |
168 | #define ffeinfo_size(i) (i.size) | |
169 | #define ffeinfo_terminate_0() | |
170 | #define ffeinfo_terminate_1() | |
171 | #define ffeinfo_terminate_2() | |
172 | #define ffeinfo_terminate_3() | |
173 | #define ffeinfo_terminate_4() | |
174 | #define ffeinfo_use(i) i | |
175 | #define ffeinfo_where(i) (i.where) | |
176 | ||
177 | #define FFEINFO_kindtypeINTEGERDEFAULT FFEINFO_kindtypeINTEGER1 | |
178 | #define FFEINFO_kindtypeLOGICALDEFAULT FFEINFO_kindtypeLOGICAL1 | |
179 | #define FFEINFO_kindtypeREALDEFAULT FFEINFO_kindtypeREAL1 | |
180 | #define FFEINFO_kindtypeREALDOUBLE FFEINFO_kindtypeREAL2 | |
181 | #define FFEINFO_kindtypeREALQUAD FFEINFO_kindtypeREAL3 | |
182 | #define FFEINFO_kindtypeCHARACTERDEFAULT FFEINFO_kindtypeCHARACTER1 | |
183 | ||
184 | /* End of #include file. */ | |
185 | ||
186 | #endif /* ! GCC_F_INFO_H */ |