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