libflame
12600
|
00001 // f2c.h -- Standard Fortran to C header file 00002 // barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." 00003 // - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) 00004 00005 #include <stdio.h> 00006 #include <string.h> 00007 #include <stdlib.h> 00008 #include <math.h> 00009 #include <complex.h> 00010 #undef complex 00011 00012 #ifndef F2C_INCLUDE 00013 #define F2C_INCLUDE 00014 00015 /* typedef long int integer; */ 00016 typedef int integer; 00017 00018 typedef unsigned long int uinteger; 00019 typedef char *address; 00020 typedef short int shortint; 00021 typedef float real; 00022 typedef double doublereal; 00023 typedef struct { real r, i; } complex; 00024 typedef struct { doublereal r, i; } doublecomplex; 00025 00026 /* typedef long int logical; */ 00027 typedef int logical; 00028 00029 typedef short int shortlogical; 00030 typedef char logical1; 00031 typedef char integer1; 00032 #ifdef INTEGER_STAR_8 /* Adjust for integer*8. */ 00033 typedef long long longint; /* system-dependent */ 00034 typedef unsigned long long ulongint; /* system-dependent */ 00035 #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b))) 00036 #define qbit_set(a,b) ((a) | ((ulongint)1 << (b))) 00037 #endif 00038 00039 #define TRUE_ (1) 00040 #define FALSE_ (0) 00041 00042 /* Extern is for use with -E */ 00043 #ifndef Extern 00044 #define Extern extern 00045 #endif 00046 00047 /* I/O stuff */ 00048 00049 #ifdef f2c_i2 00050 /* for -i2 */ 00051 typedef short flag; 00052 typedef short ftnlen; 00053 typedef short ftnint; 00054 #else 00055 typedef long int flag; 00056 typedef long int ftnlen; 00057 typedef long int ftnint; 00058 #endif 00059 00060 /*external read, write*/ 00061 typedef struct 00062 { flag cierr; 00063 ftnint ciunit; 00064 flag ciend; 00065 char *cifmt; 00066 ftnint cirec; 00067 } cilist; 00068 00069 /*internal read, write*/ 00070 typedef struct 00071 { flag icierr; 00072 char *iciunit; 00073 flag iciend; 00074 char *icifmt; 00075 ftnint icirlen; 00076 ftnint icirnum; 00077 } icilist; 00078 00079 /*open*/ 00080 typedef struct 00081 { flag oerr; 00082 ftnint ounit; 00083 char *ofnm; 00084 ftnlen ofnmlen; 00085 char *osta; 00086 char *oacc; 00087 char *ofm; 00088 ftnint orl; 00089 char *oblnk; 00090 } olist; 00091 00092 /*close*/ 00093 typedef struct 00094 { flag cerr; 00095 ftnint cunit; 00096 char *csta; 00097 } cllist; 00098 00099 /*rewind, backspace, endfile*/ 00100 typedef struct 00101 { flag aerr; 00102 ftnint aunit; 00103 } alist; 00104 00105 /* inquire */ 00106 typedef struct 00107 { flag inerr; 00108 ftnint inunit; 00109 char *infile; 00110 ftnlen infilen; 00111 ftnint *inex; /*parameters in standard's order*/ 00112 ftnint *inopen; 00113 ftnint *innum; 00114 ftnint *innamed; 00115 char *inname; 00116 ftnlen innamlen; 00117 char *inacc; 00118 ftnlen inacclen; 00119 char *inseq; 00120 ftnlen inseqlen; 00121 char *indir; 00122 ftnlen indirlen; 00123 char *infmt; 00124 ftnlen infmtlen; 00125 char *inform; 00126 ftnint informlen; 00127 char *inunf; 00128 ftnlen inunflen; 00129 ftnint *inrecl; 00130 ftnint *innrec; 00131 char *inblank; 00132 ftnlen inblanklen; 00133 } inlist; 00134 00135 #define VOID void 00136 00137 union Multitype { /* for multiple entry points */ 00138 integer1 g; 00139 shortint h; 00140 integer i; 00141 /* longint j; */ 00142 real r; 00143 doublereal d; 00144 complex c; 00145 doublecomplex z; 00146 }; 00147 00148 typedef union Multitype Multitype; 00149 00150 /*typedef long int Long;*/ /* No longer used; formerly in Namelist */ 00151 00152 struct Vardesc { /* for Namelist */ 00153 char *name; 00154 char *addr; 00155 ftnlen *dims; 00156 int type; 00157 }; 00158 typedef struct Vardesc Vardesc; 00159 00160 struct Namelist { 00161 char *name; 00162 Vardesc **vars; 00163 int nvars; 00164 }; 00165 typedef struct Namelist Namelist; 00166 00167 #ifndef abs 00168 #define abs(x) ((x) >= 0 ? (x) : -(x)) 00169 #endif 00170 #ifndef dabs 00171 #define dabs(x) (doublereal)abs(x) 00172 #endif 00173 #ifndef min 00174 #define min(a,b) ((a) <= (b) ? (a) : (b)) 00175 #endif 00176 #ifndef max 00177 #define max(a,b) ((a) >= (b) ? (a) : (b)) 00178 #endif 00179 #ifndef dmin 00180 #define dmin(a,b) (doublereal)min(a,b) 00181 #endif 00182 #ifndef dmax 00183 #define dmax(a,b) (doublereal)max(a,b) 00184 #endif 00185 00186 #define bit_test(a,b) ((a) >> (b) & 1) 00187 #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b))) 00188 #define bit_set(a,b) ((a) | ((uinteger)1 << (b))) 00189 00190 /* procedure parameter types for -A and -C++ */ 00191 00192 #define F2C_proc_par_types 1 00193 #ifdef __cplusplus 00194 typedef int /* Unknown procedure type */ (*U_fp)(...); 00195 typedef shortint (*J_fp)(...); 00196 typedef integer (*I_fp)(...); 00197 typedef real (*R_fp)(...); 00198 typedef doublereal (*D_fp)(...); 00199 typedef doublereal (*E_fp)(...); 00200 typedef /* Complex */ VOID (*C_fp)(...); 00201 typedef /* Double Complex */ VOID (*Z_fp)(...); 00202 typedef logical (*L_fp)(...); 00203 typedef shortlogical (*K_fp)(...); 00204 typedef /* Character */ VOID (*H_fp)(...); 00205 typedef /* Subroutine */ int (*S_fp)(...); 00206 #else 00207 typedef int /* Unknown procedure type */ (*U_fp)(); 00208 typedef shortint (*J_fp)(); 00209 typedef integer (*I_fp)(); 00210 typedef real (*R_fp)(); 00211 typedef doublereal (*D_fp)(); 00212 typedef doublereal (*E_fp)(); 00213 typedef /* Complex */ VOID (*C_fp)(); 00214 typedef /* Double Complex */ VOID (*Z_fp)(); 00215 typedef logical (*L_fp)(); 00216 typedef shortlogical (*K_fp)(); 00217 typedef /* Character */ VOID (*H_fp)(); 00218 typedef /* Subroutine */ int (*S_fp)(); 00219 #endif 00220 /* E_fp is for real functions when -R is not specified */ 00221 typedef VOID C_f; /* complex function */ 00222 typedef VOID H_f; /* character function */ 00223 typedef VOID Z_f; /* double complex function */ 00224 typedef doublereal E_f; /* real function with -R not specified */ 00225 00226 /* undef any lower-case symbols that your C compiler predefines, e.g.: */ 00227 00228 #ifndef Skip_f2c_Undefs 00229 #undef cray 00230 #undef gcos 00231 #undef mc68010 00232 #undef mc68020 00233 #undef mips 00234 #undef pdp11 00235 #undef sgi 00236 #undef sparc 00237 #undef sun 00238 #undef sun2 00239 #undef sun3 00240 #undef sun4 00241 #undef u370 00242 #undef u3b 00243 #undef u3b2 00244 #undef u3b5 00245 #undef unix 00246 #undef vax 00247 #endif 00248 #endif