Mercurial > hg > vamp-build-and-test
diff DEPENDENCIES/generic/include/boost/numeric/odeint/util/detail/is_range.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DEPENDENCIES/generic/include/boost/numeric/odeint/util/detail/is_range.hpp Tue Aug 05 11:11:38 2014 +0100 @@ -0,0 +1,133 @@ +/* + [auto_generated] + boost/numeric/odeint/util/detail/is_range.hpp + + [begin_description] + is_range implementation. Taken from the boost::range library. + [end_description] + + Copyright Thorsten Ottosen 2003-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) + */ + + +#ifndef BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED +#define BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED + + +#if defined(_MSC_VER) && (_MSC_VER >= 1200) +# pragma once +#endif + +#include <cstddef> +#include <boost/range/config.hpp> +#include <boost/mpl/has_xxx.hpp> +#include <boost/mpl/bool.hpp> +#include <boost/mpl/and.hpp> + +namespace boost { +namespace numeric { +namespace odeint { + + + +namespace range_detail +{ +BOOST_MPL_HAS_XXX_TRAIT_DEF(iterator) + BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator) +} + +namespace detail +{ + +template< typename Range > +struct is_range : boost::mpl::and_<range_detail::has_iterator<Range>, range_detail::has_const_iterator<Range> > +{ +}; + +////////////////////////////////////////////////////////////////////////// +// pair +////////////////////////////////////////////////////////////////////////// + +template< typename iteratorT > +struct is_range< std::pair<iteratorT,iteratorT> > : boost::mpl::true_ +{ +}; + +template< typename iteratorT > +struct is_range< const std::pair<iteratorT,iteratorT> > : boost::mpl::true_ +{ +}; + +////////////////////////////////////////////////////////////////////////// +// array +////////////////////////////////////////////////////////////////////////// + +template< typename elementT, std::size_t sz > +struct is_range< elementT[sz] > : boost::mpl::true_ +{ +}; + +template< typename elementT, std::size_t sz > +struct is_range< const elementT[sz] > : boost::mpl::true_ +{ +}; + +////////////////////////////////////////////////////////////////////////// +// string +////////////////////////////////////////////////////////////////////////// + +template<> +struct is_range< char* > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< wchar_t* > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< const char* > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< const wchar_t* > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< char* const > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< wchar_t* const > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< const char* const > : boost::mpl::true_ +{ +}; + +template<> +struct is_range< const wchar_t* const > : boost::mpl::true_ +{ +}; + +} // namespace detail + +} // namespace odeint +} // namespace numeric +} // namespace boost + + + +#endif // BOOST_NUMERIC_ODEINT_UTIL_DETAIL_IS_RANGE_HPP_INCLUDED