OSDN Git Service

4b5f35351e49f69315d446a1976fbb779678663f
[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, 59 Temple Place - Suite 330, Boston, MA
18 02111-1307, 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
36      These macros describe function types.  ENUM is as above.  The
37      RETURN type is one of the enumerals already defined.  ARG1, ARG2,
38      and ARG3 give the types of the arguments, similarly.
39
40    DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
41    DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
42    DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
43    DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
44
45      Similar, but for function types that take variable arguments.
46      For example:
47
48        DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
49
50      describes the type `int ()(double)', using the enumeral
51      BT_INT_DOUBLE, whereas:
52
53        DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
54
55      describes the type `int ()(double, ...)'.
56  
57   DEF_POINTER_TYPE (ENUM, TYPE)
58
59     This macro describes a pointer type.  ENUM is as above; TYPE is
60     the type pointed to.  */
61
62 DEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
63 DEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
64 DEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
65 DEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
66 DEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
67 DEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
68 DEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
69 DEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
70 DEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
71 DEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
72 DEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
73 DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
74 DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
75 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
76 DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
77 DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
78 DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
79
80 DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
81 DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
82 DEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
83 DEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
84                     build_pointer_type
85                      (build_qualified_type (void_type_node,
86                                             TYPE_QUAL_VOLATILE)))
87 DEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
88 DEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
89 DEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
90 DEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
91 DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
92 DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
93 DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
94 DEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
95 DEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
96 DEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
97 DEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
98
99 DEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
100 DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
101
102 DEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
103 DEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
104 DEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
105 DEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
106
107 DEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
108
109 DEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
110 DEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
111 DEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
112 DEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
113 DEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
114 DEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
115 /* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
116    distinguish it from two types in sequence, "long" followed by
117    "double".  */
118 DEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
119
120 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
121 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
122 DEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
123 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
124 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
125 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE, 
126                      BT_LONGDOUBLE, BT_LONGDOUBLE)
127 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, 
128                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
129 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
130                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
131 DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
132                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
133 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT, 
134                      BT_FLOAT, BT_COMPLEX_FLOAT)
135 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
136                      BT_DOUBLE, BT_COMPLEX_DOUBLE)
137 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
138                      BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
139 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
140 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
141 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
142 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
143 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
144 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
145 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
146 DEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
147 DEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
148 DEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
149 DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
150 DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
151 DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
152 DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
153 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
154 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
155 DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
156 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
157 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
158 DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
159 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
160 DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
161 DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
162 DEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
163 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
164 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
165 DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
166 DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
167 DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
168                      BT_LONGDOUBLE, BT_CONST_STRING)
169 DEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
170 DEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
171 DEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
172 DEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
173 DEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
174
175 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
176 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING, 
177                      BT_STRING, BT_STRING, BT_CONST_STRING)
178 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
179                      BT_INT, BT_CONST_STRING, BT_CONST_STRING)
180 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
181                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
182 DEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
183                      BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
184 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
185                      BT_STRING, BT_CONST_STRING, BT_INT)
186 DEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
187                      BT_STRING, BT_CONST_STRING, BT_SIZE)
188 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
189                      BT_INT, BT_CONST_STRING, BT_FILEPTR)
190 DEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
191                      BT_INT, BT_INT, BT_FILEPTR)
192 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
193                      BT_VOID, BT_PTRMODE, BT_PTR)
194 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG, 
195                      BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
196 DEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
197                      BT_LONG, BT_LONG, BT_LONG)
198 DEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
199                      BT_INT, BT_PTR, BT_CONST_STRING)
200 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
201                      BT_VOID, BT_PTR, BT_SIZE)
202 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
203                      BT_FLOAT, BT_FLOAT, BT_FLOAT)
204 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
205                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
206 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
207                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
208 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
209                      BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
210 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
211                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
212 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
213                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
214 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
215                      BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
216 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
217                      BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
218 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
219                      BT_FLOAT, BT_FLOAT, BT_INT)
220 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
221                      BT_DOUBLE, BT_DOUBLE, BT_INT)
222 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
223                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
224 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
225                      BT_FLOAT, BT_FLOAT, BT_INT_PTR)
226 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
227                      BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
228 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
229                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
230 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
231                      BT_FLOAT, BT_INT, BT_FLOAT)
232 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
233                      BT_DOUBLE, BT_INT, BT_DOUBLE)
234 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
235                      BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
236 DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
237                      BT_FLOAT, BT_FLOAT, BT_LONG)
238 DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
239                      BT_DOUBLE, BT_DOUBLE, BT_LONG)
240 DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
241                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
242 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
243                      BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
244 DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
245                      BT_PTR, BT_SIZE, BT_SIZE)
246 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, 
247                      BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
248 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, 
249                      BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
250 DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, 
251                      BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
252 DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
253 DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
254                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
255 DEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
256 DEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
257 DEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
258 DEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
259
260 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
261                      BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
262 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
263                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
264 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
265                      BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
266 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
267                      BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
268 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
269                      BT_PTR, BT_PTR, BT_INT, BT_SIZE)
270 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
271                      BT_VOID, BT_PTR, BT_INT, BT_INT)
272 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
273                      BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
274 DEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
275                      BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
276 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
277                      BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
278 DEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
279                      BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
280 DEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
281                      BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
282 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
283                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
284 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
285                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
286 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
287                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
288 DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
289                      BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
290 DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
291                      BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
292 DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
293                      BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
294 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
295                      BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
296 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
297                      BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
298 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
299                      BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
300 DEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
301 DEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
302                      BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
303 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
304                      BT_I1, BT_I1)
305 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
306                      BT_I2, BT_I2)
307 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
308                      BT_I4, BT_I4)
309 DEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
310                      BT_I8, BT_I8)
311 DEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
312 DEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
313 DEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
314 DEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
315
316 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
317                      BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
318 DEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
319                 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
320 DEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
321                 BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
322
323 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
324 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
325 DEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
326
327 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR, 
328                          BT_VOID, BT_VALIST_REF)
329 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
330                          BT_VOID, BT_CONST_PTR)
331 DEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
332                          BT_INT, BT_CONST_STRING)
333
334 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
335                          BT_INT, BT_FILEPTR, BT_CONST_STRING)
336 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
337                          BT_INT, BT_STRING, BT_CONST_STRING)
338 DEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
339                          BT_INT, BT_CONST_STRING, BT_CONST_STRING)
340
341 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
342                          BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
343 DEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
344                          BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
345
346 DEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
347 DEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
348                      BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)