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