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