Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-31 09:41:55

0001 /*=============================================================================
0002     Copyright (c) 2007 Tobias Schwinger
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 
0008 #ifndef BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED
0009 #define BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED
0010 
0011 #include <boost/fusion/support/config.hpp>
0012 #include <boost/type_traits/remove_reference.hpp>
0013 #include <boost/mpl/if.hpp>
0014 
0015 #include <boost/fusion/support/is_view.hpp>
0016 #include <boost/fusion/support/category_of.hpp>
0017 
0018 #include <boost/fusion/view/repetitive_view/detail/begin_impl.hpp>
0019 #include <boost/fusion/view/repetitive_view/detail/end_impl.hpp>
0020 
0021 #ifdef _MSC_VER
0022 #  pragma warning(push)
0023 #  pragma warning(disable: 4512) // assignment operator could not be generated.
0024 #endif
0025 
0026 namespace boost { namespace fusion
0027 {
0028     struct repetitive_view_tag;
0029     struct fusion_sequence_tag;
0030 
0031     template<typename Sequence> struct repetitive_view 
0032         : sequence_base< repetitive_view<Sequence> >
0033     {
0034         typedef repetitive_view_tag fusion_tag;
0035         typedef fusion_sequence_tag tag; // this gets picked up by MPL
0036         typedef mpl::true_ is_view;
0037 
0038         typedef single_pass_traversal_tag category;
0039 
0040         typedef typename boost::remove_reference<Sequence>::type sequence_type;
0041         typedef typename 
0042             mpl::if_<traits::is_view<Sequence>, Sequence, sequence_type&>::type
0043         stored_seq_type;
0044 
0045         BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0046         repetitive_view(Sequence& in_seq)
0047             : seq(in_seq) {}
0048 
0049         stored_seq_type seq;
0050     };
0051 
0052 }}
0053 
0054 #ifdef _MSC_VER
0055 #  pragma warning(pop)
0056 #endif
0057 
0058 #endif