| /* g2c.h -- g77 version of f2c (Standard Fortran to C header file) */ |
| |
| /* This file is generated by the g77 libg2c configuration process from a |
| file named g2c.hin. This process sets up the appropriate types, |
| defines the appropriate macros, and so on. The resulting g2c.h file |
| is used to build g77's copy of libf2c, named libg2c, and also can |
| be used when compiling C code produced by f2c to link the resulting |
| object file(s) with those produced by the same version of g77 that |
| produced this file, allowing inter-operability of f2c-compiled and |
| g77-compiled code. */ |
| |
| /** barf [ba:rf] 2. "He suggested using FORTRAN, and everybody barfed." |
| |
| - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */ |
| |
| #ifndef F2C_INCLUDE |
| #define F2C_INCLUDE |
| |
| /* F2C_INTEGER will normally be `int' but would be `long' on 16-bit systems */ |
| /* we assume short, float are OK */ |
| typedef @F2C_INTEGER@ /* long int */ integer; |
| typedef unsigned @F2C_INTEGER@ /* long */ uinteger; |
| typedef char *address; |
| typedef short int shortint; |
| typedef float real; |
| typedef double doublereal; |
| typedef struct { real r, i; } complex; |
| typedef struct { doublereal r, i; } doublecomplex; |
| typedef @F2C_INTEGER@ /* long int */ logical; |
| typedef short int shortlogical; |
| typedef char logical1; |
| typedef char integer1; |
| typedef @F2C_LONGINT@ /* long long */ longint; /* system-dependent */ |
| typedef unsigned @F2C_LONGINT@ /* long long */ ulongint; /* system-dependent */ |
| #define qbit_clear(a,b) ((a) & ~((ulongint)1 << (b))) |
| #define qbit_set(a,b) ((a) | ((ulongint)1 << (b))) |
| |
| #define TRUE_ (1) |
| #define FALSE_ (0) |
| |
| /* Extern is for use with -E */ |
| #ifndef Extern |
| #define Extern extern |
| #endif |
| |
| /* I/O stuff */ |
| |
| #ifdef f2c_i2 |
| #error "f2c_i2 will not work with g77!!!!" |
| /* for -i2 */ |
| typedef short flag; |
| typedef short ftnlen; |
| typedef short ftnint; |
| #else |
| typedef @F2C_INTEGER@ /* long int */ flag; |
| typedef @F2C_INTEGER@ /* long int */ ftnlen; |
| typedef @F2C_INTEGER@ /* long int */ ftnint; |
| #endif |
| |
| /*external read, write*/ |
| typedef struct |
| { flag cierr; |
| ftnint ciunit; |
| flag ciend; |
| char *cifmt; |
| ftnint cirec; |
| } cilist; |
| |
| /*internal read, write*/ |
| typedef struct |
| { flag icierr; |
| char *iciunit; |
| flag iciend; |
| char *icifmt; |
| ftnint icirlen; |
| ftnint icirnum; |
| } icilist; |
| |
| /*open*/ |
| typedef struct |
| { flag oerr; |
| ftnint ounit; |
| char *ofnm; |
| ftnlen ofnmlen; |
| char *osta; |
| char *oacc; |
| char *ofm; |
| ftnint orl; |
| char *oblnk; |
| } olist; |
| |
| /*close*/ |
| typedef struct |
| { flag cerr; |
| ftnint cunit; |
| char *csta; |
| } cllist; |
| |
| /*rewind, backspace, endfile*/ |
| typedef struct |
| { flag aerr; |
| ftnint aunit; |
| } alist; |
| |
| /* inquire */ |
| typedef struct |
| { flag inerr; |
| ftnint inunit; |
| char *infile; |
| ftnlen infilen; |
| ftnint *inex; /*parameters in standard's order*/ |
| ftnint *inopen; |
| ftnint *innum; |
| ftnint *innamed; |
| char *inname; |
| ftnlen innamlen; |
| char *inacc; |
| ftnlen inacclen; |
| char *inseq; |
| ftnlen inseqlen; |
| char *indir; |
| ftnlen indirlen; |
| char *infmt; |
| ftnlen infmtlen; |
| char *inform; |
| ftnint informlen; |
| char *inunf; |
| ftnlen inunflen; |
| ftnint *inrecl; |
| ftnint *innrec; |
| char *inblank; |
| ftnlen inblanklen; |
| } inlist; |
| |
| #define VOID void |
| |
| union Multitype { /* for multiple entry points */ |
| integer1 g; |
| shortint h; |
| integer i; |
| /* longint j; */ |
| real r; |
| doublereal d; |
| complex c; |
| doublecomplex z; |
| }; |
| |
| typedef union Multitype Multitype; |
| |
| /*typedef long int Long;*/ /* No longer used; formerly in Namelist */ |
| |
| struct Vardesc { /* for Namelist */ |
| char *name; |
| char *addr; |
| ftnlen *dims; |
| int type; |
| }; |
| typedef struct Vardesc Vardesc; |
| |
| struct Namelist { |
| char *name; |
| Vardesc **vars; |
| int nvars; |
| }; |
| typedef struct Namelist Namelist; |
| |
| #define abs(x) ((x) >= 0 ? (x) : -(x)) |
| #define dabs(x) (doublereal)abs(x) |
| #define min(a,b) ((a) <= (b) ? (a) : (b)) |
| #define max(a,b) ((a) >= (b) ? (a) : (b)) |
| #define dmin(a,b) (doublereal)min(a,b) |
| #define dmax(a,b) (doublereal)max(a,b) |
| #define bit_test(a,b) ((a) >> (b) & 1) |
| #define bit_clear(a,b) ((a) & ~((uinteger)1 << (b))) |
| #define bit_set(a,b) ((a) | ((uinteger)1 << (b))) |
| |
| /* procedure parameter types for -A and -C++ */ |
| |
| #define F2C_proc_par_types 1 |
| #ifdef __cplusplus |
| typedef int /* Unknown procedure type */ (*U_fp)(...); |
| typedef shortint (*J_fp)(...); |
| typedef integer (*I_fp)(...); |
| typedef real (*R_fp)(...); |
| typedef doublereal (*D_fp)(...), (*E_fp)(...); |
| typedef /* Complex */ VOID (*C_fp)(...); |
| typedef /* Double Complex */ VOID (*Z_fp)(...); |
| typedef logical (*L_fp)(...); |
| typedef shortlogical (*K_fp)(...); |
| typedef /* Character */ VOID (*H_fp)(...); |
| typedef /* Subroutine */ int (*S_fp)(...); |
| #else |
| typedef int /* Unknown procedure type */ (*U_fp)(); |
| typedef shortint (*J_fp)(); |
| typedef integer (*I_fp)(); |
| typedef real (*R_fp)(); |
| typedef doublereal (*D_fp)(), (*E_fp)(); |
| typedef /* Complex */ VOID (*C_fp)(); |
| typedef /* Double Complex */ VOID (*Z_fp)(); |
| typedef logical (*L_fp)(); |
| typedef shortlogical (*K_fp)(); |
| typedef /* Character */ VOID (*H_fp)(); |
| typedef /* Subroutine */ int (*S_fp)(); |
| #endif |
| /* E_fp is for real functions when -R is not specified */ |
| typedef VOID C_f; /* complex function */ |
| typedef VOID H_f; /* character function */ |
| typedef VOID Z_f; /* double complex function */ |
| typedef doublereal E_f; /* real function with -R not specified */ |
| |
| /* undef any lower-case symbols that your C compiler predefines, e.g.: */ |
| |
| #ifndef Skip_f2c_Undefs |
| /* (No such symbols should be defined in a strict ANSI C compiler. |
| We can avoid trouble with f2c-translated code by using |
| gcc -ansi [-traditional].) */ |
| #undef cray |
| #undef gcos |
| #undef mc68010 |
| #undef mc68020 |
| #undef mips |
| #undef pdp11 |
| #undef sgi |
| #undef sparc |
| #undef sun |
| #undef sun2 |
| #undef sun3 |
| #undef sun4 |
| #undef u370 |
| #undef u3b |
| #undef u3b2 |
| #undef u3b5 |
| #undef unix |
| #undef vax |
| #endif |
| #endif |