Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/boost/fusion/view/zip_view/zip_view_iterator.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Joel de Guzman
0003     Copyright (c) 2006 Dan Marsden
0004 
0005     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0006     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0007 ==============================================================================*/
0008 #if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814)
0009 #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814
0010 
0011 #include <boost/fusion/support/config.hpp>
0012 #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp>
0013 #include <boost/fusion/support/iterator_base.hpp>
0014 #include <boost/fusion/view/zip_view/detail/deref_impl.hpp>
0015 #include <boost/fusion/view/zip_view/detail/next_impl.hpp>
0016 #include <boost/fusion/view/zip_view/detail/prior_impl.hpp>
0017 #include <boost/fusion/view/zip_view/detail/advance_impl.hpp>
0018 #include <boost/fusion/view/zip_view/detail/distance_impl.hpp>
0019 #include <boost/fusion/view/zip_view/detail/value_of_impl.hpp>
0020 #include <boost/fusion/view/zip_view/detail/equal_to_impl.hpp>
0021 
0022 #include <boost/fusion/container/vector/convert.hpp>
0023 
0024 namespace boost { namespace fusion {
0025     
0026     struct zip_view_iterator_tag;
0027 
0028     template<
0029         typename IteratorSequence, 
0030         typename Traversal>
0031     struct zip_view_iterator
0032         : iterator_base<zip_view_iterator<IteratorSequence, Traversal> >
0033     {
0034         typedef zip_view_iterator_tag fusion_tag;
0035         typedef Traversal category;
0036 
0037         template<typename InitSeq>
0038         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0039         zip_view_iterator(
0040             const InitSeq& iterator_seq)
0041             : iterators_(iterator_seq)
0042         {}
0043 
0044         typedef typename result_of::as_vector<IteratorSequence>::type iterators;
0045         iterators iterators_;
0046     };
0047 }}
0048 
0049 #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
0050 namespace std
0051 {
0052     template <typename IteratorSequence, typename Traversal>
0053     struct iterator_traits< ::boost::fusion::zip_view_iterator<IteratorSequence, Traversal> >
0054     { };
0055 }
0056 #endif
0057 
0058 #endif