12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- /*-----------------------------------------------------------------------------+
- Copyright (c) 2010-2010: Joachim Faulhaber
- +------------------------------------------------------------------------------+
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENCE.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
- +-----------------------------------------------------------------------------*/
- #ifndef BOOST_ICL_TYPE_TRAITS_INTERVAL_TYPE_DEFAULT_HPP_JOFA_100403
- #define BOOST_ICL_TYPE_TRAITS_INTERVAL_TYPE_DEFAULT_HPP_JOFA_100403
- #include <boost/mpl/if.hpp>
- #include <boost/icl/detail/design_config.hpp>
- #include <boost/icl/continuous_interval.hpp>
- #include <boost/icl/discrete_interval.hpp>
- #include <boost/icl/right_open_interval.hpp>
- #include <boost/icl/left_open_interval.hpp>
- #include <boost/icl/closed_interval.hpp>
- #include <boost/icl/open_interval.hpp>
- #include <boost/icl/type_traits/is_continuous.hpp>
- #include <boost/icl/type_traits/is_discrete.hpp>
- namespace boost{ namespace icl
- {
- template <class DomainT, ICL_COMPARE Compare = ICL_COMPARE_INSTANCE(ICL_COMPARE_DEFAULT, DomainT)>
- struct interval_type_default
- {
- #ifdef BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
- typedef
- typename mpl::if_< is_discrete<DomainT>
- # ifdef BOOST_ICL_DISCRETE_STATIC_INTERVAL_DEFAULT
- , BOOST_ICL_DISCRETE_STATIC_INTERVAL_DEFAULT<DomainT,Compare>
- # else
- , right_open_interval<DomainT,Compare>
- # endif
- # ifdef BOOST_ICL_CONTINUOUS_STATIC_INTERVAL_DEFAULT
- , BOOST_ICL_CONTINUOUS_STATIC_INTERVAL_DEFAULT<DomainT,Compare>
- # else
- , right_open_interval<DomainT,Compare>
- # endif
- >::type type;
- #else
- typedef
- typename mpl::if_< is_discrete<DomainT>
- , discrete_interval<DomainT,Compare>
- , continuous_interval<DomainT,Compare> >::type type;
- #endif
- };
- }} // namespace boost icl
- #endif
|