/*-----------------------------------------------------------------------------+ | |
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(std::less, 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 | |