OSDN Git Service

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