Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:34:40

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Joel de Guzman
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007 #if !defined(FUSION_VECTOR_ITERATOR_05042005_0635)
0008 #define FUSION_VECTOR_ITERATOR_05042005_0635
0009 
0010 #include <boost/fusion/support/config.hpp>
0011 #include <boost/fusion/support/iterator_base.hpp>
0012 #include <boost/fusion/container/vector/detail/deref_impl.hpp>
0013 #include <boost/fusion/container/vector/detail/value_of_impl.hpp>
0014 #include <boost/fusion/container/vector/detail/next_impl.hpp>
0015 #include <boost/fusion/container/vector/detail/prior_impl.hpp>
0016 #include <boost/fusion/container/vector/detail/equal_to_impl.hpp>
0017 #include <boost/fusion/container/vector/detail/distance_impl.hpp>
0018 #include <boost/fusion/container/vector/detail/advance_impl.hpp>
0019 #include <boost/type_traits/add_const.hpp>
0020 #include <boost/mpl/int.hpp>
0021 
0022 #ifdef _MSC_VER
0023 #  pragma warning(push)
0024 #  pragma warning(disable: 4512) // assignment operator could not be generated.
0025 #endif
0026 
0027 namespace boost { namespace fusion
0028 {
0029     struct vector_iterator_tag;
0030     struct random_access_traversal_tag;
0031 
0032     template <typename Vector, int N>
0033     struct vector_iterator_identity;
0034 
0035     template <typename Vector, int N>
0036     struct vector_iterator : iterator_base<vector_iterator<Vector, N> >
0037     {
0038         typedef mpl::int_<N> index;
0039         typedef Vector vector;
0040         typedef vector_iterator_tag fusion_tag;
0041         typedef random_access_traversal_tag category;
0042         typedef vector_iterator_identity<
0043             typename add_const<Vector>::type, N> identity;
0044 
0045         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0046         vector_iterator(Vector& in_vec)
0047             : vec(in_vec) {}
0048 
0049         Vector& vec;
0050     };
0051 }}
0052 
0053 #ifdef _MSC_VER
0054 #  pragma warning(pop)
0055 #endif
0056 
0057 #ifdef BOOST_FUSION_WORKAROUND_FOR_LWG_2408
0058 namespace std
0059 {
0060     template <typename Vector, int N>
0061     struct iterator_traits< ::boost::fusion::vector_iterator<Vector, N> >
0062     { };
0063 }
0064 #endif
0065 
0066 #endif
0067