Put in proper address information for Poul-Henning Kamp.
[unix-history] / include / f2c.h
CommitLineData
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
10typedef long int integer;
11typedef char *address;
12typedef short int shortint;
13typedef float real;
14typedef double doublereal;
15typedef struct { real r, i; } complex;
16typedef struct { doublereal r, i; } doublecomplex;
17typedef long int logical;
18typedef short int shortlogical;
19typedef char logical1;
20typedef 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 */
35typedef short flag;
36typedef short ftnlen;
37typedef short ftnint;
38#else
39typedef long flag;
40typedef long ftnlen;
41typedef long ftnint;
42#endif
43
44/*external read, write*/
45typedef struct
46{ flag cierr;
47 ftnint ciunit;
48 flag ciend;
49 char *cifmt;
50 ftnint cirec;
51} cilist;
52
53/*internal read, write*/
54typedef struct
55{ flag icierr;
56 char *iciunit;
57 flag iciend;
58 char *icifmt;
59 ftnint icirlen;
60 ftnint icirnum;
61} icilist;
62
63/*open*/
64typedef 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*/
77typedef struct
78{ flag cerr;
79 ftnint cunit;
80 char *csta;
81} cllist;
82
83/*rewind, backspace, endfile*/
84typedef struct
85{ flag aerr;
86 ftnint aunit;
87} alist;
88
89/* inquire */
90typedef 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
121union 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
132typedef union Multitype Multitype;
133
134typedef long Long; /* No longer used; formerly in Namelist */
135
136struct Vardesc { /* for Namelist */
137 char *name;
138 char *addr;
139 ftnlen *dims;
140 int type;
141 };
142typedef struct Vardesc Vardesc;
143
144struct Namelist {
145 char *name;
146 Vardesc **vars;
147 int nvars;
148 };
149typedef 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
162typedef int /* Unknown procedure type */ (*U_fp)(...);
163typedef shortint (*J_fp)(...);
164typedef integer (*I_fp)(...);
165typedef real (*R_fp)(...);
166typedef doublereal (*D_fp)(...), (*E_fp)(...);
167typedef /* Complex */ VOID (*C_fp)(...);
168typedef /* Double Complex */ VOID (*Z_fp)(...);
169typedef logical (*L_fp)(...);
170typedef shortlogical (*K_fp)(...);
171typedef /* Character */ VOID (*H_fp)(...);
172typedef /* Subroutine */ int (*S_fp)(...);
173#else
174typedef int /* Unknown procedure type */ (*U_fp)();
175typedef shortint (*J_fp)();
176typedef integer (*I_fp)();
177typedef real (*R_fp)();
178typedef doublereal (*D_fp)(), (*E_fp)();
179typedef /* Complex */ VOID (*C_fp)();
180typedef /* Double Complex */ VOID (*Z_fp)();
181typedef logical (*L_fp)();
182typedef shortlogical (*K_fp)();
183typedef /* Character */ VOID (*H_fp)();
184typedef /* Subroutine */ int (*S_fp)();
185#endif
186/* E_fp is for real functions when -R is not specified */
187typedef VOID C_f; /* complex function */
188typedef VOID H_f; /* character function */
189typedef VOID Z_f; /* double complex function */
190typedef 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