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