557 lines
14 KiB
C++
557 lines
14 KiB
C++
|
|
// Copyright Aleksey Gurtovoy 2000-2004
|
|
//
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
//
|
|
|
|
// Preprocessed version of "boost/mpl/map.hpp" header
|
|
// -- DO NOT modify by hand!
|
|
|
|
namespace boost { namespace mpl {
|
|
|
|
namespace aux {
|
|
template< int N >
|
|
struct map_chooser;
|
|
|
|
}
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<0>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef map0<
|
|
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<1>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map1<
|
|
T0
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<2>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map2<
|
|
T0, T1
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<3>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map3<
|
|
T0, T1, T2
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<4>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map4<
|
|
T0, T1, T2, T3
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<5>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map5<
|
|
T0, T1, T2, T3, T4
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<6>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map6<
|
|
T0, T1, T2, T3, T4, T5
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<7>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map7<
|
|
T0, T1, T2, T3, T4, T5, T6
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<8>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map8<
|
|
T0, T1, T2, T3, T4, T5, T6, T7
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<9>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map9<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<10>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map10<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<11>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map11<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<12>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map12<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<13>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map13<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<14>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map14<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<15>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map15<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<16>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map16<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<17>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map17<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<18>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map18<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<19>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map19<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct map_chooser<20>
|
|
{
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename map20<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template< typename T >
|
|
struct is_map_arg
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = true);
|
|
};
|
|
|
|
template<>
|
|
struct is_map_arg<na>
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = false);
|
|
};
|
|
|
|
template<
|
|
typename T1, typename T2, typename T3, typename T4, typename T5
|
|
, typename T6, typename T7, typename T8, typename T9, typename T10
|
|
, typename T11, typename T12, typename T13, typename T14, typename T15
|
|
, typename T16, typename T17, typename T18, typename T19, typename T20
|
|
>
|
|
struct map_count_args
|
|
{
|
|
BOOST_STATIC_CONSTANT(int, value =
|
|
is_map_arg<T1>::value + is_map_arg<T2>::value
|
|
+ is_map_arg<T3>::value + is_map_arg<T4>::value
|
|
+ is_map_arg<T5>::value + is_map_arg<T6>::value
|
|
+ is_map_arg<T7>::value + is_map_arg<T8>::value
|
|
+ is_map_arg<T9>::value + is_map_arg<T10>::value
|
|
+ is_map_arg<T11>::value + is_map_arg<T12>::value
|
|
+ is_map_arg<T13>::value + is_map_arg<T14>::value
|
|
+ is_map_arg<T15>::value + is_map_arg<T16>::value
|
|
+ is_map_arg<T17>::value + is_map_arg<T18>::value
|
|
+ is_map_arg<T19>::value + is_map_arg<T20>::value
|
|
);
|
|
|
|
};
|
|
|
|
template<
|
|
typename T0, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5, typename T6, typename T7, typename T8, typename T9
|
|
, typename T10, typename T11, typename T12, typename T13, typename T14
|
|
, typename T15, typename T16, typename T17, typename T18, typename T19
|
|
>
|
|
struct map_impl
|
|
{
|
|
typedef aux::map_count_args<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
|
|
> arg_num_;
|
|
|
|
typedef typename aux::map_chooser< arg_num_::value >
|
|
::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
template<
|
|
typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
|
|
, typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
|
|
, typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
|
|
, typename T12 = na, typename T13 = na, typename T14 = na
|
|
, typename T15 = na, typename T16 = na, typename T17 = na
|
|
, typename T18 = na, typename T19 = na
|
|
>
|
|
struct map
|
|
: aux::map_impl<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
|
|
>::type
|
|
{
|
|
typedef typename aux::map_impl<
|
|
T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
|
|
>::type type;
|
|
};
|
|
|
|
}}
|
|
|