|
|
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.