1/* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
2
3This file is part of GCC.
4
5GCC is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free
7Software Foundation; either version 2, or (at your option) any later
8version.
9
10GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11WARRANTY; without even the implied warranty of MERCHANTABILITY or
12FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
13for more details.
14
15You should have received a copy of the GNU General Public License
16along with GCC; see the file COPYING.  If not, write to the Free
17Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
1802110-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
64DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
65DEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
66DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
67DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
68DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
69DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
70DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
71DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
72DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
73DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
74DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
75DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
76DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
77DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
78DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
79DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
80DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
81
82DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
83DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
84DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
85DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
86		    build_pointer_type
87		     (build_qualified_type (void_type_node,
88					    TYPE_QUAL_VOLATILE)))
89DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
90DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
91DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
92DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
93DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
94DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
95DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
96DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
97DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
98DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
99DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
100
101DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
102DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
103
104DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
105DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
106DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
107DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
108
109DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
110
111DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
112DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
113DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
114DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
115DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
116DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
117/* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
118   distinguish it from two types in sequence, "long" followed by
119   "double".  */
120DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
121
122DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
123DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
124DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
125DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
126DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
127DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE, 
128	             BT_LONGDOUBLE, BT_LONGDOUBLE)
129DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, 
130		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
131DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
132		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
133DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
134	             BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
135DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT, 
136                     BT_FLOAT, BT_COMPLEX_FLOAT)
137DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
138                     BT_DOUBLE, BT_COMPLEX_DOUBLE)
139DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
140                     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
141DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
142DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
143DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
144DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
145DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
146DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
147DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
148DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
149DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
150DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
151DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
152DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
153DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
154DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
155DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
156DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
157DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
158DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
159DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
160DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
161DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
162DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
163DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
164DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
165DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
166DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
167DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
168DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
169DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
170		     BT_LONGDOUBLE, BT_CONST_STRING)
171DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
172DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
173DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
174DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
175DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
176
177DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
178DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING, 
179                     BT_STRING, BT_STRING, BT_CONST_STRING)
180DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
181	             BT_INT, BT_CONST_STRING, BT_CONST_STRING)
182DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
183		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
184DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
185	             BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
186DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
187	             BT_STRING, BT_CONST_STRING, BT_INT)
188DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
189	             BT_STRING, BT_CONST_STRING, BT_SIZE)
190DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
191		     BT_INT, BT_CONST_STRING, BT_FILEPTR)
192DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
193		     BT_INT, BT_INT, BT_FILEPTR)
194DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
195		     BT_VOID, BT_PTRMODE, BT_PTR)
196DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG, 
197		     BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
198DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
199		     BT_LONG, BT_LONG, BT_LONG)
200DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
201		     BT_INT, BT_PTR, BT_CONST_STRING)
202DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
203		     BT_VOID, BT_PTR, BT_SIZE)
204DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
205		     BT_FLOAT, BT_FLOAT, BT_FLOAT)
206DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
207		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
208DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
209		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
210DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
211		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
212DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
213		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
214DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
215		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
216DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
217		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
218DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
219		     BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
220DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
221		     BT_FLOAT, BT_FLOAT, BT_INT)
222DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
223		     BT_DOUBLE, BT_DOUBLE, BT_INT)
224DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
225		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
226DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
227		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
228DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
229		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
230DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
231		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
232DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
233		     BT_FLOAT, BT_INT, BT_FLOAT)
234DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
235		     BT_DOUBLE, BT_INT, BT_DOUBLE)
236DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
237		     BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
238DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
239		     BT_FLOAT, BT_FLOAT, BT_LONG)
240DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
241		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
242DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
243		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
244DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
245		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
246DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
247		     BT_PTR, BT_SIZE, BT_SIZE)
248DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, 
249		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
250DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
251		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
252DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
253	             BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
254DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
255DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
256		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
257DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
258DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
259DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
260DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
261DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
262
263DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
264		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
265DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
266		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
267DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
268		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
269DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
270	             BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
271DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
272	             BT_PTR, BT_PTR, BT_INT, BT_SIZE)
273DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
274		     BT_VOID, BT_PTR, BT_INT, BT_INT)
275DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
276		     BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
277DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
278		     BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
279DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
280		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
281DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
282		     BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
283DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
284		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
285DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
286		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
287DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
288		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
289DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
290		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
291DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
292		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
293DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
294		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
295DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
296		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
297DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
298		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
299DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
300		     BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
301DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
302		     BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
303DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
304DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
305		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
306DEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
307		     BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
308DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
309		     BT_I1, BT_I1)
310DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
311		     BT_I2, BT_I2)
312DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
313		     BT_I4, BT_I4)
314DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
315		     BT_I8, BT_I8)
316DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
317DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
318DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
319DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
320
321DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
322		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
323DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
324		BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
325DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
326		BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
327DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
328		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
329DEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
330		     BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
331DEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
332		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
333DEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
334		     BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
335
336DEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
337		     BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
338		     BT_VALIST_ARG)
339
340DEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
341		     BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
342		     BT_CONST_STRING, BT_VALIST_ARG)
343
344DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
345DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
346DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
347
348DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR, 
349			 BT_VOID, BT_VALIST_REF)
350DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
351			 BT_VOID, BT_CONST_PTR)
352DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
353	                 BT_INT, BT_CONST_STRING)
354
355DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
356	                 BT_INT, BT_FILEPTR, BT_CONST_STRING)
357DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
358			 BT_INT, BT_STRING, BT_CONST_STRING)
359DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
360			 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
361DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
362			 BT_INT, BT_INT, BT_CONST_STRING)
363
364DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
365			 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
366DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
367			 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
368DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
369			 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
370
371DEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
372			 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
373
374DEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
375			 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
376			 BT_CONST_STRING)
377
378DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
379DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
380		     BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)
381