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