123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #if !defined(FUSION_ITERATOR_RANGE_05062005_1224)
- #define FUSION_ITERATOR_RANGE_05062005_1224
- #include <boost/fusion/support/config.hpp>
- #include <boost/fusion/support/detail/access.hpp>
- #include <boost/fusion/support/sequence_base.hpp>
- #include <boost/fusion/support/category_of.hpp>
- #include <boost/fusion/iterator/distance.hpp>
- #include <boost/fusion/iterator/mpl/convert_iterator.hpp>
- #include <boost/fusion/view/iterator_range/detail/begin_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/end_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/at_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/size_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/value_at_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp>
- #include <boost/fusion/view/iterator_range/detail/segments_impl.hpp>
- #include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
- #include <boost/config.hpp>
- #if defined (BOOST_MSVC)
- # pragma warning(push)
- # pragma warning (disable: 4512)
- #endif
- namespace boost { namespace fusion
- {
- struct iterator_range_tag;
- struct fusion_sequence_tag;
- template <typename First, typename Last>
- struct iterator_range : sequence_base<iterator_range<First, Last> >
- {
- typedef typename convert_iterator<First>::type begin_type;
- typedef typename convert_iterator<Last>::type end_type;
- typedef iterator_range_tag fusion_tag;
- typedef fusion_sequence_tag tag;
- typedef mpl::true_ is_view;
- typedef typename traits::category_of<begin_type>::type category;
- BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
- iterator_range(First const& in_first, Last const& in_last)
- : first(convert_iterator<First>::call(in_first))
- , last(convert_iterator<Last>::call(in_last)) {}
- begin_type first;
- end_type last;
- };
- }}
- #if defined (BOOST_MSVC)
- # pragma warning(pop)
- #endif
- #endif
|