source: trunk/EISPACK/f2c.h

Last change on this file was 5390, checked in by westram, 16 years ago
  • TAB-Ex
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.4 KB
Line 
1/* f2c.h  --  Standard Fortran to C header file */
2
3/**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
4
5    - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
6
7#ifndef F2C_INCLUDE
8#define F2C_INCLUDE
9
10typedef long int integer;
11typedef char *address;
12typedef short int shortint;
13typedef float real;
14typedef double doublereal;
15typedef struct { real r, i; } complex;
16typedef struct { doublereal r, i; } doublecomplex;
17typedef long int logical;
18typedef short int shortlogical;
19typedef char logical1;
20typedef char integer1;
21/* typedef long long longint; */ /* system-dependent */
22
23#define TRUE_ (1)
24#define FALSE_ (0)
25
26/* Extern is for use with -E */
27#ifndef Extern
28#define Extern extern
29#endif
30
31/* I/O stuff */
32
33#ifdef f2c_i2
34/* for -i2 */
35typedef short flag;
36typedef short ftnlen;
37typedef short ftnint;
38#else
39typedef long int flag;
40typedef long int ftnlen;
41typedef long int ftnint;
42#endif
43
44/*external read, write*/
45typedef struct
46{   flag cierr;
47    ftnint ciunit;
48    flag ciend;
49    char *cifmt;
50    ftnint cirec;
51} cilist;
52
53/*internal read, write*/
54typedef struct
55{   flag icierr;
56    char *iciunit;
57    flag iciend;
58    char *icifmt;
59    ftnint icirlen;
60    ftnint icirnum;
61} icilist;
62
63/*open*/
64typedef struct
65{   flag oerr;
66    ftnint ounit;
67    char *ofnm;
68    ftnlen ofnmlen;
69    char *osta;
70    char *oacc;
71    char *ofm;
72    ftnint orl;
73    char *oblnk;
74} olist;
75
76/*close*/
77typedef struct
78{   flag cerr;
79    ftnint cunit;
80    char *csta;
81} cllist;
82
83/*rewind, backspace, endfile*/
84typedef struct
85{   flag aerr;
86    ftnint aunit;
87} alist;
88
89/* inquire */
90typedef struct
91{   flag inerr;
92    ftnint inunit;
93    char *infile;
94    ftnlen infilen;
95    ftnint  *inex;  /*parameters in standard's order*/
96    ftnint  *inopen;
97    ftnint  *innum;
98    ftnint  *innamed;
99    char    *inname;
100    ftnlen  innamlen;
101    char    *inacc;
102    ftnlen  inacclen;
103    char    *inseq;
104    ftnlen  inseqlen;
105    char    *indir;
106    ftnlen  indirlen;
107    char    *infmt;
108    ftnlen  infmtlen;
109    char    *inform;
110    ftnint  informlen;
111    char    *inunf;
112    ftnlen  inunflen;
113    ftnint  *inrecl;
114    ftnint  *innrec;
115    char    *inblank;
116    ftnlen  inblanklen;
117} inlist;
118
119#define VOID void
120
121union Multitype {   /* for multiple entry points */
122    integer1 g;
123    shortint h;
124    integer i;
125    /* longint j; */
126    real r;
127    doublereal d;
128    complex c;
129    doublecomplex z;
130    };
131
132typedef union Multitype Multitype;
133
134/*typedef long int Long;*/  /* No longer used; formerly in Namelist */
135
136struct Vardesc {    /* for Namelist */
137    char *name;
138    char *addr;
139    ftnlen *dims;
140    int  type;
141    };
142typedef struct Vardesc Vardesc;
143
144struct Namelist {
145    char *name;
146    Vardesc **vars;
147    int nvars;
148    };
149typedef struct Namelist Namelist;
150
151#define abs(x) ((x) >= 0 ? (x) : -(x))
152#define dabs(x) (doublereal)abs(x)
153#define min(a,b) ((a) <= (b) ? (a) : (b))
154#define max(a,b) ((a) >= (b) ? (a) : (b))
155#define dmin(a,b) (doublereal)min(a,b)
156#define dmax(a,b) (doublereal)max(a,b)
157
158/* procedure parameter types for -A and -C++ */
159
160#define F2C_proc_par_types 1
161#ifdef __cplusplus
162typedef int /* Unknown procedure type */ (*U_fp)(...);
163typedef shortint (*J_fp)(...);
164typedef integer (*I_fp)(...);
165typedef real (*R_fp)(...);
166typedef doublereal (*D_fp)(...), (*E_fp)(...);
167typedef /* Complex */ VOID (*C_fp)(...);
168typedef /* Double Complex */ VOID (*Z_fp)(...);
169typedef logical (*L_fp)(...);
170typedef shortlogical (*K_fp)(...);
171typedef /* Character */ VOID (*H_fp)(...);
172typedef /* Subroutine */ int (*S_fp)(...);
173#else
174typedef int /* Unknown procedure type */ (*U_fp)();
175typedef shortint (*J_fp)();
176typedef integer (*I_fp)();
177typedef real (*R_fp)();
178typedef doublereal (*D_fp)(), (*E_fp)();
179typedef /* Complex */ VOID (*C_fp)();
180typedef /* Double Complex */ VOID (*Z_fp)();
181typedef logical (*L_fp)();
182typedef shortlogical (*K_fp)();
183typedef /* Character */ VOID (*H_fp)();
184typedef /* Subroutine */ int (*S_fp)();
185#endif
186/* E_fp is for real functions when -R is not specified */
187typedef VOID C_f;   /* complex function */
188typedef VOID H_f;   /* character function */
189typedef VOID Z_f;   /* double complex function */
190typedef doublereal E_f; /* real function with -R not specified */
191
192/* undef any lower-case symbols that your C compiler predefines, e.g.: */
193
194#ifndef Skip_f2c_Undefs
195#undef cray
196#undef gcos
197#undef mc68010
198#undef mc68020
199#undef mips
200#undef pdp11
201#undef sgi
202#undef sparc
203#undef sun
204#undef sun2
205#undef sun3
206#undef sun4
207#undef u370
208#undef u3b
209#undef u3b2
210#undef u3b5
211#undef unix
212#undef vax
213#endif
214#endif
215
Note: See TracBrowser for help on using the repository browser.