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