コード例 #1
0
ファイル: fold.hpp プロジェクト: mobiusklein/mzR
 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 static Result
 call(State const& state,It0 const& it0,F f)
 {
     return call_1(
                f(state,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0)),
                fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0),
                f);
 }
コード例 #2
0
ファイル: fold.hpp プロジェクト: mobiusklein/mzR
 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 static Result
 call_2(State2 const& state2,It2 const& it2,F& f)
 {
     return call_3(
                f(state2,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it2)),
                fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it2),
                f);
 }
コード例 #3
0
ファイル: fold.hpp プロジェクト: mobiusklein/mzR
 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 static Result
 call_1(State1 const& state1,It1 const& it1,F& f)
 {
     return call_2(
                f(state1,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1)),
                fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1),
                f);
 }
コード例 #4
0
ファイル: fold.hpp プロジェクト: mobiusklein/mzR
 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
 static Result
 call_3(State3 const& state3,It3 const& it3,F& f)
 {
     return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)<
            Result
            , N-4
            >::call(
                f(state3,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it3)),
                fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it3),
                f);
 }
コード例 #5
0
ファイル: fold.hpp プロジェクト: ALuehmann/labstreaminglayer
            static Result
            call(State const& state,It0 const& it0,F f)
            {
                typedef typename
                    result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION<
                        It0 const
                    >::type
                It1;
                It1 it1 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it0);
                typedef typename
                    result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION<
                        It1
                    >::type
                It2;
                It2 it2 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it1);
                typedef typename
                    result_of::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION<
                        It2
                    >::type
                It3;
                It3 it3 = fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it2);

                typedef typename BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _lvalue_state)<State,It0,F>::type State1;
                State1 const state1=f(state,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it0));

                typedef typename BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _lvalue_state)<State1,It1,F>::type State2;
                State2 const state2=f(state1,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it1));

                typedef typename BOOST_PP_CAT(BOOST_FUSION_FOLD_NAME, _lvalue_state)<State2,It2,F>::type State3;
                State3 const state3=f(state2,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it2));

                return BOOST_PP_CAT(unrolled_,BOOST_FUSION_FOLD_NAME)<
                    Result
                  , N-4
                >::call(
                    f(state3,BOOST_FUSION_FOLD_IMPL_INVOKE_IT_TRANSFORM(it3)),
                    fusion::BOOST_FUSION_FOLD_IMPL_NEXT_IT_FUNCTION(it3),
                    f);
            }