make 'bitand_', 'bitor_' and 'bitxor_' binary

[SVN r17809]
This commit is contained in:
Aleksey Gurtovoy
2003-03-11 11:58:30 +00:00
parent 545c0ece08
commit f856111c60
3 changed files with 18 additions and 42 deletions

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0xFFFFFFFF, T N4 = 0xFFFFFFFF, T N5 = 0xFFFFFFFF typename T, T N1, T N2
> >
struct bitand_c struct bitand_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 & N2 & N3 & N4 & N5)); BOOST_STATIC_CONSTANT(T, value = (N1 & N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 & N2 & N3 & N4 & N5)> type; typedef integral_c<T,(N1 & N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0xFFFFFFFF>
, typename T4 = integral_c<int,0xFFFFFFFF>
, typename T5 = integral_c<int,0xFFFFFFFF>
> >
struct bitand_ struct bitand_
: bitand_c< : bitand_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value & T2::value)
T1::value & T2::value & T3::value & T4::value & T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitand_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitand_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitand_) BOOST_MPL_AUX_VOID_SPEC(2,bitand_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0 typename T, T N1, T N2
> >
struct bitor_c struct bitor_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 | N2 | N3 | N4 | N5)); BOOST_STATIC_CONSTANT(T, value = (N1 | N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 | N2 | N3 | N4 | N5)> type; typedef integral_c<T,(N1 | N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0xFFFFFFFF>
, typename T4 = integral_c<int,0xFFFFFFFF>
, typename T5 = integral_c<int,0xFFFFFFFF>
> >
struct bitor_ struct bitor_
: bitor_c< : bitor_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value | T2::value)
T1::value | T2::value | T3::value | T4::value | T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitor_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitor_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitor_) BOOST_MPL_AUX_VOID_SPEC(2,bitor_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost

View File

@@ -29,41 +29,33 @@ namespace boost {
namespace mpl { namespace mpl {
template< template<
typename T, T N1, T N2, T N3 = 0, T N4 = 0, T N5 = 0 typename T, T N1, T N2
> >
struct bitxor_c struct bitxor_c
{ {
BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2 ^ N3 ^ N4 ^ N5)); BOOST_STATIC_CONSTANT(T, value = (N1 ^ N2));
#if !defined(__BORLANDC__) #if !defined(__BORLANDC__)
typedef integral_c<T,value> type; typedef integral_c<T,value> type;
#else #else
typedef integral_c<T,(N1 ^ N2 ^ N3 ^ N4 ^ N5)> type; typedef integral_c<T,(N1 ^ N2)> type;
#endif #endif
}; };
template< template<
typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1) typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T1)
, typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2) , typename BOOST_MPL_AUX_VOID_SPEC_PARAM(T2)
, typename T3 = integral_c<int,0>
, typename T4 = integral_c<int,0>
, typename T5 = integral_c<int,0>
> >
struct bitxor_ struct bitxor_
: bitxor_c< : bitxor_c<
BOOST_MPL_AUX_TYPEOF(T1, BOOST_MPL_AUX_TYPEOF(T1, T1::value ^ T2::value)
T1::value ^ T2::value ^ T3::value ^ T4::value ^ T5::value
)
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T1)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value , BOOST_MPL_AUX_MSVC_VALUE_WKND(T2)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T3)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T4)::value
, BOOST_MPL_AUX_MSVC_VALUE_WKND(T5)::value
> >
{ {
BOOST_MPL_AUX_LAMBDA_SUPPORT(5, bitxor_, (T1,T2,T3,T4,T5)) BOOST_MPL_AUX_LAMBDA_SUPPORT(2, bitxor_, (T1,T2))
}; };
BOOST_MPL_AUX_VOID_SPEC_EXT(2,5,bitxor_) BOOST_MPL_AUX_VOID_SPEC(2,bitxor_)
} // namespace mpl } // namespace mpl
} // namespace boost } // namespace boost