add boost on mac
This commit is contained in:
159
macx64/include/boost/metaparse/v1/impl/string_iterator.hpp
Normal file
159
macx64/include/boost/metaparse/v1/impl/string_iterator.hpp
Normal file
@@ -0,0 +1,159 @@
|
||||
#ifndef BOOST_METAPARSE_V1_IMPL_STRING_ITERATOR_HPP
|
||||
#define BOOST_METAPARSE_V1_IMPL_STRING_ITERATOR_HPP
|
||||
|
||||
// Copyright Abel Sinkovics (abel@sinkovics.hu) 2013.
|
||||
// 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)
|
||||
|
||||
#include <boost/metaparse/v1/impl/string_iterator_tag.hpp>
|
||||
#include <boost/metaparse/v1/impl/at_c.hpp>
|
||||
|
||||
|
||||
#include <boost/mpl/iterator_tags.hpp>
|
||||
#include <boost/mpl/int.hpp>
|
||||
#include <boost/mpl/bool.hpp>
|
||||
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace metaparse
|
||||
{
|
||||
namespace v1
|
||||
{
|
||||
namespace impl
|
||||
{
|
||||
// string_iterator
|
||||
template <class S, int N>
|
||||
struct string_iterator
|
||||
{
|
||||
typedef string_iterator type;
|
||||
typedef string_iterator_tag tag;
|
||||
typedef boost::mpl::random_access_iterator_tag category;
|
||||
};
|
||||
|
||||
// advance_c
|
||||
|
||||
template <class S, int N>
|
||||
struct advance_c;
|
||||
|
||||
template <class S, int N, int P>
|
||||
struct advance_c<string_iterator<S, N>, P> :
|
||||
string_iterator<S, N + P>
|
||||
{};
|
||||
|
||||
// distance
|
||||
|
||||
template <class A, class B>
|
||||
struct distance;
|
||||
|
||||
template <class S, int A, int B>
|
||||
struct distance<string_iterator<S, A>, string_iterator<S, B> > :
|
||||
boost::mpl::int_<B - A>
|
||||
{};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace mpl
|
||||
{
|
||||
// advance
|
||||
template <class S>
|
||||
struct advance_impl;
|
||||
|
||||
template <>
|
||||
struct advance_impl<boost::metaparse::v1::impl::string_iterator_tag>
|
||||
{
|
||||
typedef advance_impl type;
|
||||
|
||||
template <class S, class N>
|
||||
struct apply :
|
||||
boost::metaparse::v1::impl::advance_c<
|
||||
typename S::type, N::type::value
|
||||
>
|
||||
{};
|
||||
};
|
||||
|
||||
// distance
|
||||
template <class S>
|
||||
struct distance_impl;
|
||||
|
||||
template <>
|
||||
struct distance_impl<boost::metaparse::v1::impl::string_iterator_tag>
|
||||
{
|
||||
typedef distance_impl type;
|
||||
|
||||
template <class A, class B>
|
||||
struct apply :
|
||||
boost::metaparse::v1::impl::distance<
|
||||
typename A::type,
|
||||
typename B::type
|
||||
>
|
||||
{};
|
||||
};
|
||||
|
||||
// next
|
||||
template <class S>
|
||||
struct next;
|
||||
|
||||
template <class S, int N>
|
||||
struct next<boost::metaparse::v1::impl::string_iterator<S, N> > :
|
||||
boost::metaparse::v1::impl::string_iterator<S, N + 1>
|
||||
{};
|
||||
|
||||
// prior
|
||||
template <class S>
|
||||
struct prior;
|
||||
|
||||
template <class S, int N>
|
||||
struct prior<boost::metaparse::v1::impl::string_iterator<S, N> > :
|
||||
boost::metaparse::v1::impl::string_iterator<S, N - 1>
|
||||
{};
|
||||
|
||||
// deref
|
||||
template <class S>
|
||||
struct deref;
|
||||
|
||||
template <class S, int N>
|
||||
struct deref<boost::metaparse::v1::impl::string_iterator<S, N> > :
|
||||
boost::metaparse::v1::impl::at_c<S, N>
|
||||
{};
|
||||
|
||||
// equal_to
|
||||
template <class A, class B>
|
||||
struct equal_to_impl;
|
||||
|
||||
template <>
|
||||
struct equal_to_impl<
|
||||
boost::metaparse::v1::impl::string_iterator_tag,
|
||||
boost::metaparse::v1::impl::string_iterator_tag
|
||||
>
|
||||
{
|
||||
typedef equal_to_impl type;
|
||||
|
||||
template <class A, class B>
|
||||
struct apply : is_same<typename A::type, typename B::type> {};
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct equal_to_impl<boost::metaparse::v1::impl::string_iterator_tag, T>
|
||||
{
|
||||
typedef equal_to_impl type;
|
||||
|
||||
template <class, class>
|
||||
struct apply : false_ {};
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct equal_to_impl<T, boost::metaparse::v1::impl::string_iterator_tag> :
|
||||
equal_to_impl<boost::metaparse::v1::impl::string_iterator_tag, T>
|
||||
{};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user