Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:31:08

0001 /*=============================================================================
0002     Copyright (c) 2001-2011 Joel de Guzman
0003     Copyright (c) 2005-2006 Dan Marsden
0004     Copyright (c) 2009-2010 Christopher Schmidt
0005 
0006     Distributed under the Boost Software License, Version 1.0. (See accompanying
0007     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0008 ==============================================================================*/
0009 
0010 #ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
0011 #define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
0012 
0013 #include <boost/fusion/support/config.hpp>
0014 #include <boost/fusion/iterator/basic_iterator.hpp>
0015 
0016 namespace boost { namespace fusion { namespace extension
0017 {
0018     template <typename>
0019     struct end_impl;
0020 
0021     template <>
0022     struct end_impl<struct_tag>
0023     {
0024         template <typename Seq>
0025         struct apply
0026         {
0027             typedef
0028                 basic_iterator<
0029                     struct_iterator_tag
0030                   , random_access_traversal_tag
0031                   , Seq
0032                   , struct_size<typename remove_const<Seq>::type>::value
0033                 >
0034             type;
0035 
0036             BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0037             static type
0038             call(Seq& seq)
0039             {
0040                 return type(seq,0);
0041             }
0042         };
0043     };
0044 
0045     template <>
0046     struct end_impl<assoc_struct_tag>
0047     {
0048         template <typename Seq>
0049         struct apply
0050         {
0051             typedef
0052                 basic_iterator<
0053                     struct_iterator_tag
0054                   , assoc_struct_category
0055                   , Seq
0056                   , struct_size<typename remove_const<Seq>::type>::value
0057                 >
0058             type;
0059 
0060             BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
0061             static type
0062             call(Seq& seq)
0063             {
0064                 return type(seq,0);
0065             }
0066         };
0067     };
0068 }}}
0069 
0070 #endif