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 unsigned long 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 long 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 long int flag; 46 typedef long int ftnlen; 47 typedef long 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 long 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 #define abs(x) ((x) >= 0 ? (x) : -(x)) 158 #define dabs(x) (doublereal)abs(x) 159 #define min(a,b) ((a) <= (b) ? (a) : (b)) 160 #define max(a,b) ((a) >= (b) ? (a) : (b)) 161 #define dmin(a,b) (doublereal)min(a,b) 162 #define dmax(a,b) (doublereal)max(a,b) 163 #define bit_test(a,b) ((a) >> (b) & 1) 164 #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b))) 165 #define bit_set(a,b) ((a) | ((uinteger)1 << (b))) 166 167 /* procedure parameter types for -A and -C++ */ 168 169 #define F2C_proc_par_types 1 170 #ifdef __cplusplus 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 #else 183 typedef int /* Unknown procedure type */ (*U_fp)(); 184 typedef shortint (*J_fp)(); 185 typedef integer (*I_fp)(); 186 typedef real (*R_fp)(); 187 typedef doublereal (*D_fp)(), (*E_fp)(); 188 typedef /* Complex */ VOID (*C_fp)(); 189 typedef /* Double Complex */ VOID (*Z_fp)(); 190 typedef logical (*L_fp)(); 191 typedef shortlogical (*K_fp)(); 192 typedef /* Character */ VOID (*H_fp)(); 193 typedef /* Subroutine */ int (*S_fp)(); 194 #endif 195 /* E_fp is for real functions when -R is not specified */ 196 typedef VOID C_f; /* complex function */ 197 typedef VOID H_f; /* character function */ 198 typedef VOID Z_f; /* double complex function */ 199 typedef doublereal E_f; /* real function with -R not specified */ 200 201 /* undef any lower-case symbols that your C compiler predefines, e.g.: */ 202 203 #ifndef Skip_f2c_Undefs 204 #undef cray 205 #undef gcos 206 #undef mc68010 207 #undef mc68020 208 #undef mips 209 #undef pdp11 210 #undef sgi 211 #undef sparc 212 #undef sun 213 #undef sun2 214 #undef sun3 215 #undef sun4 216 #undef u370 217 #undef u3b 218 #undef u3b2 219 #undef u3b5 220 #undef unix 221 #undef vax 222 #endif 223 #endif 224