OSDN Git Service

2006-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
[pf3gnuchains/gcc-fork.git] / gcc / builtin-types.def
1 /* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify it under
6 the terms of the GNU General Public License as published by the Free
7 Software Foundation; either version 2, or (at your option) any later
8 version.
9
10 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11 WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13 for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GCC; see the file COPYING.  If not, write to the Free
17 Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
18 02110-1301, USA.  */
19
20 /* This header provides a declarative way of describing the types that
21    are used when declaring builtin functions.
22
23    Before including this header, you must define the following macros:
24
25    DEF_PRIMITIVE_TYPE (ENUM, TYPE)
26
27      The ENUM is an identifier indicating which type is being defined.
28      TYPE is an expression for a `tree' that represents the type.
29
30    DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
31    DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
32    DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
33    DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
34    DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
35    DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
36
37      These macros describe function types.  ENUM is as above.  The
38      RETURN type is one of the enumerals already defined.  ARG1, ARG2,
39      and ARG3 give the types of the arguments, similarly.
40
41    DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
42    DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
43    DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
44    DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
45    DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
46
47      Similar, but for function types that take variable arguments.
48      For example:
49
50        DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
51
52      describes the type `int ()(double)', using the enumeral
53      BT_INT_DOUBLE, whereas:
54
55        DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
56
57      describes the type `int ()(double, ...)'.
58  
59   DEF_POINTER_TYPE (ENUM, TYPE)
60
61     This macro describes a pointer type.  ENUM is as above; TYPE is
62     the type pointed to.  */
63
64 DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
65 DEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
66 DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
67 DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
68 DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
69 DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
70 DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
71 DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
72 DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
73 DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
74 DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
75 DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
76 DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
77 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
78 DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
79 DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
80 DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
81
82 DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
83 DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
84 DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
85 DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
86                     build_pointer_type
87                      (build_qualified_type (void_type_node,
88                                             TYPE_QUAL_VOLATILE)))
89 DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
90 DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
91 DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
92 DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
93 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
94 DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
95 DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
96 DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
97 DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
98 DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
99 DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
100
101 DEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
102 DEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
103 DEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
104 DEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
105 DEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
106 DEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
107
108 DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
109 DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
110
111 DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
112 DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
113 DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
114 DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
115 DEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
116
117 DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
118
119 DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
120 DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
121 DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
122 DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
123 DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
124 DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
125 /* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
126    distinguish it from two types in sequence, "long" followed by
127    "double".  */
128 DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
129 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
130 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
131 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
132
133 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
134 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
135 DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
136 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
137 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
138 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE, 
139                      BT_LONGDOUBLE, BT_LONGDOUBLE)
140 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, 
141                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
142 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
143                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
144 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
145                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
146 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT, 
147                      BT_FLOAT, BT_COMPLEX_FLOAT)
148 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
149                      BT_DOUBLE, BT_COMPLEX_DOUBLE)
150 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
151                      BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
152 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
153 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
154 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
155 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
156 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
157 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
158 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
159 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
160 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
161 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
162 DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
163 DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
164 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
165 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
166 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
167 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
168 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
169 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
170 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
171 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
172 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
173 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
174 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
175 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
176 DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
177 DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
178 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
179 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
180 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
181 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
182 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
183 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
184                      BT_LONGDOUBLE, BT_CONST_STRING)
185 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
186 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
187 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
188                      BT_DFLOAT128, BT_CONST_STRING)
189 DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
190 DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
191 DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
192 DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
193 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
194 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
195 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
196 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
197
198 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
199 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING, 
200                      BT_STRING, BT_STRING, BT_CONST_STRING)
201 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
202                      BT_INT, BT_CONST_STRING, BT_CONST_STRING)
203 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
204                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
205 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
206                      BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
207 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
208                      BT_STRING, BT_CONST_STRING, BT_INT)
209 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
210                      BT_STRING, BT_CONST_STRING, BT_SIZE)
211 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
212                      BT_INT, BT_CONST_STRING, BT_FILEPTR)
213 DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
214                      BT_INT, BT_INT, BT_FILEPTR)
215 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
216                      BT_VOID, BT_PTRMODE, BT_PTR)
217 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG, 
218                      BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
219 DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
220                      BT_LONG, BT_LONG, BT_LONG)
221 DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
222                      BT_INT, BT_PTR, BT_CONST_STRING)
223 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
224                      BT_VOID, BT_PTR, BT_SIZE)
225 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
226                      BT_FLOAT, BT_FLOAT, BT_FLOAT)
227 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
228                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
229 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
230                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
231 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
232                      BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
233 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
234                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
235 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
236                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
237 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
238                      BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
239 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
240                      BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
241 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
242                      BT_FLOAT, BT_FLOAT, BT_INT)
243 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
244                      BT_DOUBLE, BT_DOUBLE, BT_INT)
245 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
246                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
247 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
248                      BT_FLOAT, BT_FLOAT, BT_INT_PTR)
249 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
250                      BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
251 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
252                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
253 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
254                      BT_FLOAT, BT_INT, BT_FLOAT)
255 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
256                      BT_DOUBLE, BT_INT, BT_DOUBLE)
257 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
258                      BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
259 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
260                      BT_FLOAT, BT_FLOAT, BT_LONG)
261 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
262                      BT_DOUBLE, BT_DOUBLE, BT_LONG)
263 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
264                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
265 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
266                      BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
267 DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
268                      BT_PTR, BT_SIZE, BT_SIZE)
269 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, 
270                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
271 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
272                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
273 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
274                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
275 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
276 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
277                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
278 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
279 DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
280 DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
281 DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
282 DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
283 DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
284
285 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
286                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
287 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
288                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
289 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
290                      BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
291 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
292                      BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
293 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
294                      BT_PTR, BT_PTR, BT_INT, BT_SIZE)
295 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
296                      BT_VOID, BT_PTR, BT_INT, BT_INT)
297 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
298                      BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
299 DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
300                      BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
301 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
302                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
303 DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
304                      BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
305 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
306                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
307 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
308                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
309 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
310                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
311 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
312                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
313 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
314                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
315 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
316                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
317 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
318                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
319 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
320                      BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
321 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
322                      BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
323 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
324                      BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
325 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
326 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
327                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
328 DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
329                      BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
330 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
331                      BT_I1, BT_I1)
332 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
333                      BT_I2, BT_I2)
334 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
335                      BT_I4, BT_I4)
336 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
337                      BT_I8, BT_I8)
338 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
339                      BT_I16, BT_I16)
340 DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
341 DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
342 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
343 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
344 DEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
345                      BT_I16, BT_I16)
346
347 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
348                      BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
349 DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
350                 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
351 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
352                 BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
353 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
354                      BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
355 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
356                      BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
357 DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
358                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
359 DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
360                      BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
361
362 DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
363                      BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
364                      BT_VALIST_ARG)
365
366 DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
367                      BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
368                      BT_CONST_STRING, BT_VALIST_ARG)
369
370 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
371 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
372 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
373
374 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR, 
375                          BT_VOID, BT_VALIST_REF)
376 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
377                          BT_VOID, BT_CONST_PTR)
378 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
379                          BT_INT, BT_CONST_STRING)
380
381 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
382                          BT_INT, BT_FILEPTR, BT_CONST_STRING)
383 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
384                          BT_INT, BT_STRING, BT_CONST_STRING)
385 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
386                          BT_INT, BT_CONST_STRING, BT_CONST_STRING)
387 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
388                          BT_INT, BT_INT, BT_CONST_STRING)
389
390 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
391                          BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
392 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
393                          BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
394 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
395                          BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
396
397 DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
398                          BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
399
400 DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
401                          BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
402                          BT_CONST_STRING)
403
404 DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
405 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
406                      BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)