1*f8a1b7d9SAlexander Kabaev // TR1 code repetition for bind -*- C++ -*-
2*f8a1b7d9SAlexander Kabaev 
3*f8a1b7d9SAlexander Kabaev // Copyright (C) 2005 Free Software Foundation, Inc.
4*f8a1b7d9SAlexander Kabaev // Written by Douglas Gregor <doug.gregor -at- gmail.com>
5*f8a1b7d9SAlexander Kabaev //
6*f8a1b7d9SAlexander Kabaev // This file is part of the GNU ISO C++ Library.  This library is free
7*f8a1b7d9SAlexander Kabaev // software; you can redistribute it and/or modify it under the
8*f8a1b7d9SAlexander Kabaev // terms of the GNU General Public License as published by the
9*f8a1b7d9SAlexander Kabaev // Free Software Foundation; either version 2, or (at your option)
10*f8a1b7d9SAlexander Kabaev // any later version.
11*f8a1b7d9SAlexander Kabaev 
12*f8a1b7d9SAlexander Kabaev // This library is distributed in the hope that it will be useful,
13*f8a1b7d9SAlexander Kabaev // but WITHOUT ANY WARRANTY; without even the implied warranty of
14*f8a1b7d9SAlexander Kabaev // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*f8a1b7d9SAlexander Kabaev // GNU General Public License for more details.
16*f8a1b7d9SAlexander Kabaev 
17*f8a1b7d9SAlexander Kabaev // You should have received a copy of the GNU General Public License along
18*f8a1b7d9SAlexander Kabaev // with this library; see the file COPYING.  If not, write to the Free
19*f8a1b7d9SAlexander Kabaev // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20*f8a1b7d9SAlexander Kabaev // USA.
21*f8a1b7d9SAlexander Kabaev 
22*f8a1b7d9SAlexander Kabaev // As a special exception, you may use this file as part of a free software
23*f8a1b7d9SAlexander Kabaev // library without restriction.  Specifically, if other files instantiate
24*f8a1b7d9SAlexander Kabaev // templates or use macros or inline functions from this file, or you compile
25*f8a1b7d9SAlexander Kabaev // this file and link it with other files to produce an executable, this
26*f8a1b7d9SAlexander Kabaev // file does not by itself cause the resulting executable to be covered by
27*f8a1b7d9SAlexander Kabaev // the GNU General Public License.  This exception does not however
28*f8a1b7d9SAlexander Kabaev // invalidate any other reasons why the executable file might be covered by
29*f8a1b7d9SAlexander Kabaev // the GNU General Public License.
30*f8a1b7d9SAlexander Kabaev 
31*f8a1b7d9SAlexander Kabaev /** @file tr1/bind_repeat.h
32*f8a1b7d9SAlexander Kabaev  *  This is an internal header file, included by other library headers.
33*f8a1b7d9SAlexander Kabaev  *  You should not attempt to use it directly.
34*f8a1b7d9SAlexander Kabaev  */
35*f8a1b7d9SAlexander Kabaev 
36*f8a1b7d9SAlexander Kabaev #ifndef _GLIBCXX_BIND_REPEAT_HEADER
37*f8a1b7d9SAlexander Kabaev #  error Internal error: _GLIBCXX_BIND_REPEAT_HEADER must be set
38*f8a1b7d9SAlexander Kabaev #endif /* _GLIBCXX_BIND_REPEAT_HEADER */
39*f8a1b7d9SAlexander Kabaev 
40*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 0
41*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA
42*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS
43*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS
44*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS
45*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS
46*f8a1b7d9SAlexander Kabaev #  include _GLIBCXX_BIND_REPEAT_HEADER
47*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
48*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
49*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
50*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
51*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
52*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
53*f8a1b7d9SAlexander Kabaev 
54*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 1
55*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
56*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1
57*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1
58*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1
59*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1
60*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
61*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
62*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
63*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
64*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
65*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
66*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
67*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 2
68*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
69*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2
70*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2
71*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2
72*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2
73*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
74*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
75*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
76*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
77*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
78*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
79*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
80*f8a1b7d9SAlexander Kabaev 
81*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 3
82*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
83*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3
84*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3
85*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3
86*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3
87*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
88*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
89*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
90*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
91*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
92*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
93*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
94*f8a1b7d9SAlexander Kabaev 
95*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 4
96*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
97*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4
98*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4
99*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4
100*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4
101*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
102*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
103*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
104*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
105*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
106*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
107*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
108*f8a1b7d9SAlexander Kabaev 
109*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 5
110*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
111*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5
112*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5
113*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5
114*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5
115*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
116*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
117*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
118*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
119*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
120*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
121*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
122*f8a1b7d9SAlexander Kabaev 
123*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 6
124*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
125*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6
126*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5, _U6
127*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5, _U6& __u6
128*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5, __u6
129*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
130*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
131*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
132*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
133*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
134*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
135*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
136*f8a1b7d9SAlexander Kabaev 
137*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 7
138*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
139*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7
140*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5, _U6, _U7
141*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5, _U6& __u6, _U7& __u7
142*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5, __u6, __u7
143*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
144*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
145*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
146*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
147*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
148*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
149*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
150*f8a1b7d9SAlexander Kabaev 
151*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 8
152*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
153*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8
154*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8
155*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5, _U6& __u6, _U7& __u7, _U8& __u8
156*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5, __u6, __u7, __u8
157*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
158*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
159*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
160*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
161*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
162*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
163*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
164*f8a1b7d9SAlexander Kabaev 
165*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 9
166*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
167*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8, typename _U9
168*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9
169*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5, _U6& __u6, _U7& __u7, _U8& __u8, _U9& __u9
170*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5, __u6, __u7, __u8, __u9
171*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
172*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
173*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
174*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
175*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
176*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
177*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
178*f8a1b7d9SAlexander Kabaev 
179*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_NUM_ARGS 10
180*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_COMMA ,
181*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_PARAMS typename _U1, typename _U2, typename _U3, typename _U4, typename _U5, typename _U6, typename _U7, typename _U8, typename _U9, typename _U10
182*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_TEMPLATE_ARGS _U1, _U2, _U3, _U4, _U5, _U6, _U7, _U8, _U9, _U10
183*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_PARAMS _U1& __u1, _U2& __u2, _U3& __u3, _U4& __u4, _U5& __u5, _U6& __u6, _U7& __u7, _U8& __u8, _U9& __u9, _U10& __u10
184*f8a1b7d9SAlexander Kabaev #define _GLIBCXX_BIND_ARGS __u1, __u2, __u3, __u4, __u5, __u6, __u7, __u8, __u9, __u10
185*f8a1b7d9SAlexander Kabaev #include _GLIBCXX_BIND_REPEAT_HEADER
186*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_ARGS
187*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_PARAMS
188*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_ARGS
189*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_TEMPLATE_PARAMS
190*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_COMMA
191*f8a1b7d9SAlexander Kabaev #undef _GLIBCXX_BIND_NUM_ARGS
192*f8a1b7d9SAlexander Kabaev 
193