535 lines
13 KiB
C++
535 lines
13 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/set_c.hpp" header
|
|
// -- DO NOT modify by hand!
|
|
|
|
namespace boost { namespace mpl {
|
|
|
|
namespace aux {
|
|
template< int N >
|
|
struct set_c_chooser;
|
|
|
|
}
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<0>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set0_c<
|
|
T
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<1>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set1_c<
|
|
T, C0
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<2>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set2_c<
|
|
T, C0, C1
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<3>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set3_c<
|
|
T, C0, C1, C2
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<4>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set4_c<
|
|
T, C0, C1, C2, C3
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<5>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set5_c<
|
|
T, C0, C1, C2, C3, C4
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<6>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set6_c<
|
|
T, C0, C1, C2, C3, C4, C5
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<7>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set7_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<8>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set8_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<9>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set9_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<10>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set10_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<11>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set11_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<12>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set12_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<13>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set13_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<14>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set14_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<15>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set15_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<16>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set16_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<17>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set17_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<18>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set18_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<19>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set19_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template<>
|
|
struct set_c_chooser<20>
|
|
{
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct result_
|
|
{
|
|
typedef typename set20_c<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
|
|
>::type type;
|
|
|
|
};
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
namespace aux {
|
|
|
|
template< long C >
|
|
struct is_set_c_arg
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = true);
|
|
};
|
|
|
|
template<>
|
|
struct is_set_c_arg<LONG_MAX>
|
|
{
|
|
BOOST_STATIC_CONSTANT(bool, value = false);
|
|
};
|
|
|
|
template<
|
|
long C1, long C2, long C3, long C4, long C5, long C6, long C7, long C8
|
|
, long C9, long C10, long C11, long C12, long C13, long C14, long C15
|
|
, long C16, long C17, long C18, long C19, long C20
|
|
>
|
|
struct set_c_count_args
|
|
{
|
|
BOOST_STATIC_CONSTANT(int, value =
|
|
is_set_c_arg<C1>::value + is_set_c_arg<C2>::value
|
|
+ is_set_c_arg<C3>::value + is_set_c_arg<C4>::value
|
|
+ is_set_c_arg<C5>::value + is_set_c_arg<C6>::value
|
|
+ is_set_c_arg<C7>::value + is_set_c_arg<C8>::value
|
|
+ is_set_c_arg<C9>::value + is_set_c_arg<C10>::value
|
|
+ is_set_c_arg<C11>::value + is_set_c_arg<C12>::value
|
|
+ is_set_c_arg<C13>::value + is_set_c_arg<C14>::value
|
|
+ is_set_c_arg<C15>::value + is_set_c_arg<C16>::value
|
|
+ is_set_c_arg<C17>::value + is_set_c_arg<C18>::value
|
|
+ is_set_c_arg<C19>::value + is_set_c_arg<C20>::value
|
|
);
|
|
|
|
};
|
|
|
|
template<
|
|
typename T, long C0, long C1, long C2, long C3, long C4, long C5
|
|
, long C6, long C7, long C8, long C9, long C10, long C11, long C12
|
|
, long C13, long C14, long C15, long C16, long C17, long C18, long C19
|
|
>
|
|
struct set_c_impl
|
|
{
|
|
typedef aux::set_c_count_args<
|
|
C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
|
|
> arg_num_;
|
|
|
|
typedef typename aux::set_c_chooser< arg_num_::value >
|
|
::template result_< T,C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14,C15,C16,C17,C18,C19 >::type type;
|
|
};
|
|
|
|
} // namespace aux
|
|
|
|
template<
|
|
typename T, long C0 = LONG_MAX, long C1 = LONG_MAX, long C2 = LONG_MAX
|
|
, long C3 = LONG_MAX, long C4 = LONG_MAX, long C5 = LONG_MAX
|
|
, long C6 = LONG_MAX, long C7 = LONG_MAX, long C8 = LONG_MAX
|
|
, long C9 = LONG_MAX, long C10 = LONG_MAX, long C11 = LONG_MAX
|
|
, long C12 = LONG_MAX, long C13 = LONG_MAX, long C14 = LONG_MAX
|
|
, long C15 = LONG_MAX, long C16 = LONG_MAX, long C17 = LONG_MAX
|
|
, long C18 = LONG_MAX, long C19 = LONG_MAX
|
|
>
|
|
struct set_c
|
|
: aux::set_c_impl<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
|
|
>::type
|
|
{
|
|
typedef typename aux::set_c_impl<
|
|
T, C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19
|
|
>::type type;
|
|
};
|
|
|
|
}}
|
|
|