1169689Skan/* Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
2169689Skan   Free Software Foundation, Inc.
390075Sobrien
490075SobrienThis file is part of GCC.
590075Sobrien
690075SobrienGCC is free software; you can redistribute it and/or modify it under
790075Sobrienthe terms of the GNU General Public License as published by the Free
890075SobrienSoftware Foundation; either version 2, or (at your option) any later
990075Sobrienversion.
1090075Sobrien
1190075SobrienGCC is distributed in the hope that it will be useful, but WITHOUT ANY
1290075SobrienWARRANTY; without even the implied warranty of MERCHANTABILITY or
1390075SobrienFITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1490075Sobrienfor more details.
1590075Sobrien
1690075SobrienYou should have received a copy of the GNU General Public License
1790075Sobrienalong with GCC; see the file COPYING.  If not, write to the Free
18169689SkanSoftware Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
19169689Skan02110-1301, USA.  */
2090075Sobrien
21169689Skan/* This header provides a declarative way of describing the types that
2290075Sobrien   are used when declaring builtin functions.
2390075Sobrien
2490075Sobrien   Before including this header, you must define the following macros:
2590075Sobrien
2690075Sobrien   DEF_PRIMITIVE_TYPE (ENUM, TYPE)
2790075Sobrien
2890075Sobrien     The ENUM is an identifier indicating which type is being defined.
2990075Sobrien     TYPE is an expression for a `tree' that represents the type.
3090075Sobrien
3190075Sobrien   DEF_FUNCTION_TYPE_0 (ENUM, RETURN)
3290075Sobrien   DEF_FUNCTION_TYPE_1 (ENUM, RETURN, ARG1)
3390075Sobrien   DEF_FUNCTION_TYPE_2 (ENUM, RETURN, ARG1, ARG2)
3490075Sobrien   DEF_FUNCTION_TYPE_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
3590075Sobrien   DEF_FUNCTION_TYPE_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
36169689Skan   DEF_FUNCTION_TYPE_5 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
37169689Skan   DEF_FUNCTION_TYPE_6 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6)
38169689Skan   DEF_FUNCTION_TYPE_7 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6, ARG7)
3990075Sobrien
4090075Sobrien     These macros describe function types.  ENUM is as above.  The
4190075Sobrien     RETURN type is one of the enumerals already defined.  ARG1, ARG2,
4290075Sobrien     and ARG3 give the types of the arguments, similarly.
4390075Sobrien
4490075Sobrien   DEF_FUNCTION_TYPE_VAR_0 (ENUM, RETURN)
4590075Sobrien   DEF_FUNCTION_TYPE_VAR_1 (ENUM, RETURN, ARG1)
4690075Sobrien   DEF_FUNCTION_TYPE_VAR_2 (ENUM, RETURN, ARG1, ARG2)
47117395Skan   DEF_FUNCTION_TYPE_VAR_3 (ENUM, RETURN, ARG1, ARG2, ARG3)
48169689Skan   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4)
49169689Skan   DEF_FUNCTION_TYPE_VAR_4 (ENUM, RETURN, ARG1, ARG2, ARG3, ARG4, ARG5)
5090075Sobrien
5190075Sobrien     Similar, but for function types that take variable arguments.
5290075Sobrien     For example:
5390075Sobrien
5490075Sobrien       DEF_FUNCTION_TYPE_1 (BT_INT_DOUBLE, BT_INT, BT_DOUBLE)
5590075Sobrien
5690075Sobrien     describes the type `int ()(double)', using the enumeral
5790075Sobrien     BT_INT_DOUBLE, whereas:
5890075Sobrien
5990075Sobrien       DEF_FUNCTION_TYPE_VAR_1 (BT_INT_DOUBLE_VAR, BT_INT, BT_DOUBLE)
6090075Sobrien
6190075Sobrien     describes the type `int ()(double, ...)'.
62169689Skan
6390075Sobrien  DEF_POINTER_TYPE (ENUM, TYPE)
6490075Sobrien
6590075Sobrien    This macro describes a pointer type.  ENUM is as above; TYPE is
6690075Sobrien    the type pointed to.  */
6790075Sobrien
6890075SobrienDEF_PRIMITIVE_TYPE (BT_VOID, void_type_node)
69169689SkanDEF_PRIMITIVE_TYPE (BT_BOOL, boolean_type_node)
7090075SobrienDEF_PRIMITIVE_TYPE (BT_INT, integer_type_node)
71169689SkanDEF_PRIMITIVE_TYPE (BT_UINT, unsigned_type_node)
7290075SobrienDEF_PRIMITIVE_TYPE (BT_LONG, long_integer_type_node)
73169689SkanDEF_PRIMITIVE_TYPE (BT_ULONG, long_unsigned_type_node)
7490075SobrienDEF_PRIMITIVE_TYPE (BT_LONGLONG, long_long_integer_type_node)
75169689SkanDEF_PRIMITIVE_TYPE (BT_ULONGLONG, long_long_unsigned_type_node)
76169689SkanDEF_PRIMITIVE_TYPE (BT_INTMAX, intmax_type_node)
77169689SkanDEF_PRIMITIVE_TYPE (BT_UINTMAX, uintmax_type_node)
78259563SpfgDEF_PRIMITIVE_TYPE (BT_UINT32, uint32_type_node)
79259563SpfgDEF_PRIMITIVE_TYPE (BT_UINT64, uint64_type_node)
80132718SkanDEF_PRIMITIVE_TYPE (BT_WORD, (*lang_hooks.types.type_for_mode) (word_mode, 0))
8190075SobrienDEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
8290075SobrienDEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
83132718SkanDEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
8490075SobrienDEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
8590075SobrienDEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
86132718SkanDEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
8790075Sobrien
8890075SobrienDEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
89169689SkanDEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
9090075SobrienDEF_PRIMITIVE_TYPE (BT_CONST_PTR, const_ptr_type_node)
91169689SkanDEF_PRIMITIVE_TYPE (BT_VOLATILE_PTR,
92169689Skan		    build_pointer_type
93169689Skan		     (build_qualified_type (void_type_node,
94169689Skan					    TYPE_QUAL_VOLATILE)))
95117395SkanDEF_PRIMITIVE_TYPE (BT_PTRMODE, (*lang_hooks.types.type_for_mode)(ptr_mode, 0))
96132718SkanDEF_PRIMITIVE_TYPE (BT_INT_PTR, integer_ptr_type_node)
97132718SkanDEF_PRIMITIVE_TYPE (BT_FLOAT_PTR, float_ptr_type_node)
98132718SkanDEF_PRIMITIVE_TYPE (BT_DOUBLE_PTR, double_ptr_type_node)
99132718SkanDEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
100169689SkanDEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
101110611SkanDEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
102132718SkanDEF_PRIMITIVE_TYPE (BT_SSIZE, signed_size_type_node)
103169689SkanDEF_PRIMITIVE_TYPE (BT_WINT, wint_type_node)
10490075SobrienDEF_PRIMITIVE_TYPE (BT_STRING, string_type_node)
10590075SobrienDEF_PRIMITIVE_TYPE (BT_CONST_STRING, const_string_type_node)
10690075Sobrien
107169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT32, dfloat32_type_node)
108169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT64, dfloat64_type_node)
109169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT128, dfloat128_type_node)
110169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT32_PTR, dfloat32_ptr_type_node)
111169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT64_PTR, dfloat64_ptr_type_node)
112169689SkanDEF_PRIMITIVE_TYPE (BT_DFLOAT128_PTR, dfloat128_ptr_type_node)
113169689Skan
11490075SobrienDEF_PRIMITIVE_TYPE (BT_VALIST_REF, va_list_ref_type_node)
11590075SobrienDEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
11690075Sobrien
117169689SkanDEF_PRIMITIVE_TYPE (BT_I1, builtin_type_for_size (BITS_PER_UNIT*1, 1))
118169689SkanDEF_PRIMITIVE_TYPE (BT_I2, builtin_type_for_size (BITS_PER_UNIT*2, 1))
119169689SkanDEF_PRIMITIVE_TYPE (BT_I4, builtin_type_for_size (BITS_PER_UNIT*4, 1))
120169689SkanDEF_PRIMITIVE_TYPE (BT_I8, builtin_type_for_size (BITS_PER_UNIT*8, 1))
121169689SkanDEF_PRIMITIVE_TYPE (BT_I16, builtin_type_for_size (BITS_PER_UNIT*16, 1))
122169689Skan
123169689SkanDEF_POINTER_TYPE (BT_PTR_CONST_STRING, BT_CONST_STRING)
124169689SkanDEF_POINTER_TYPE (BT_PTR_LONG, BT_LONG)
125169689SkanDEF_POINTER_TYPE (BT_PTR_PTR, BT_PTR)
126169689Skan
12790075SobrienDEF_FUNCTION_TYPE_0 (BT_FN_VOID, BT_VOID)
128169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_BOOL, BT_BOOL)
12990075SobrienDEF_FUNCTION_TYPE_0 (BT_FN_PTR, BT_PTR)
130169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_PID, BT_PID)
131169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_INT, BT_INT)
132169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_UINT, BT_UINT)
133117395SkanDEF_FUNCTION_TYPE_0 (BT_FN_FLOAT, BT_FLOAT)
134117395SkanDEF_FUNCTION_TYPE_0 (BT_FN_DOUBLE, BT_DOUBLE)
135132718Skan/* For "long double" we use LONGDOUBLE (not LONG_DOUBLE) to
136132718Skan   distinguish it from two types in sequence, "long" followed by
137132718Skan   "double".  */
138132718SkanDEF_FUNCTION_TYPE_0 (BT_FN_LONGDOUBLE, BT_LONGDOUBLE)
139169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT32, BT_DFLOAT32)
140169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT64, BT_DFLOAT64)
141169689SkanDEF_FUNCTION_TYPE_0 (BT_FN_DFLOAT128, BT_DFLOAT128)
14290075Sobrien
14390075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONG, BT_LONG, BT_LONG)
14490075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGLONG, BT_LONGLONG, BT_LONGLONG)
14590075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_INTMAX_INTMAX, BT_INTMAX, BT_INTMAX)
14690075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_FLOAT, BT_FLOAT, BT_FLOAT)
14790075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_DOUBLE, BT_DOUBLE, BT_DOUBLE)
148169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_LONGDOUBLE,
149169689Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE)
150169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT,
15190075Sobrien		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
152169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
15390075Sobrien		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
154169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
155169689Skan		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
156169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
157169689Skan		     BT_FLOAT, BT_COMPLEX_FLOAT)
15890075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
159169689Skan		     BT_DOUBLE, BT_COMPLEX_DOUBLE)
160132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
161169689Skan		     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
162169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_PTR_UINT, BT_PTR, BT_UINT)
16390075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_PTR_SIZE, BT_PTR, BT_SIZE)
16490075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_INT_INT, BT_INT, BT_INT)
165169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_UINT, BT_INT, BT_UINT)
166132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONG, BT_INT, BT_LONG)
167169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONG, BT_INT, BT_ULONG)
168132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGLONG, BT_INT, BT_LONGLONG)
169169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_ULONGLONG, BT_INT, BT_ULONGLONG)
170169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_INTMAX, BT_INT, BT_INTMAX)
171169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_UINTMAX, BT_INT, BT_UINTMAX)
17290075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_INT, BT_PTR)
173132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
174132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
175132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
176169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
177169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
178169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
179132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
180132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
181132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
182132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
183132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
184132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
18590075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
186117395SkanDEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
18790075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
18890075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_PTR_PTR, BT_PTR, BT_PTR)
18990075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_VOID_VALIST_REF, BT_VOID, BT_VALIST_REF)
19090075SobrienDEF_FUNCTION_TYPE_1 (BT_FN_VOID_INT, BT_VOID, BT_INT)
191117395SkanDEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_STRING, BT_FLOAT, BT_CONST_STRING)
192117395SkanDEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
193132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
194132718Skan		     BT_LONGDOUBLE, BT_CONST_STRING)
195169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_CONST_STRING, BT_DFLOAT32, BT_CONST_STRING)
196169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_CONST_STRING, BT_DFLOAT64, BT_CONST_STRING)
197169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_CONST_STRING,
198169689Skan		     BT_DFLOAT128, BT_CONST_STRING)
199132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_STRING_CONST_STRING, BT_STRING, BT_CONST_STRING)
200132718SkanDEF_FUNCTION_TYPE_1 (BT_FN_WORD_PTR, BT_WORD, BT_PTR)
201169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_INT_WINT, BT_INT, BT_WINT)
202169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_WINT_WINT, BT_WINT, BT_WINT)
203169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT32_DFLOAT32, BT_DFLOAT32, BT_DFLOAT32)
204169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT64_DFLOAT64, BT_DFLOAT64, BT_DFLOAT64)
205169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_DFLOAT128_DFLOAT128, BT_DFLOAT128, BT_DFLOAT128)
206169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_VOID_VPTR, BT_VOID, BT_VOLATILE_PTR)
207169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTRPTR, BT_VOID, BT_PTR_PTR)
208169689SkanDEF_FUNCTION_TYPE_1 (BT_FN_UINT_UINT, BT_UINT, BT_UINT)
209259563SpfgDEF_FUNCTION_TYPE_1 (BT_FN_ULONG_ULONG, BT_ULONG, BT_ULONG)
210259563SpfgDEF_FUNCTION_TYPE_1 (BT_FN_ULONGLONG_ULONGLONG, BT_ULONGLONG, BT_ULONGLONG)
211259563SpfgDEF_FUNCTION_TYPE_1 (BT_FN_UINT32_UINT32, BT_UINT32, BT_UINT32)
212259563SpfgDEF_FUNCTION_TYPE_1 (BT_FN_UINT64_UINT64, BT_UINT64, BT_UINT64)
21390075Sobrien
214169689SkanDEF_POINTER_TYPE (BT_PTR_FN_VOID_PTR, BT_FN_VOID_PTR)
215169689Skan
21690075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_INT, BT_VOID, BT_PTR, BT_INT)
217169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_STRING_STRING_CONST_STRING,
218169689Skan		     BT_STRING, BT_STRING, BT_CONST_STRING)
21990075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_CONST_STRING,
220169689Skan		     BT_INT, BT_CONST_STRING, BT_CONST_STRING)
22190075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_CONST_STRING,
22290075Sobrien		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING)
22390075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_STRING_CONST_STRING,
224169689Skan		     BT_SIZE, BT_CONST_STRING, BT_CONST_STRING)
22590075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_INT,
226169689Skan		     BT_STRING, BT_CONST_STRING, BT_INT)
227169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_STRING_CONST_STRING_SIZE,
228169689Skan		     BT_STRING, BT_CONST_STRING, BT_SIZE)
229169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_FILEPTR,
230169689Skan		     BT_INT, BT_CONST_STRING, BT_FILEPTR)
231169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_INT_INT_FILEPTR,
232169689Skan		     BT_INT, BT_INT, BT_FILEPTR)
23390075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTRMODE_PTR,
23490075Sobrien		     BT_VOID, BT_PTRMODE, BT_PTR)
235169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_VOID_VALIST_REF_VALIST_ARG,
23690075Sobrien		     BT_VOID, BT_VALIST_REF, BT_VALIST_ARG)
23790075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_LONG_LONG_LONG,
23890075Sobrien		     BT_LONG, BT_LONG, BT_LONG)
23990075SobrienDEF_FUNCTION_TYPE_2 (BT_FN_INT_PTR_CONST_STRING,
24090075Sobrien		     BT_INT, BT_PTR, BT_CONST_STRING)
241117395SkanDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_SIZE,
242117395Skan		     BT_VOID, BT_PTR, BT_SIZE)
243132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOAT,
244132718Skan		     BT_FLOAT, BT_FLOAT, BT_FLOAT)
245132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLE,
246132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
247132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
248132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
249132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
250132718Skan		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
251132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
252132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
253132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
254132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
255132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
256132718Skan		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
257132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
258132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_LONGDOUBLE)
259132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INT,
260132718Skan		     BT_FLOAT, BT_FLOAT, BT_INT)
261132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INT,
262132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_INT)
263132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
264132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
265132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
266132718Skan		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
267132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
268132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
269132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
270132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
271132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
272132718Skan		     BT_FLOAT, BT_INT, BT_FLOAT)
273132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
274132718Skan		     BT_DOUBLE, BT_INT, BT_DOUBLE)
275132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_INT_LONGDOUBLE,
276132718Skan		     BT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
277132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONG,
278132718Skan		     BT_FLOAT, BT_FLOAT, BT_LONG)
279132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONG,
280132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
281132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
282132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
283117395SkanDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
284117395Skan		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
285132718SkanDEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
286132718Skan		     BT_PTR, BT_SIZE, BT_SIZE)
287169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT,
288132718Skan		     BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT, BT_COMPLEX_FLOAT)
289169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE,
290132718Skan		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
291169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
292169689Skan		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
293169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
294169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
295169689Skan		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
296169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_SIZE_CONST_PTR_INT, BT_SIZE, BT_CONST_PTR, BT_INT)
297169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_I1_VPTR_I1, BT_I1, BT_VOLATILE_PTR, BT_I1)
298169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_I2_VPTR_I2, BT_I2, BT_VOLATILE_PTR, BT_I2)
299169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_I4_VPTR_I4, BT_I4, BT_VOLATILE_PTR, BT_I4)
300169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_I8_VPTR_I8, BT_I8, BT_VOLATILE_PTR, BT_I8)
301169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16)
302169689SkanDEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR,
303169689Skan		     BT_BOOL, BT_PTR_LONG, BT_PTR_LONG)
30490075Sobrien
30590075SobrienDEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE,
30690075Sobrien		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE)
30790075SobrienDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_SIZE,
30890075Sobrien		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_SIZE)
309117395SkanDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_CONST_PTR_SIZE,
310117395Skan		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE)
31190075SobrienDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_PTR_CONST_PTR_SIZE,
312169689Skan		     BT_INT, BT_CONST_PTR, BT_CONST_PTR, BT_SIZE)
313117395SkanDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_INT_SIZE,
314169689Skan		     BT_PTR, BT_PTR, BT_INT, BT_SIZE)
315117395SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_INT_INT,
316117395Skan		     BT_VOID, BT_PTR, BT_INT, BT_INT)
317132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_CONST_PTR_PTR_SIZE,
318132718Skan		     BT_VOID, BT_CONST_PTR, BT_PTR, BT_SIZE)
319117395SkanDEF_FUNCTION_TYPE_3 (BT_FN_INT_STRING_CONST_STRING_VALIST_ARG,
320117395Skan		     BT_INT, BT_STRING, BT_CONST_STRING, BT_VALIST_ARG)
321117395SkanDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_CONST_STRING_VALIST_ARG,
322117395Skan		     BT_INT, BT_CONST_STRING, BT_CONST_STRING, BT_VALIST_ARG)
323169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_INT_FILEPTR_CONST_STRING_VALIST_ARG,
324169689Skan		     BT_INT, BT_FILEPTR, BT_CONST_STRING, BT_VALIST_ARG)
325132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_STRING_CONST_STRING_CONST_STRING_INT,
326132718Skan		     BT_STRING, BT_CONST_STRING, BT_CONST_STRING, BT_INT)
327132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_FLOAT,
328132718Skan		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_FLOAT)
329132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_DOUBLE,
330132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_DOUBLE)
331132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE,
332132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE)
333132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_FLOAT_FLOAT_FLOAT_INTPTR,
334132718Skan		     BT_FLOAT, BT_FLOAT, BT_FLOAT, BT_INT_PTR)
335132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR,
336132718Skan		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
337132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
338132718Skan		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
339132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
340132718Skan		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
341132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
342132718Skan		     BT_VOID, BT_DOUBLE, BT_DOUBLE_PTR, BT_DOUBLE_PTR)
343132718SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_LONGDOUBLE_LONGDOUBLEPTR_LONGDOUBLEPTR,
344132718Skan		     BT_VOID, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR, BT_LONGDOUBLE_PTR)
345169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_PTR_PTR_PTR, BT_VOID, BT_PTR, BT_PTR, BT_PTR)
346169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING_PTR_CONST_STRING,
347169689Skan		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING, BT_PTR_CONST_STRING)
348169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_INT_INT_CONST_STRING_VALIST_ARG,
349169689Skan		     BT_INT, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
350169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I1_I1, BT_BOOL, BT_VOLATILE_PTR,
351169689Skan		     BT_I1, BT_I1)
352169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I2_I2, BT_BOOL, BT_VOLATILE_PTR,
353169689Skan		     BT_I2, BT_I2)
354169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I4_I4, BT_BOOL, BT_VOLATILE_PTR,
355169689Skan		     BT_I4, BT_I4)
356169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I8_I8, BT_BOOL, BT_VOLATILE_PTR,
357169689Skan		     BT_I8, BT_I8)
358169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_BOOL_VPTR_I16_I16, BT_BOOL, BT_VOLATILE_PTR,
359169689Skan		     BT_I16, BT_I16)
360169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_I1_VPTR_I1_I1, BT_I1, BT_VOLATILE_PTR, BT_I1, BT_I1)
361169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_I2_VPTR_I2_I2, BT_I2, BT_VOLATILE_PTR, BT_I2, BT_I2)
362169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_I4_VPTR_I4_I4, BT_I4, BT_VOLATILE_PTR, BT_I4, BT_I4)
363169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_I8_VPTR_I8_I8, BT_I8, BT_VOLATILE_PTR, BT_I8, BT_I8)
364169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_I16_VPTR_I16_I16, BT_I16, BT_VOLATILE_PTR,
365169689Skan		     BT_I16, BT_I16)
366169689SkanDEF_FUNCTION_TYPE_3 (BT_FN_VOID_OMPFN_PTR_UINT, BT_VOID, BT_PTR_FN_VOID_PTR,
367169689Skan		     BT_PTR, BT_UINT)
36890075Sobrien
369169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_SIZE_CONST_PTR_SIZE_SIZE_FILEPTR,
370169689Skan		     BT_SIZE, BT_CONST_PTR, BT_SIZE, BT_SIZE, BT_FILEPTR)
371117395SkanDEF_FUNCTION_TYPE_4 (BT_FN_INT_STRING_SIZE_CONST_STRING_VALIST_ARG,
372117395Skan		BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_VALIST_ARG)
373132718SkanDEF_FUNCTION_TYPE_4 (BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_PTR,
374132718Skan		BT_SIZE, BT_STRING, BT_SIZE, BT_CONST_STRING, BT_CONST_PTR)
375169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_CONST_PTR_SIZE_SIZE,
376169689Skan		     BT_PTR, BT_PTR, BT_CONST_PTR, BT_SIZE, BT_SIZE)
377169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_PTR_PTR_INT_SIZE_SIZE,
378169689Skan		     BT_PTR, BT_PTR, BT_INT, BT_SIZE, BT_SIZE)
379169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_STRING_STRING_CONST_STRING_SIZE_SIZE,
380169689Skan		     BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE, BT_SIZE)
381169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VALIST_ARG,
382169689Skan		     BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
383169689SkanDEF_FUNCTION_TYPE_4 (BT_FN_VOID_OMPFN_PTR_UINT_UINT,
384169689Skan		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT, BT_UINT)
38590075Sobrien
386169689SkanDEF_FUNCTION_TYPE_5 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VALIST_ARG,
387169689Skan		     BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING,
388169689Skan		     BT_VALIST_ARG)
389169689SkanDEF_FUNCTION_TYPE_5 (BT_FN_BOOL_LONG_LONG_LONG_LONGPTR_LONGPTR,
390169689Skan		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG,
391169689Skan		     BT_PTR_LONG, BT_PTR_LONG)
392169689Skan
393169689SkanDEF_FUNCTION_TYPE_6 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VALIST_ARG,
394169689Skan		     BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
395169689Skan		     BT_CONST_STRING, BT_VALIST_ARG)
396169689SkanDEF_FUNCTION_TYPE_6 (BT_FN_BOOL_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR,
397169689Skan		     BT_BOOL, BT_LONG, BT_LONG, BT_LONG, BT_LONG,
398169689Skan		     BT_PTR_LONG, BT_PTR_LONG)
399169689SkanDEF_FUNCTION_TYPE_6 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
400169689Skan		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
401169689Skan		     BT_LONG, BT_LONG, BT_LONG)
402169689Skan
403169689SkanDEF_FUNCTION_TYPE_7 (BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG,
404169689Skan		     BT_VOID, BT_PTR_FN_VOID_PTR, BT_PTR, BT_UINT,
405169689Skan		     BT_LONG, BT_LONG, BT_LONG, BT_LONG)
406169689Skan
40790075SobrienDEF_FUNCTION_TYPE_VAR_0 (BT_FN_VOID_VAR, BT_VOID)
40890075SobrienDEF_FUNCTION_TYPE_VAR_0 (BT_FN_INT_VAR, BT_INT)
40990075SobrienDEF_FUNCTION_TYPE_VAR_0 (BT_FN_PTR_VAR, BT_PTR)
41090075Sobrien
411169689SkanDEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_VALIST_REF_VAR,
41290075Sobrien			 BT_VOID, BT_VALIST_REF)
41390075SobrienDEF_FUNCTION_TYPE_VAR_1 (BT_FN_VOID_CONST_PTR_VAR,
41490075Sobrien			 BT_VOID, BT_CONST_PTR)
41590075SobrienDEF_FUNCTION_TYPE_VAR_1 (BT_FN_INT_CONST_STRING_VAR,
416169689Skan			 BT_INT, BT_CONST_STRING)
41790075Sobrien
418169689SkanDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_FILEPTR_CONST_STRING_VAR,
419169689Skan			 BT_INT, BT_FILEPTR, BT_CONST_STRING)
420117395SkanDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_STRING_CONST_STRING_VAR,
421117395Skan			 BT_INT, BT_STRING, BT_CONST_STRING)
422117395SkanDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_CONST_STRING_CONST_STRING_VAR,
423117395Skan			 BT_INT, BT_CONST_STRING, BT_CONST_STRING)
424169689SkanDEF_FUNCTION_TYPE_VAR_2 (BT_FN_INT_INT_CONST_STRING_VAR,
425169689Skan			 BT_INT, BT_INT, BT_CONST_STRING)
42690075Sobrien
427117395SkanDEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_STRING_SIZE_CONST_STRING_VAR,
428117395Skan			 BT_INT, BT_STRING, BT_SIZE, BT_CONST_STRING)
429132718SkanDEF_FUNCTION_TYPE_VAR_3 (BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR,
430132718Skan			 BT_SSIZE, BT_STRING, BT_SIZE, BT_CONST_STRING)
431169689SkanDEF_FUNCTION_TYPE_VAR_3 (BT_FN_INT_FILEPTR_INT_CONST_STRING_VAR,
432169689Skan			 BT_INT, BT_FILEPTR, BT_INT, BT_CONST_STRING)
433117395Skan
434169689SkanDEF_FUNCTION_TYPE_VAR_4 (BT_FN_INT_STRING_INT_SIZE_CONST_STRING_VAR,
435169689Skan			 BT_INT, BT_STRING, BT_INT, BT_SIZE, BT_CONST_STRING)
436169689Skan
437169689SkanDEF_FUNCTION_TYPE_VAR_5 (BT_FN_INT_STRING_SIZE_INT_SIZE_CONST_STRING_VAR,
438169689Skan			 BT_INT, BT_STRING, BT_SIZE, BT_INT, BT_SIZE,
439169689Skan			 BT_CONST_STRING)
440169689Skan
44190075SobrienDEF_POINTER_TYPE (BT_PTR_FN_VOID_VAR, BT_FN_VOID_VAR)
44290075SobrienDEF_FUNCTION_TYPE_3 (BT_FN_PTR_PTR_FN_VOID_VAR_PTR_SIZE,
44390075Sobrien		     BT_PTR, BT_PTR_FN_VOID_VAR, BT_PTR, BT_SIZE)
444