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