summaryrefslogtreecommitdiff
path: root/boost/proto/detail/reverse.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/proto/detail/reverse.hpp')
-rw-r--r--boost/proto/detail/reverse.hpp189
1 files changed, 0 insertions, 189 deletions
diff --git a/boost/proto/detail/reverse.hpp b/boost/proto/detail/reverse.hpp
deleted file mode 100644
index 64ac6ba4a3..0000000000
--- a/boost/proto/detail/reverse.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2008 Eric Niebler
-
- 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_PROTO_DETAIL_FUSION_REVERSE_EAH_01_22_2008
-#define BOOST_PROTO_DETAIL_FUSION_REVERSE_EAH_01_22_2008
-
-#include <boost/spirit/fusion/detail/access.hpp>
-#include <boost/spirit/fusion/iterator/as_fusion_iterator.hpp>
-#include <boost/spirit/fusion/iterator/detail/iterator_base.hpp>
-#include <boost/spirit/fusion/sequence/detail/sequence_base.hpp>
-#include <boost/spirit/fusion/iterator/next.hpp>
-#include <boost/spirit/fusion/iterator/prior.hpp>
-#include <boost/spirit/fusion/iterator/deref.hpp>
-#include <boost/spirit/fusion/iterator/value_of.hpp>
-#include <boost/spirit/fusion/sequence/begin.hpp>
-#include <boost/spirit/fusion/sequence/end.hpp>
-
-namespace boost { namespace fusion
-{
- struct reverse_view_tag;
- struct reverse_view_iterator_tag;
-
- template <typename First>
- struct reverse_view_iterator
- : iterator_base<reverse_view_iterator<First> >
- {
- typedef as_fusion_iterator<First> converter;
- typedef typename converter::type first_type;
- typedef reverse_view_iterator_tag tag;
-
- reverse_view_iterator(First const& first)
- : first(converter::convert(first)) {}
-
- first_type first;
- };
-
- template <typename Sequence>
- struct reverse_view : sequence_base<reverse_view<Sequence> >
- {
- typedef as_fusion_sequence<Sequence> seq_converter;
- typedef typename seq_converter::type seq;
-
- typedef reverse_view_tag tag;
- typedef typename meta::begin<seq>::type first_type;
- typedef typename meta::end<seq>::type last_type;
-
- reverse_view(Sequence& seq)
- : first(fusion::begin(seq))
- , last(fusion::end(seq))
- {}
-
- first_type first;
- last_type last;
- };
-
- namespace meta
- {
- template <>
- struct deref_impl<reverse_view_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename
- meta::deref<
- typename meta::prior<
- typename Iterator::first_type
- >::type
- >::type
- type;
-
- static type
- call(Iterator const& i)
- {
- return *fusion::prior(i.first);
- }
- };
- };
-
- template <>
- struct prior_impl<reverse_view_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename Iterator::first_type first_type;
- typedef typename next_impl<typename first_type::tag>::
- template apply<first_type>
- wrapped;
-
- typedef reverse_view_iterator<typename wrapped::type> type;
-
- static type
- call(Iterator const& i)
- {
- return type(wrapped::call(i.first));
- }
- };
- };
-
- template <>
- struct next_impl<reverse_view_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename Iterator::first_type first_type;
- typedef typename prior_impl<typename first_type::tag>::
- template apply<first_type>
- wrapped;
-
- typedef reverse_view_iterator<typename wrapped::type> type;
-
- static type
- call(Iterator const& i)
- {
- return type(wrapped::call(i.first));
- }
- };
- };
-
- template <>
- struct value_impl<reverse_view_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename
- meta::value_of<
- typename meta::prior<
- typename Iterator::first_type
- >::type
- >::type
- type;
- };
- };
-
- template <>
- struct begin_impl<reverse_view_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef reverse_view_iterator<typename Sequence::last_type> type;
-
- static type
- call(Sequence const& s)
- {
- return type(s.last);
- }
- };
- };
-
- template <>
- struct end_impl<reverse_view_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef reverse_view_iterator<typename Sequence::first_type> type;
-
- static type
- call(Sequence const& s)
- {
- return type(s.first);
- }
- };
- };
-
- template <typename Sequence>
- struct reverse
- {
- typedef reverse_view<Sequence> type;
- };
- }
-
- template <typename Sequence>
- inline reverse_view<Sequence const>
- reverse(Sequence const& view)
- {
- return reverse_view<Sequence const>(view);
- }
-}}
-
-#endif