1 /* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
3 This file is part of GCC.
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
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
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
20 /* This header provides a declarative way of describing the types that
21 are used when declaring builtin functions.
23 Before including this header, you must define the following macros:
25 DEF_PRIMITIVE_TYPE (ENUM, TYPE)
27 The ENUM is an identifier indicating which type is being defined.
28 TYPE is an expression for a `tree' that represents the type.
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)
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.
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)
47 Similar, but for function types that take variable arguments.
50 DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
52 describes the type `int ()(double)', using the enumeral
53 BT_INT_DOUBLE, whereas:
55 DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
57 describes the type `int ()(double, ...)'.
59 DEF_POINTER_TYPE (ENUM, TYPE)
61 This macro describes a pointer type. ENUM is as above; TYPE is
62 the type pointed to. */
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)
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,
87 (build_qualified_type (void_type_node,
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)
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)
108 DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
109 DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
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))
116 DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
118 DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
119 DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
120 DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
121 DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
122 DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
123 DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
124 /* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
125 distinguish it from two types in sequence, "long" followed by
127 DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
128 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
129 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
130 DEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
132 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
133 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
134 DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
135 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
136 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
137 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
138 BT_LONGDOUBLE, BT_LONGDOUBLE)
139 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
140 BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
141 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
142 BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
143 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
144 BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
145 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
146 BT_FLOAT, BT_COMPLEX_FLOAT)
147 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
148 BT_DOUBLE, BT_COMPLEX_DOUBLE)
149 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
150 BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
151 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
152 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
153 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
154 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
155 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
156 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
157 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
158 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
159 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
160 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
161 DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
162 DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
163 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
164 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
165 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
166 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
167 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
168 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
169 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
170 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
171 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
172 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
173 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
174 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
175 DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
176 DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
177 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
178 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
179 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
180 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
181 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
182 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
183 BT_LONGDOUBLE, BT_CONST_STRING)
184 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
185 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
186 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
187 BT_DFLOAT128, BT_CONST_STRING)
188 DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
189 DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
190 DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
191 DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
192 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
193 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
194 DEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
195 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
197 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
198 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
199 BT_STRING, BT_STRING, BT_CONST_STRING)
200 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
201 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
202 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
203 BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
204 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
205 BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
206 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
207 BT_STRING, BT_CONST_STRING, BT_INT)
208 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
209 BT_STRING, BT_CONST_STRING, BT_SIZE)
210 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
211 BT_INT, BT_CONST_STRING, BT_FILEPTR)
212 DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
213 BT_INT, BT_INT, BT_FILEPTR)
214 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
215 BT_VOID, BT_PTRMODE, BT_PTR)
216 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
217 BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
218 DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
219 BT_LONG, BT_LONG, BT_LONG)
220 DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
221 BT_INT, BT_PTR, BT_CONST_STRING)
222 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
223 BT_VOID, BT_PTR, BT_SIZE)
224 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
225 BT_FLOAT, BT_FLOAT, BT_FLOAT)
226 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
227 BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
228 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
229 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
230 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
231 BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
232 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
233 BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
234 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
235 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
236 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
237 BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
238 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
239 BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
240 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
241 BT_FLOAT, BT_FLOAT, BT_INT)
242 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
243 BT_DOUBLE, BT_DOUBLE, BT_INT)
244 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
245 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
246 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
247 BT_FLOAT, BT_FLOAT, BT_INT_PTR)
248 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
249 BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
250 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
251 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
252 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
253 BT_FLOAT, BT_INT, BT_FLOAT)
254 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
255 BT_DOUBLE, BT_INT, BT_DOUBLE)
256 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
257 BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
258 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
259 BT_FLOAT, BT_FLOAT, BT_LONG)
260 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
261 BT_DOUBLE, BT_DOUBLE, BT_LONG)
262 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
263 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
264 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
265 BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
266 DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
267 BT_PTR, BT_SIZE, BT_SIZE)
268 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
269 BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
270 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
271 BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
272 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
273 BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
274 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
275 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
276 BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
277 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
278 DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
279 DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
280 DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
281 DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
283 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
284 BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
285 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
286 BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
287 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
288 BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
289 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
290 BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
291 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
292 BT_PTR, BT_PTR, BT_INT, BT_SIZE)
293 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
294 BT_VOID, BT_PTR, BT_INT, BT_INT)
295 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
296 BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
297 DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
298 BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
299 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
300 BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
301 DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
302 BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
303 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
304 BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
305 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
306 BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
307 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
308 BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
309 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
310 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
311 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
312 BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
313 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
314 BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
315 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
316 BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
317 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
318 BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
319 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
320 BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
321 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
322 BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
323 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
324 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
325 BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
326 DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
327 BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
328 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
330 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
332 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
334 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
336 DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
337 DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
338 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
339 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
341 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
342 BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
343 DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
344 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
345 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
346 BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
347 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
348 BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
349 DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
350 BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
351 DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
352 BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
353 DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
354 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
356 DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
357 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
360 DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
361 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
362 BT_CONST_STRING, BT_VALIST_ARG)
364 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
365 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
366 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
368 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
369 BT_VOID, BT_VALIST_REF)
370 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
371 BT_VOID, BT_CONST_PTR)
372 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
373 BT_INT, BT_CONST_STRING)
375 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
376 BT_INT, BT_FILEPTR, BT_CONST_STRING)
377 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
378 BT_INT, BT_STRING, BT_CONST_STRING)
379 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
380 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
381 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
382 BT_INT, BT_INT, BT_CONST_STRING)
384 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
385 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
386 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
387 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
388 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
389 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
391 DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
392 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
394 DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
395 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
398 DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
399 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
400 BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)