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