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