mer feb 12 14:56:57 CET 2003
[asterisk/asterisk.git] / codecs / lpc10 / f2c.h
1 /*
2
3 $Log$
4 Revision 1.14  2003/02/12 13:59:15  matteo
5 mer feb 12 14:56:57 CET 2003
6
7 Revision 1.1.1.1  2003/02/12 13:59:15  matteo
8 mer feb 12 14:56:57 CET 2003
9
10 Revision 1.2  2000/01/05 08:20:39  markster
11 Some OSS fixes and a few lpc changes to make it actually work
12
13  * Revision 1.2  1996/08/20  20:26:28  jaf
14  * Any typedef defining a type that was used in lpc10_encoder_state or
15  * lpc10_decoder_state struct's was commented out here and added to
16  * lpc10.h.
17  *
18  * Revision 1.1  1996/08/19  22:32:13  jaf
19  * Initial revision
20  *
21
22 */
23
24 /*
25  * f2c.h
26  *
27  * SCCS ID:  @(#)f2c.h 1.2 96/05/19
28  */
29
30 /* f2c.h  --  Standard Fortran to C header file */
31
32 /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
33
34         - From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
35
36 #ifndef F2C_INCLUDE
37 #define F2C_INCLUDE
38
39 #include "lpc10.h"
40
41 /*typedef long int integer;*/
42 /*typedef INT32 integer;*/
43 /*typedef short int shortint;*/
44 /*typedef INT16 shortint;*/
45 /*typedef float real;*/
46 /* doublereal only used for function arguments to sqrt, exp, etc. */
47 typedef double doublereal;
48 /* 32 bits seems wasteful, but there really aren't that many logical
49  * variables around, and making them 32 bits could avoid word
50  * alignment problems, perhaps.  */
51 /*typedef long int logical;*/
52 /*typedef INT32 logical;*/
53 /* The following types are not used in the translated C code for the
54  * LPC-10 coder, but they might be needed by the definitions down
55  * below, so they don't cause compilation errors.  */
56 typedef char *address;
57 typedef struct { real r, i; } complex;
58 typedef struct { doublereal r, i; } doublecomplex;
59 typedef short int shortlogical;
60 typedef char logical1;
61 typedef char integer1;
62 /* typedef long long longint; */ /* system-dependent */
63
64 #define TRUE_ (1)
65 #define FALSE_ (0)
66
67 /* Extern is for use with -E */
68 #ifndef Extern
69 #define Extern extern
70 #endif
71
72 /* I/O stuff */
73
74 #ifdef f2c_i2
75 /* for -i2 */
76 typedef short flag;
77 typedef short ftnlen;
78 typedef short ftnint;
79 #else
80 typedef long int flag;
81 typedef long int ftnlen;
82 typedef long int ftnint;
83 #endif
84
85 /*external read, write*/
86 typedef struct
87 {       flag cierr;
88         ftnint ciunit;
89         flag ciend;
90         char *cifmt;
91         ftnint cirec;
92 } cilist;
93
94 /*internal read, write*/
95 typedef struct
96 {       flag icierr;
97         char *iciunit;
98         flag iciend;
99         char *icifmt;
100         ftnint icirlen;
101         ftnint icirnum;
102 } icilist;
103
104 /*open*/
105 typedef struct
106 {       flag oerr;
107         ftnint ounit;
108         char *ofnm;
109         ftnlen ofnmlen;
110         char *osta;
111         char *oacc;
112         char *ofm;
113         ftnint orl;
114         char *oblnk;
115 } olist;
116
117 /*close*/
118 typedef struct
119 {       flag cerr;
120         ftnint cunit;
121         char *csta;
122 } cllist;
123
124 /*rewind, backspace, endfile*/
125 typedef struct
126 {       flag aerr;
127         ftnint aunit;
128 } alist;
129
130 /* inquire */
131 typedef struct
132 {       flag inerr;
133         ftnint inunit;
134         char *infile;
135         ftnlen infilen;
136         ftnint  *inex;  /*parameters in standard's order*/
137         ftnint  *inopen;
138         ftnint  *innum;
139         ftnint  *innamed;
140         char    *inname;
141         ftnlen  innamlen;
142         char    *inacc;
143         ftnlen  inacclen;
144         char    *inseq;
145         ftnlen  inseqlen;
146         char    *indir;
147         ftnlen  indirlen;
148         char    *infmt;
149         ftnlen  infmtlen;
150         char    *inform;
151         ftnint  informlen;
152         char    *inunf;
153         ftnlen  inunflen;
154         ftnint  *inrecl;
155         ftnint  *innrec;
156         char    *inblank;
157         ftnlen  inblanklen;
158 } inlist;
159
160 #define VOID void
161
162 union Multitype {       /* for multiple entry points */
163         integer1 g;
164         shortint h;
165         integer i;
166         /* longint j; */
167         real r;
168         doublereal d;
169         complex c;
170         doublecomplex z;
171         };
172
173 typedef union Multitype Multitype;
174
175 /*typedef long int Long;*/      /* No longer used; formerly in Namelist */
176
177 struct Vardesc {        /* for Namelist */
178         char *name;
179         char *addr;
180         ftnlen *dims;
181         int  type;
182         };
183 typedef struct Vardesc Vardesc;
184
185 struct Namelist {
186         char *name;
187         Vardesc **vars;
188         int nvars;
189         };
190 typedef struct Namelist Namelist;
191
192 #define abs(x) ((x) >= 0 ? (x) : -(x))
193 #define dabs(x) (doublereal)abs(x)
194 #define min(a,b) ((a) <= (b) ? (a) : (b))
195 #define max(a,b) ((a) >= (b) ? (a) : (b))
196 #define dmin(a,b) (doublereal)min(a,b)
197 #define dmax(a,b) (doublereal)max(a,b)
198
199 /* procedure parameter types for -A and -C++ */
200
201 #define F2C_proc_par_types 1
202 #ifdef __cplusplus
203 typedef int /* Unknown procedure type */ (*U_fp)(...);
204 typedef shortint (*J_fp)(...);
205 typedef integer (*I_fp)(...);
206 typedef real (*R_fp)(...);
207 typedef doublereal (*D_fp)(...), (*E_fp)(...);
208 typedef /* Complex */ VOID (*C_fp)(...);
209 typedef /* Double Complex */ VOID (*Z_fp)(...);
210 typedef logical (*L_fp)(...);
211 typedef shortlogical (*K_fp)(...);
212 typedef /* Character */ VOID (*H_fp)(...);
213 typedef /* Subroutine */ int (*S_fp)(...);
214 #else
215 typedef int /* Unknown procedure type */ (*U_fp)();
216 typedef shortint (*J_fp)();
217 typedef integer (*I_fp)();
218 typedef real (*R_fp)();
219 typedef doublereal (*D_fp)(), (*E_fp)();
220 typedef /* Complex */ VOID (*C_fp)();
221 typedef /* Double Complex */ VOID (*Z_fp)();
222 typedef logical (*L_fp)();
223 typedef shortlogical (*K_fp)();
224 typedef /* Character */ VOID (*H_fp)();
225 typedef /* Subroutine */ int (*S_fp)();
226 #endif
227 /* E_fp is for real functions when -R is not specified */
228 typedef VOID C_f;       /* complex function */
229 typedef VOID H_f;       /* character function */
230 typedef VOID Z_f;       /* double complex function */
231 typedef doublereal E_f; /* real function with -R not specified */
232
233 /* undef any lower-case symbols that your C compiler predefines, e.g.: */
234
235 #ifndef Skip_f2c_Undefs
236 #undef cray
237 #undef gcos
238 #undef mc68010
239 #undef mc68020
240 #undef mips
241 #undef pdp11
242 #undef sgi
243 #undef sparc
244 #undef sun
245 #undef sun2
246 #undef sun3
247 #undef sun4
248 #undef u370
249 #undef u3b
250 #undef u3b2
251 #undef u3b5
252 #undef unix
253 #undef vax
254 #endif
255 #endif