]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - include/f2c.h
More kosher regexp eliminating, based on BSD date now
[FreeBSD/FreeBSD.git] / include / f2c.h
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 int flag;
40 typedef long int ftnlen;
41 typedef long int 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 int 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