1 /*============================================================================= 2 Copyright (c) 2003 Joel de Guzman 3 4 Use, modification and distribution is subject to the Boost Software 5 License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 6 http://www.boost.org/LICENSE_1_0.txt) 7 ==============================================================================*/ 8 #if !defined(FUSION_ALGORITHM_TRANSFORM_HPP) 9 #define FUSION_ALGORITHM_TRANSFORM_HPP 10 11 #include <boost/spirit/fusion/sequence/transform_view.hpp> 12 13 namespace boost { namespace fusion 14 { 15 namespace meta 16 { 17 template <typename Sequence, typename F> 18 struct transform 19 { 20 typedef transform_view<Sequence, F> type; 21 }; 22 } 23 24 namespace function 25 { 26 struct transform 27 { 28 template <typename Sequence, typename F> 29 struct apply : meta::transform<Sequence, F> {}; 30 31 template <typename Sequence, typename F> 32 typename apply<Sequence const, F>::type operator ()boost::fusion::function::transform33 operator()(Sequence const& seq, F const& f) const 34 { 35 return transform_view<Sequence const, F>(seq, f); 36 } 37 38 template <typename Sequence, typename F> 39 typename apply<Sequence, F>::type operator ()boost::fusion::function::transform40 operator()(Sequence& seq, F const& f) const 41 { 42 return transform_view<Sequence, F>(seq, f); 43 } 44 }; 45 } 46 47 function::transform const transform = function::transform(); 48 49 }} 50 51 #endif 52 53