annotate DEPENDENCIES/generic/include/boost/fusion/support/segmented_fold_until.hpp @ 120:4729c8589274 emscripten-piper

Add piper builds
author Chris Cannam
date Fri, 11 Nov 2016 15:49:32 +0000
parents c530137014c0
children
rev   line source
Chris@16 1 /*=============================================================================
Chris@16 2 Copyright (c) 2011 Eric Niebler
Chris@16 3
Chris@16 4 Distributed under the Boost Software License, Version 1.0. (See accompanying
Chris@16 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
Chris@16 6 ==============================================================================*/
Chris@16 7 #if !defined(BOOST_FUSION_SEGMENTED_FOLD_UNTIL_HPP_INCLUDED)
Chris@16 8 #define BOOST_FUSION_SEGMENTED_FOLD_UNTIL_HPP_INCLUDED
Chris@16 9
Chris@101 10 #include <boost/fusion/support/config.hpp>
Chris@16 11 #include <boost/type_traits/is_const.hpp>
Chris@16 12 #include <boost/utility/enable_if.hpp>
Chris@16 13 #include <boost/fusion/support/detail/segmented_fold_until_impl.hpp>
Chris@16 14 #include <boost/fusion/view/iterator_range.hpp>
Chris@16 15 #include <boost/fusion/sequence/intrinsic/begin.hpp>
Chris@16 16 #include <boost/fusion/sequence/intrinsic/end.hpp>
Chris@16 17 #include <boost/fusion/sequence/intrinsic/empty.hpp>
Chris@16 18 #include <boost/fusion/container/list/cons.hpp>
Chris@16 19
Chris@16 20 namespace boost { namespace fusion
Chris@16 21 {
Chris@16 22 //auto segmented_fold_until(seq, state, fun)
Chris@16 23 //{
Chris@16 24 // return first(segmented_fold_until_impl(seq, state, nil_, fun));
Chris@16 25 //}
Chris@16 26
Chris@16 27 namespace result_of
Chris@16 28 {
Chris@16 29 template <typename Sequence, typename State, typename Fun>
Chris@16 30 struct segmented_fold_until
Chris@16 31 {
Chris@16 32 typedef
Chris@16 33 detail::segmented_fold_until_impl<
Chris@16 34 Sequence
Chris@16 35 , State
Chris@16 36 , fusion::nil_
Chris@16 37 , Fun
Chris@16 38 >
Chris@16 39 filter;
Chris@16 40
Chris@16 41 typedef
Chris@16 42 typename filter::type
Chris@16 43 type;
Chris@16 44 };
Chris@16 45 }
Chris@16 46
Chris@16 47 template <typename Sequence, typename State, typename Fun>
Chris@101 48 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
Chris@101 49 inline typename
Chris@16 50 lazy_disable_if<
Chris@16 51 is_const<Sequence>
Chris@16 52 , result_of::segmented_fold_until<Sequence, State, Fun>
Chris@16 53 >::type
Chris@16 54 segmented_fold_until(Sequence& seq, State const& state, Fun const& fun)
Chris@16 55 {
Chris@16 56 typedef
Chris@16 57 typename result_of::segmented_fold_until<Sequence, State, Fun>::filter
Chris@16 58 filter;
Chris@101 59
Chris@16 60 return filter::call(seq, state, fusion::nil_(), fun);
Chris@16 61 }
Chris@16 62
Chris@16 63 template <typename Sequence, typename State, typename Fun>
Chris@101 64 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
Chris@101 65 inline typename result_of::segmented_fold_until<Sequence const, State, Fun>::type
Chris@16 66 segmented_fold_until(Sequence const& seq, State const& state, Fun const& fun)
Chris@16 67 {
Chris@16 68 typedef
Chris@16 69 typename result_of::segmented_fold_until<Sequence const, State, Fun>::filter
Chris@16 70 filter;
Chris@101 71
Chris@16 72 return filter::call(seq, state, fusion::nil_(), fun);
Chris@16 73 }
Chris@16 74 }}
Chris@16 75
Chris@16 76 #endif