| 1 | /* g2c.h  --  g77 version of f2c (Standard Fortran to C header file) */ | 
|---|
| 2 |  | 
|---|
| 3 | /* This file is generated by the g77 libg2c configuration process from a | 
|---|
| 4 | file named g2c.hin.  This process sets up the appropriate types, | 
|---|
| 5 | defines the appropriate macros, and so on.  The resulting g2c.h file | 
|---|
| 6 | is used to build g77's copy of libf2c, named libg2c, and also can | 
|---|
| 7 | be used when compiling C code produced by f2c to link the resulting | 
|---|
| 8 | object file(s) with those produced by the same version of g77 that | 
|---|
| 9 | produced this file, allowing inter-operability of f2c-compiled and | 
|---|
| 10 | g77-compiled code.  */ | 
|---|
| 11 |  | 
|---|
| 12 | /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed." | 
|---|
| 13 |  | 
|---|
| 14 | - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ | 
|---|
| 15 |  | 
|---|
| 16 | #ifndef F2C_INCLUDE | 
|---|
| 17 | #define F2C_INCLUDE | 
|---|
| 18 |  | 
|---|
| 19 | /* F2C_INTEGER will normally be `int' but would be `long' on 16-bit systems */ | 
|---|
| 20 | /* we assume short, float are OK */ | 
|---|
| 21 | typedef __g77_integer integer; | 
|---|
| 22 | typedef __g77_uinteger uinteger; | 
|---|
| 23 | typedef char *address; | 
|---|
| 24 | typedef short int shortint; | 
|---|
| 25 | typedef float real; | 
|---|
| 26 | typedef double doublereal; | 
|---|
| 27 | typedef struct { real r, i; } complex; | 
|---|
| 28 | typedef struct { doublereal r, i; } doublecomplex; | 
|---|
| 29 | typedef __g77_integer logical; | 
|---|
| 30 | typedef short int shortlogical; | 
|---|
| 31 | typedef char logical1; | 
|---|
| 32 | typedef char integer1; | 
|---|
| 33 | typedef __g77_longint longint;                  /* system-dependent */ | 
|---|
| 34 | typedef __g77_ulongint ulongint;                /* system-dependent */ | 
|---|
| 35 | #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b))) | 
|---|
| 36 | #define qbit_set(a,b)   ((a) |  ((ulongint)1 << (b))) | 
|---|
| 37 |  | 
|---|
| 38 | #define TRUE_ (1) | 
|---|
| 39 | #define FALSE_ (0) | 
|---|
| 40 |  | 
|---|
| 41 | /* Extern is for use with -E */ | 
|---|
| 42 | #ifndef Extern | 
|---|
| 43 | #define Extern extern | 
|---|
| 44 | #endif | 
|---|
| 45 |  | 
|---|
| 46 | /* I/O stuff */ | 
|---|
| 47 |  | 
|---|
| 48 | #ifdef f2c_i2 | 
|---|
| 49 | #error "f2c_i2 will not work with g77!!!!" | 
|---|
| 50 | /* for -i2 */ | 
|---|
| 51 | typedef short flag; | 
|---|
| 52 | typedef short ftnlen; | 
|---|
| 53 | typedef short ftnint; | 
|---|
| 54 | #else | 
|---|
| 55 | typedef __g77_integer flag; | 
|---|
| 56 | typedef __g77_integer ftnlen; | 
|---|
| 57 | typedef __g77_integer ftnint; | 
|---|
| 58 | #endif | 
|---|
| 59 |  | 
|---|
| 60 | /*external read, write*/ | 
|---|
| 61 | typedef struct | 
|---|
| 62 | {       flag cierr; | 
|---|
| 63 | ftnint ciunit; | 
|---|
| 64 | flag ciend; | 
|---|
| 65 | char *cifmt; | 
|---|
| 66 | ftnint cirec; | 
|---|
| 67 | } cilist; | 
|---|
| 68 |  | 
|---|
| 69 | /*internal read, write*/ | 
|---|
| 70 | typedef struct | 
|---|
| 71 | {       flag icierr; | 
|---|
| 72 | char *iciunit; | 
|---|
| 73 | flag iciend; | 
|---|
| 74 | char *icifmt; | 
|---|
| 75 | ftnint icirlen; | 
|---|
| 76 | ftnint icirnum; | 
|---|
| 77 | } icilist; | 
|---|
| 78 |  | 
|---|
| 79 | /*open*/ | 
|---|
| 80 | typedef struct | 
|---|
| 81 | {       flag oerr; | 
|---|
| 82 | ftnint ounit; | 
|---|
| 83 | char *ofnm; | 
|---|
| 84 | ftnlen ofnmlen; | 
|---|
| 85 | char *osta; | 
|---|
| 86 | char *oacc; | 
|---|
| 87 | char *ofm; | 
|---|
| 88 | ftnint orl; | 
|---|
| 89 | char *oblnk; | 
|---|
| 90 | } olist; | 
|---|
| 91 |  | 
|---|
| 92 | /*close*/ | 
|---|
| 93 | typedef struct | 
|---|
| 94 | {       flag cerr; | 
|---|
| 95 | ftnint cunit; | 
|---|
| 96 | char *csta; | 
|---|
| 97 | } cllist; | 
|---|
| 98 |  | 
|---|
| 99 | /*rewind, backspace, endfile*/ | 
|---|
| 100 | typedef struct | 
|---|
| 101 | {       flag aerr; | 
|---|
| 102 | ftnint aunit; | 
|---|
| 103 | } alist; | 
|---|
| 104 |  | 
|---|
| 105 | /* inquire */ | 
|---|
| 106 | typedef struct | 
|---|
| 107 | {       flag inerr; | 
|---|
| 108 | ftnint inunit; | 
|---|
| 109 | char *infile; | 
|---|
| 110 | ftnlen infilen; | 
|---|
| 111 | ftnint  *inex;  /*parameters in standard's order*/ | 
|---|
| 112 | ftnint  *inopen; | 
|---|
| 113 | ftnint  *innum; | 
|---|
| 114 | ftnint  *innamed; | 
|---|
| 115 | char    *inname; | 
|---|
| 116 | ftnlen  innamlen; | 
|---|
| 117 | char    *inacc; | 
|---|
| 118 | ftnlen  inacclen; | 
|---|
| 119 | char    *inseq; | 
|---|
| 120 | ftnlen  inseqlen; | 
|---|
| 121 | char    *indir; | 
|---|
| 122 | ftnlen  indirlen; | 
|---|
| 123 | char    *infmt; | 
|---|
| 124 | ftnlen  infmtlen; | 
|---|
| 125 | char    *inform; | 
|---|
| 126 | ftnint  informlen; | 
|---|
| 127 | char    *inunf; | 
|---|
| 128 | ftnlen  inunflen; | 
|---|
| 129 | ftnint  *inrecl; | 
|---|
| 130 | ftnint  *innrec; | 
|---|
| 131 | char    *inblank; | 
|---|
| 132 | ftnlen  inblanklen; | 
|---|
| 133 | } inlist; | 
|---|
| 134 |  | 
|---|
| 135 | union Multitype {       /* for multiple entry points */ | 
|---|
| 136 | integer1 g; | 
|---|
| 137 | shortint h; | 
|---|
| 138 | integer i; | 
|---|
| 139 | /* longint j; */ | 
|---|
| 140 | real r; | 
|---|
| 141 | doublereal d; | 
|---|
| 142 | complex c; | 
|---|
| 143 | doublecomplex z; | 
|---|
| 144 | }; | 
|---|
| 145 |  | 
|---|
| 146 | typedef union Multitype Multitype; | 
|---|
| 147 |  | 
|---|
| 148 | /*typedef long int Long;*/      /* No longer used; formerly in Namelist */ | 
|---|
| 149 |  | 
|---|
| 150 | struct Vardesc {        /* for Namelist */ | 
|---|
| 151 | char *name; | 
|---|
| 152 | char *addr; | 
|---|
| 153 | ftnlen *dims; | 
|---|
| 154 | int  type; | 
|---|
| 155 | }; | 
|---|
| 156 | typedef struct Vardesc Vardesc; | 
|---|
| 157 |  | 
|---|
| 158 | struct Namelist { | 
|---|
| 159 | char *name; | 
|---|
| 160 | Vardesc **vars; | 
|---|
| 161 | int nvars; | 
|---|
| 162 | }; | 
|---|
| 163 | typedef struct Namelist Namelist; | 
|---|
| 164 |  | 
|---|
| 165 | #define abs(x) ((x) >= 0 ? (x) : -(x)) | 
|---|
| 166 | #define dabs(x) (doublereal)abs(x) | 
|---|
| 167 | #define min(a,b) ((a) <= (b) ? (a) : (b)) | 
|---|
| 168 | #define max(a,b) ((a) >= (b) ? (a) : (b)) | 
|---|
| 169 | #define dmin(a,b) (doublereal)min(a,b) | 
|---|
| 170 | #define dmax(a,b) (doublereal)max(a,b) | 
|---|
| 171 | #define bit_test(a,b)   ((a) >> (b) & 1) | 
|---|
| 172 | #define bit_clear(a,b)  ((a) & ~((uinteger)1 << (b))) | 
|---|
| 173 | #define bit_set(a,b)    ((a) |  ((uinteger)1 << (b))) | 
|---|
| 174 |  | 
|---|
| 175 | /* procedure parameter types for -A and -C++ */ | 
|---|
| 176 |  | 
|---|
| 177 | #define F2C_proc_par_types 1 | 
|---|
| 178 | #ifdef __cplusplus | 
|---|
| 179 | typedef int /* Unknown procedure type */ (*U_fp)(...); | 
|---|
| 180 | typedef shortint (*J_fp)(...); | 
|---|
| 181 | typedef integer (*I_fp)(...); | 
|---|
| 182 | typedef real (*R_fp)(...); | 
|---|
| 183 | typedef doublereal (*D_fp)(...), (*E_fp)(...); | 
|---|
| 184 | typedef /* Complex */ void (*C_fp)(...); | 
|---|
| 185 | typedef /* Double Complex */ void (*Z_fp)(...); | 
|---|
| 186 | typedef logical (*L_fp)(...); | 
|---|
| 187 | typedef shortlogical (*K_fp)(...); | 
|---|
| 188 | typedef /* Character */ void (*H_fp)(...); | 
|---|
| 189 | typedef /* Subroutine */ int (*S_fp)(...); | 
|---|
| 190 | #else | 
|---|
| 191 | typedef int /* Unknown procedure type */ (*U_fp)(); | 
|---|
| 192 | typedef shortint (*J_fp)(); | 
|---|
| 193 | typedef integer (*I_fp)(); | 
|---|
| 194 | typedef real (*R_fp)(); | 
|---|
| 195 | typedef doublereal (*D_fp)(), (*E_fp)(); | 
|---|
| 196 | typedef /* Complex */ void (*C_fp)(); | 
|---|
| 197 | typedef /* Double Complex */ void (*Z_fp)(); | 
|---|
| 198 | typedef logical (*L_fp)(); | 
|---|
| 199 | typedef shortlogical (*K_fp)(); | 
|---|
| 200 | typedef /* Character */ void (*H_fp)(); | 
|---|
| 201 | typedef /* Subroutine */ int (*S_fp)(); | 
|---|
| 202 | #endif | 
|---|
| 203 | /* E_fp is for real functions when -R is not specified */ | 
|---|
| 204 | typedef void C_f;       /* complex function */ | 
|---|
| 205 | typedef void H_f;       /* character function */ | 
|---|
| 206 | typedef void Z_f;       /* double complex function */ | 
|---|
| 207 | typedef doublereal E_f; /* real function with -R not specified */ | 
|---|
| 208 |  | 
|---|
| 209 | /* undef any lower-case symbols that your C compiler predefines, e.g.: */ | 
|---|
| 210 |  | 
|---|
| 211 | #ifndef Skip_f2c_Undefs | 
|---|
| 212 | /* (No such symbols should be defined in a strict ANSI C compiler. | 
|---|
| 213 | We can avoid trouble with f2c-translated code by using | 
|---|
| 214 | gcc -ansi [-traditional].) */ | 
|---|
| 215 | #undef cray | 
|---|
| 216 | #undef gcos | 
|---|
| 217 | #undef mc68010 | 
|---|
| 218 | #undef mc68020 | 
|---|
| 219 | #undef mips | 
|---|
| 220 | #undef pdp11 | 
|---|
| 221 | #undef sgi | 
|---|
| 222 | #undef sparc | 
|---|
| 223 | #undef sun | 
|---|
| 224 | #undef sun2 | 
|---|
| 225 | #undef sun3 | 
|---|
| 226 | #undef sun4 | 
|---|
| 227 | #undef u370 | 
|---|
| 228 | #undef u3b | 
|---|
| 229 | #undef u3b2 | 
|---|
| 230 | #undef u3b5 | 
|---|
| 231 | #undef unix | 
|---|
| 232 | #undef vax | 
|---|
| 233 | #endif | 
|---|
| 234 | #endif | 
|---|