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