Commit | Line | Data |
---|---|---|
56181c4b WH |
1 | /* f2c.h -- Standard Fortran to C header file */ |
2 | ||
3 | /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." | |
4 | ||
5 | - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ | |
6 | ||
7 | #ifndef F2C_INCLUDE | |
8 | #define F2C_INCLUDE | |
9 | ||
10 | typedef long int integer; | |
11 | typedef char *address; | |
12 | typedef short int shortint; | |
13 | typedef float real; | |
14 | typedef double doublereal; | |
15 | typedef struct { real r, i; } complex; | |
16 | typedef struct { doublereal r, i; } doublecomplex; | |
17 | typedef long int logical; | |
18 | typedef short int shortlogical; | |
19 | typedef char logical1; | |
20 | typedef char integer1; | |
21 | /* typedef long long longint; */ /* system-dependent */ | |
22 | ||
23 | #define TRUE_ (1) | |
24 | #define FALSE_ (0) | |
25 | ||
26 | /* Extern is for use with -E */ | |
27 | #ifndef Extern | |
28 | #define Extern extern | |
29 | #endif | |
30 | ||
31 | /* I/O stuff */ | |
32 | ||
33 | #ifdef f2c_i2 | |
34 | /* for -i2 */ | |
35 | typedef short flag; | |
36 | typedef short ftnlen; | |
37 | typedef short ftnint; | |
38 | #else | |
39 | typedef long flag; | |
40 | typedef long ftnlen; | |
41 | typedef long ftnint; | |
42 | #endif | |
43 | ||
44 | /*external read, write*/ | |
45 | typedef struct | |
46 | { flag cierr; | |
47 | ftnint ciunit; | |
48 | flag ciend; | |
49 | char *cifmt; | |
50 | ftnint cirec; | |
51 | } cilist; | |
52 | ||
53 | /*internal read, write*/ | |
54 | typedef struct | |
55 | { flag icierr; | |
56 | char *iciunit; | |
57 | flag iciend; | |
58 | char *icifmt; | |
59 | ftnint icirlen; | |
60 | ftnint icirnum; | |
61 | } icilist; | |
62 | ||
63 | /*open*/ | |
64 | typedef struct | |
65 | { flag oerr; | |
66 | ftnint ounit; | |
67 | char *ofnm; | |
68 | ftnlen ofnmlen; | |
69 | char *osta; | |
70 | char *oacc; | |
71 | char *ofm; | |
72 | ftnint orl; | |
73 | char *oblnk; | |
74 | } olist; | |
75 | ||
76 | /*close*/ | |
77 | typedef struct | |
78 | { flag cerr; | |
79 | ftnint cunit; | |
80 | char *csta; | |
81 | } cllist; | |
82 | ||
83 | /*rewind, backspace, endfile*/ | |
84 | typedef struct | |
85 | { flag aerr; | |
86 | ftnint aunit; | |
87 | } alist; | |
88 | ||
89 | /* inquire */ | |
90 | typedef struct | |
91 | { flag inerr; | |
92 | ftnint inunit; | |
93 | char *infile; | |
94 | ftnlen infilen; | |
95 | ftnint *inex; /*parameters in standard's order*/ | |
96 | ftnint *inopen; | |
97 | ftnint *innum; | |
98 | ftnint *innamed; | |
99 | char *inname; | |
100 | ftnlen innamlen; | |
101 | char *inacc; | |
102 | ftnlen inacclen; | |
103 | char *inseq; | |
104 | ftnlen inseqlen; | |
105 | char *indir; | |
106 | ftnlen indirlen; | |
107 | char *infmt; | |
108 | ftnlen infmtlen; | |
109 | char *inform; | |
110 | ftnint informlen; | |
111 | char *inunf; | |
112 | ftnlen inunflen; | |
113 | ftnint *inrecl; | |
114 | ftnint *innrec; | |
115 | char *inblank; | |
116 | ftnlen inblanklen; | |
117 | } inlist; | |
118 | ||
119 | #define VOID void | |
120 | ||
121 | union Multitype { /* for multiple entry points */ | |
122 | integer1 g; | |
123 | shortint h; | |
124 | integer i; | |
125 | /* longint j; */ | |
126 | real r; | |
127 | doublereal d; | |
128 | complex c; | |
129 | doublecomplex z; | |
130 | }; | |
131 | ||
132 | typedef union Multitype Multitype; | |
133 | ||
134 | typedef long Long; /* No longer used; formerly in Namelist */ | |
135 | ||
136 | struct Vardesc { /* for Namelist */ | |
137 | char *name; | |
138 | char *addr; | |
139 | ftnlen *dims; | |
140 | int type; | |
141 | }; | |
142 | typedef struct Vardesc Vardesc; | |
143 | ||
144 | struct Namelist { | |
145 | char *name; | |
146 | Vardesc **vars; | |
147 | int nvars; | |
148 | }; | |
149 | typedef struct Namelist Namelist; | |
150 | ||
151 | #define abs(x) ((x) >= 0 ? (x) : -(x)) | |
152 | #define dabs(x) (doublereal)abs(x) | |
153 | #define min(a,b) ((a) <= (b) ? (a) : (b)) | |
154 | #define max(a,b) ((a) >= (b) ? (a) : (b)) | |
155 | #define dmin(a,b) (doublereal)min(a,b) | |
156 | #define dmax(a,b) (doublereal)max(a,b) | |
157 | ||
158 | /* procedure parameter types for -A and -C++ */ | |
159 | ||
160 | #define F2C_proc_par_types 1 | |
161 | #ifdef __cplusplus | |
162 | typedef int /* Unknown procedure type */ (*U_fp)(...); | |
163 | typedef shortint (*J_fp)(...); | |
164 | typedef integer (*I_fp)(...); | |
165 | typedef real (*R_fp)(...); | |
166 | typedef doublereal (*D_fp)(...), (*E_fp)(...); | |
167 | typedef /* Complex */ VOID (*C_fp)(...); | |
168 | typedef /* Double Complex */ VOID (*Z_fp)(...); | |
169 | typedef logical (*L_fp)(...); | |
170 | typedef shortlogical (*K_fp)(...); | |
171 | typedef /* Character */ VOID (*H_fp)(...); | |
172 | typedef /* Subroutine */ int (*S_fp)(...); | |
173 | #else | |
174 | typedef int /* Unknown procedure type */ (*U_fp)(); | |
175 | typedef shortint (*J_fp)(); | |
176 | typedef integer (*I_fp)(); | |
177 | typedef real (*R_fp)(); | |
178 | typedef doublereal (*D_fp)(), (*E_fp)(); | |
179 | typedef /* Complex */ VOID (*C_fp)(); | |
180 | typedef /* Double Complex */ VOID (*Z_fp)(); | |
181 | typedef logical (*L_fp)(); | |
182 | typedef shortlogical (*K_fp)(); | |
183 | typedef /* Character */ VOID (*H_fp)(); | |
184 | typedef /* Subroutine */ int (*S_fp)(); | |
185 | #endif | |
186 | /* E_fp is for real functions when -R is not specified */ | |
187 | typedef VOID C_f; /* complex function */ | |
188 | typedef VOID H_f; /* character function */ | |
189 | typedef VOID Z_f; /* double complex function */ | |
190 | typedef doublereal E_f; /* real function with -R not specified */ | |
191 | ||
192 | /* undef any lower-case symbols that your C compiler predefines, e.g.: */ | |
193 | ||
194 | #ifndef Skip_f2c_Undefs | |
195 | #undef cray | |
196 | #undef gcos | |
197 | #undef mc68010 | |
198 | #undef mc68020 | |
199 | #undef mips | |
200 | #undef pdp11 | |
201 | #undef sgi | |
202 | #undef sparc | |
203 | #undef sun | |
204 | #undef sun2 | |
205 | #undef sun3 | |
206 | #undef sun4 | |
207 | #undef u370 | |
208 | #undef u3b | |
209 | #undef u3b2 | |
210 | #undef u3b5 | |
211 | #undef unix | |
212 | #undef vax | |
213 | #endif | |
214 | #endif |