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.
5 This file is part of GNU Fortran.
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)
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.
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
27 Extensive rewrite for new cleaner approach.
30 /* Allow multiple inclusion to work. */
35 /* Simple definitions and enumerations. */
39 #define FFEINFO_BASICTYPE(KWD,LNAM,SNAM) KWD,
41 #undef FFEINFO_BASICTYPE
46 { /* If these kindtypes aren't in size order,
47 change _kindtype_max. */
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
,
87 #define FFEINFO_KIND(KWD,LNAM,SNAM) KWD,
95 #define FFEINFO_WHERE(KWD,LNAM,SNAM) KWD,
103 typedef struct _ffeinfo_ ffeinfo
;
104 typedef char ffeinfoRank
;
106 /* Include files needed by this one. */
111 /* Structure definitions. */
115 ffeinfoBasictype basictype
;
116 ffeinfoKindtype kindtype
;
120 ffetargetCharacterSize size
;
123 /* Global objects accessed by users of this module. */
126 /* Declare functions with prototypes. */
128 ffeinfoBasictype
ffeinfo_basictype_combine (ffeinfoBasictype l
,
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
,
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
,
144 ffetype
ffeinfo_type (ffeinfoBasictype basictype
, ffeinfoKindtype kindtype
);
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)
156 #define ffeinfo_new(bt,kt,r,k,w,sz) \
157 ((ffeinfo) {(bt), (kt), (r), (k), (w), (sz)})
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)
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
184 /* End of #include file. */
186 #endif /* ! GCC_F_INFO_H */