PageRenderTime 65ms CodeModel.GetById 34ms app.highlight 27ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/bcc551/bind.hpp

http://hadesmem.googlecode.com/
C++ Header | 403 lines | 327 code | 46 blank | 30 comment | 0 complexity | 2391ac9a8ee93fb93a8777e9dae2e983 MD5 | raw file
  1
  2// Copyright Peter Dimov 2001
  3// Copyright Aleksey Gurtovoy 2001-2004
  4//
  5// Distributed under the Boost Software License, Version 1.0. 
  6// (See accompanying file LICENSE_1_0.txt or copy at 
  7// http://www.boost.org/LICENSE_1_0.txt)
  8//
  9
 10// Preprocessed version of "boost/mpl/bind.hpp" header
 11// -- DO NOT modify by hand!
 12
 13namespace boost { namespace mpl {
 14
 15namespace aux {
 16
 17template<
 18      typename T, typename U1, typename U2, typename U3, typename U4
 19    , typename U5
 20    >
 21struct resolve_bind_arg
 22{
 23    typedef T type;
 24};
 25
 26template<
 27      typename T
 28    , typename Arg
 29    >
 30struct replace_unnamed_arg
 31{
 32    typedef Arg next;
 33    typedef T type;
 34};
 35
 36template<
 37      typename Arg
 38    >
 39struct replace_unnamed_arg< arg< -1 >, Arg >
 40{
 41    typedef typename Arg::next next;
 42    typedef Arg type;
 43};
 44
 45template<
 46      int N, typename U1, typename U2, typename U3, typename U4, typename U5
 47    >
 48struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
 49{
 50    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
 51};
 52
 53} // namespace aux
 54
 55template<
 56      typename F
 57    >
 58struct bind0
 59{
 60    template<
 61          typename U1 = na, typename U2 = na, typename U3 = na
 62        , typename U4 = na, typename U5 = na
 63        >
 64    struct apply
 65    {
 66     private:
 67        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 68        typedef typename r0::type a0;
 69        typedef typename r0::next n1;
 70        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 71        ///
 72     public:
 73        typedef typename apply_wrap0<
 74              f_
 75            >::type type;
 76
 77    };
 78};
 79
 80namespace aux {
 81
 82template<
 83      typename F, typename U1, typename U2, typename U3, typename U4
 84    , typename U5
 85    >
 86struct resolve_bind_arg<
 87      bind0<F>, U1, U2, U3, U4, U5
 88    >
 89{
 90    typedef bind0<F> f_;
 91    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
 92};
 93
 94} // namespace aux
 95
 96BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
 97BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 98
 99template<
100      typename F, typename T1
101    >
102struct bind1
103{
104    template<
105          typename U1 = na, typename U2 = na, typename U3 = na
106        , typename U4 = na, typename U5 = na
107        >
108    struct apply
109    {
110     private:
111        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
112        typedef typename r0::type a0;
113        typedef typename r0::next n1;
114        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
115        ///
116        typedef aux::replace_unnamed_arg< T1,n1 > r1;
117        typedef typename r1::type a1;
118        typedef typename r1::next n2;
119        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
120        ///
121     public:
122        typedef typename apply_wrap1<
123              f_
124            , typename t1::type
125            >::type type;
126
127    };
128};
129
130namespace aux {
131
132template<
133      typename F, typename T1, typename U1, typename U2, typename U3
134    , typename U4, typename U5
135    >
136struct resolve_bind_arg<
137      bind1< F,T1 >, U1, U2, U3, U4, U5
138    >
139{
140    typedef bind1< F,T1 > f_;
141    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
142};
143
144} // namespace aux
145
146BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
147BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
148
149template<
150      typename F, typename T1, typename T2
151    >
152struct bind2
153{
154    template<
155          typename U1 = na, typename U2 = na, typename U3 = na
156        , typename U4 = na, typename U5 = na
157        >
158    struct apply
159    {
160     private:
161        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
162        typedef typename r0::type a0;
163        typedef typename r0::next n1;
164        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
165        ///
166        typedef aux::replace_unnamed_arg< T1,n1 > r1;
167        typedef typename r1::type a1;
168        typedef typename r1::next n2;
169        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
170        ///
171        typedef aux::replace_unnamed_arg< T2,n2 > r2;
172        typedef typename r2::type a2;
173        typedef typename r2::next n3;
174        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
175        ///
176     public:
177        typedef typename apply_wrap2<
178              f_
179            , typename t1::type, typename t2::type
180            >::type type;
181
182    };
183};
184
185namespace aux {
186
187template<
188      typename F, typename T1, typename T2, typename U1, typename U2
189    , typename U3, typename U4, typename U5
190    >
191struct resolve_bind_arg<
192      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
193    >
194{
195    typedef bind2< F,T1,T2 > f_;
196    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
197};
198
199} // namespace aux
200
201BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
202BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
203
204template<
205      typename F, typename T1, typename T2, typename T3
206    >
207struct bind3
208{
209    template<
210          typename U1 = na, typename U2 = na, typename U3 = na
211        , typename U4 = na, typename U5 = na
212        >
213    struct apply
214    {
215     private:
216        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
217        typedef typename r0::type a0;
218        typedef typename r0::next n1;
219        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
220        ///
221        typedef aux::replace_unnamed_arg< T1,n1 > r1;
222        typedef typename r1::type a1;
223        typedef typename r1::next n2;
224        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
225        ///
226        typedef aux::replace_unnamed_arg< T2,n2 > r2;
227        typedef typename r2::type a2;
228        typedef typename r2::next n3;
229        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
230        ///
231        typedef aux::replace_unnamed_arg< T3,n3 > r3;
232        typedef typename r3::type a3;
233        typedef typename r3::next n4;
234        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
235        ///
236     public:
237        typedef typename apply_wrap3<
238              f_
239            , typename t1::type, typename t2::type, typename t3::type
240            >::type type;
241
242    };
243};
244
245namespace aux {
246
247template<
248      typename F, typename T1, typename T2, typename T3, typename U1
249    , typename U2, typename U3, typename U4, typename U5
250    >
251struct resolve_bind_arg<
252      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
253    >
254{
255    typedef bind3< F,T1,T2,T3 > f_;
256    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
257};
258
259} // namespace aux
260
261BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
262BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
263
264template<
265      typename F, typename T1, typename T2, typename T3, typename T4
266    >
267struct bind4
268{
269    template<
270          typename U1 = na, typename U2 = na, typename U3 = na
271        , typename U4 = na, typename U5 = na
272        >
273    struct apply
274    {
275     private:
276        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
277        typedef typename r0::type a0;
278        typedef typename r0::next n1;
279        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
280        ///
281        typedef aux::replace_unnamed_arg< T1,n1 > r1;
282        typedef typename r1::type a1;
283        typedef typename r1::next n2;
284        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
285        ///
286        typedef aux::replace_unnamed_arg< T2,n2 > r2;
287        typedef typename r2::type a2;
288        typedef typename r2::next n3;
289        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
290        ///
291        typedef aux::replace_unnamed_arg< T3,n3 > r3;
292        typedef typename r3::type a3;
293        typedef typename r3::next n4;
294        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
295        ///
296        typedef aux::replace_unnamed_arg< T4,n4 > r4;
297        typedef typename r4::type a4;
298        typedef typename r4::next n5;
299        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
300        ///
301     public:
302        typedef typename apply_wrap4<
303              f_
304            , typename t1::type, typename t2::type, typename t3::type
305            , typename t4::type
306            >::type type;
307
308    };
309};
310
311namespace aux {
312
313template<
314      typename F, typename T1, typename T2, typename T3, typename T4
315    , typename U1, typename U2, typename U3, typename U4, typename U5
316    >
317struct resolve_bind_arg<
318      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
319    >
320{
321    typedef bind4< F,T1,T2,T3,T4 > f_;
322    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
323};
324
325} // namespace aux
326
327BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
328BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
329
330template<
331      typename F, typename T1, typename T2, typename T3, typename T4
332    , typename T5
333    >
334struct bind5
335{
336    template<
337          typename U1 = na, typename U2 = na, typename U3 = na
338        , typename U4 = na, typename U5 = na
339        >
340    struct apply
341    {
342     private:
343        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
344        typedef typename r0::type a0;
345        typedef typename r0::next n1;
346        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
347        ///
348        typedef aux::replace_unnamed_arg< T1,n1 > r1;
349        typedef typename r1::type a1;
350        typedef typename r1::next n2;
351        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
352        ///
353        typedef aux::replace_unnamed_arg< T2,n2 > r2;
354        typedef typename r2::type a2;
355        typedef typename r2::next n3;
356        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
357        ///
358        typedef aux::replace_unnamed_arg< T3,n3 > r3;
359        typedef typename r3::type a3;
360        typedef typename r3::next n4;
361        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
362        ///
363        typedef aux::replace_unnamed_arg< T4,n4 > r4;
364        typedef typename r4::type a4;
365        typedef typename r4::next n5;
366        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
367        ///
368        typedef aux::replace_unnamed_arg< T5,n5 > r5;
369        typedef typename r5::type a5;
370        typedef typename r5::next n6;
371        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
372        ///
373     public:
374        typedef typename apply_wrap5<
375              f_
376            , typename t1::type, typename t2::type, typename t3::type
377            , typename t4::type, typename t5::type
378            >::type type;
379
380    };
381};
382
383namespace aux {
384
385template<
386      typename F, typename T1, typename T2, typename T3, typename T4
387    , typename T5, typename U1, typename U2, typename U3, typename U4
388    , typename U5
389    >
390struct resolve_bind_arg<
391      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
392    >
393{
394    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
395    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
396};
397
398} // namespace aux
399
400BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
401BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
402}}
403