diff options
Diffstat (limited to 'boost/fusion/view')
121 files changed, 607 insertions, 16 deletions
diff --git a/boost/fusion/view/detail/strictest_traversal.hpp b/boost/fusion/view/detail/strictest_traversal.hpp index 7b7c976048..4092ea4da6 100644 --- a/boost/fusion/view/detail/strictest_traversal.hpp +++ b/boost/fusion/view/detail/strictest_traversal.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_STRICTEST_TRAVERSAL_20060123_2101) #define FUSION_STRICTEST_TRAVERSAL_20060123_2101 +#include <boost/fusion/support/config.hpp> #include <boost/config.hpp> #include <boost/mpl/or.hpp> #include <boost/mpl/if.hpp> @@ -56,8 +57,9 @@ namespace boost { namespace fusion }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template<typename StrictestSoFar, typename Next> + BOOST_FUSION_GPU_ENABLED typename result<strictest_traversal_impl(StrictestSoFar, Next)>::type operator()(StrictestSoFar&&, Next&&) const; #endif diff --git a/boost/fusion/view/filter_view.hpp b/boost/fusion/view/filter_view.hpp index 3986d7d9b1..2226026b6b 100644 --- a/boost/fusion/view/filter_view.hpp +++ b/boost/fusion/view/filter_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608) #define FUSION_SEQUENCE_VIEW_FILTER_VIEW_10022005_0608 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/filter_view/filter_view.hpp> #include <boost/fusion/view/filter_view/filter_view_iterator.hpp> diff --git a/boost/fusion/view/filter_view/detail/begin_impl.hpp b/boost/fusion/view/filter_view/detail/begin_impl.hpp index cb1a08c687..89f67d02ad 100644 --- a/boost/fusion/view/filter_view/detail/begin_impl.hpp +++ b/boost/fusion/view/filter_view/detail/begin_impl.hpp @@ -31,6 +31,7 @@ namespace boost { namespace fusion typedef typename Sequence::category category; typedef filter_iterator<category, first_type, last_type, pred_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/filter_view/detail/deref_data_impl.hpp b/boost/fusion/view/filter_view/detail/deref_data_impl.hpp index bf721b5a5a..ba8631f501 100644 --- a/boost/fusion/view/filter_view/detail/deref_data_impl.hpp +++ b/boost/fusion/view/filter_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref_data.hpp> namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data<typename It::first_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/view/filter_view/detail/deref_impl.hpp b/boost/fusion/view/filter_view/detail/deref_impl.hpp index c535b7f272..d122dc5378 100644 --- a/boost/fusion/view/filter_view/detail/deref_impl.hpp +++ b/boost/fusion/view/filter_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_05062005_0905) #define FUSION_DEREF_IMPL_05062005_0905 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/detail/adapt_deref_traits.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/filter_view/detail/end_impl.hpp b/boost/fusion/view/filter_view/detail/end_impl.hpp index 195cb0a40b..fee9f6d459 100644 --- a/boost/fusion/view/filter_view/detail/end_impl.hpp +++ b/boost/fusion/view/filter_view/detail/end_impl.hpp @@ -30,6 +30,7 @@ namespace boost { namespace fusion typedef typename Sequence::category category; typedef filter_iterator<category,last_type, last_type, pred_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/filter_view/detail/key_of_impl.hpp b/boost/fusion/view/filter_view/detail/key_of_impl.hpp index 09d9112b1f..4ab69a6950 100644 --- a/boost/fusion/view/filter_view/detail/key_of_impl.hpp +++ b/boost/fusion/view/filter_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/key_of.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/filter_view/detail/next_impl.hpp b/boost/fusion/view/filter_view/detail/next_impl.hpp index ae1e0f0dae..0091e897ea 100644 --- a/boost/fusion/view/filter_view/detail/next_impl.hpp +++ b/boost/fusion/view/filter_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_06052005_0900) #define FUSION_NEXT_IMPL_06052005_0900 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/algorithm/query/detail/find_if.hpp> #include <boost/fusion/iterator/value_of.hpp> #include <boost/mpl/eval_if.hpp> @@ -62,6 +63,7 @@ namespace boost { namespace fusion category, typename filter::type, last_type, pred_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/filter_view/detail/size_impl.hpp b/boost/fusion/view/filter_view/detail/size_impl.hpp index 158ee01363..f6cf17cb32 100644 --- a/boost/fusion/view/filter_view/detail/size_impl.hpp +++ b/boost/fusion/view/filter_view/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SIZE_IMPL_09232005_1058) #define FUSION_SIZE_IMPL_09232005_1058 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> diff --git a/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp b/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp index 38d1bdc063..a845ac2a5c 100644 --- a/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp +++ b/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_FILTER_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/value_of_data.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/filter_view/detail/value_of_impl.hpp b/boost/fusion/view/filter_view/detail/value_of_impl.hpp index ad4ba611bc..b460a48bc1 100644 --- a/boost/fusion/view/filter_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/filter_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_05062005_0857) #define FUSION_VALUE_OF_IMPL_05062005_0857 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/detail/adapt_value_traits.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/filter_view/filter_view.hpp b/boost/fusion/view/filter_view/filter_view.hpp index 6b6ad4b718..dd710fabd1 100644 --- a/boost/fusion/view/filter_view/filter_view.hpp +++ b/boost/fusion/view/filter_view/filter_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_FILTER_VIEW_HPP) #define FUSION_SEQUENCE_FILTER_VIEW_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/sequence_base.hpp> #include <boost/fusion/support/is_view.hpp> @@ -45,11 +46,14 @@ namespace boost { namespace fusion typedef typename result_of::end<Sequence>::type last_type; typedef Pred pred_type; + BOOST_FUSION_GPU_ENABLED filter_view(Sequence& in_seq) : seq(in_seq) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; diff --git a/boost/fusion/view/filter_view/filter_view_iterator.hpp b/boost/fusion/view/filter_view/filter_view_iterator.hpp index 66975bd5a1..14aaa46005 100644 --- a/boost/fusion/view/filter_view/filter_view_iterator.hpp +++ b/boost/fusion/view/filter_view/filter_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_FILTER_VIEW_ITERATOR_05062005_0849) #define FUSION_FILTER_VIEW_ITERATOR_05062005_0849 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> #include <boost/fusion/adapted/mpl/mpl_iterator.hpp> #include <boost/fusion/iterator/value_of.hpp> @@ -54,6 +55,7 @@ namespace boost { namespace fusion typedef last_iter last_type; typedef Pred pred_type; + BOOST_FUSION_GPU_ENABLED filter_iterator(First const& in_first) : first(filter::iter_call(first_converter::call(in_first))) {} diff --git a/boost/fusion/view/flatten_view.hpp b/boost/fusion/view/flatten_view.hpp new file mode 100644 index 0000000000..dcef08dec7 --- /dev/null +++ b/boost/fusion/view/flatten_view.hpp @@ -0,0 +1,15 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_SEQUENCE_FLATTEN_VIEW_HPP_INCLUDED +#define BOOST_FUSION_SEQUENCE_FLATTEN_VIEW_HPP_INCLUDED + + +#include <boost/fusion/view/flatten_view/flatten_view.hpp> +#include <boost/fusion/view/flatten_view/flatten_view_iterator.hpp> + + +#endif diff --git a/boost/fusion/view/flatten_view/flatten_view.hpp b/boost/fusion/view/flatten_view/flatten_view.hpp new file mode 100644 index 0000000000..aa47240771 --- /dev/null +++ b/boost/fusion/view/flatten_view/flatten_view.hpp @@ -0,0 +1,127 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_FLATTEN_VIEW_HPP_INCLUDED +#define BOOST_FUSION_FLATTEN_VIEW_HPP_INCLUDED + + +#include <boost/mpl/bool.hpp> +#include <boost/mpl/single_view.hpp> +#include <boost/fusion/support/detail/access.hpp> +#include <boost/fusion/support/is_view.hpp> +#include <boost/fusion/support/category_of.hpp> +#include <boost/fusion/support/sequence_base.hpp> +#include <boost/fusion/sequence/intrinsic/begin.hpp> +#include <boost/fusion/sequence/intrinsic/end.hpp> +#include <boost/fusion/view/flatten_view/flatten_view_iterator.hpp> + + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + struct flatten_view_tag; + + template <typename Sequence> + struct flatten_view + : sequence_base<flatten_view<Sequence> > + { + typedef flatten_view_tag fusion_tag; + typedef fusion_sequence_tag tag; // this gets picked up by MPL + typedef mpl::true_ is_view; + typedef forward_traversal_tag category; + + typedef Sequence sequence_type; + typedef typename result_of::begin<Sequence>::type first_type; + typedef typename result_of::end<Sequence>::type last_type; + + explicit flatten_view(Sequence& seq) + : seq(seq) + {} + + first_type first() const { return fusion::begin(seq); } + last_type last() const { return fusion::end(seq); } + + typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; + }; +}} + +namespace boost { namespace fusion { namespace extension +{ + template<> + struct begin_impl<flatten_view_tag> + { + template<typename Sequence> + struct apply + { + typedef typename Sequence::first_type first_type; + + typedef typename + result_of::begin< + mpl::single_view< + typename Sequence::sequence_type> >::type + root_iterator; + + typedef + detail::seek_descent<root_iterator, first_type> + seek_descent; + + typedef typename seek_descent::type type; + + static inline + type call(Sequence& seq) + { + return seek_descent::apply(root_iterator(), seq.first()); + } + }; + }; + + template<> + struct end_impl<flatten_view_tag> + { + template<typename Sequence> + struct apply + { + typedef typename Sequence::last_type last_type; + + typedef typename + result_of::end< + mpl::single_view< + typename Sequence::sequence_type> >::type + type; + + static inline + type call(Sequence&) + { + return type(); + } + }; + }; + + template<> + struct size_impl<flatten_view_tag> + { + template <typename Sequence> + struct apply + : result_of::distance + < + typename result_of::begin<Sequence>::type + , typename result_of::end<Sequence>::type + > + {}; + }; + + template<> + struct empty_impl<flatten_view_tag> + { + template <typename Sequence> + struct apply + : result_of::empty<typename Sequence::sequence_type> + {}; + }; +}}} + + +#endif diff --git a/boost/fusion/view/flatten_view/flatten_view_iterator.hpp b/boost/fusion/view/flatten_view/flatten_view_iterator.hpp new file mode 100644 index 0000000000..dfe613ac84 --- /dev/null +++ b/boost/fusion/view/flatten_view/flatten_view_iterator.hpp @@ -0,0 +1,199 @@ +/*////////////////////////////////////////////////////////////////////////////// + Copyright (c) 2013 Jamboree + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +//////////////////////////////////////////////////////////////////////////////*/ +#ifndef BOOST_FUSION_FLATTEN_VIEW_ITERATOR_HPP_INCLUDED +#define BOOST_FUSION_FLATTEN_VIEW_ITERATOR_HPP_INCLUDED + + +#include <boost/mpl/bool.hpp> +#include <boost/mpl/eval_if.hpp> +#include <boost/type_traits/remove_reference.hpp> +#include <boost/fusion/container/list/cons.hpp> +#include <boost/fusion/support/unused.hpp> +#include <boost/fusion/include/equal_to.hpp> +#include <boost/fusion/iterator/next.hpp> +#include <boost/fusion/iterator/deref.hpp> +#include <boost/fusion/iterator/value_of.hpp> + + +namespace boost { namespace fusion +{ + struct forward_traversal_tag; + struct flatten_view_iterator_tag; + + template<class First, class Base> + struct flatten_view_iterator + : iterator_base<flatten_view_iterator<First, Base> > + { + typedef flatten_view_iterator_tag fusion_tag; + typedef forward_traversal_tag category; + + typedef convert_iterator<First> first_converter; + typedef typename first_converter::type first_type; + typedef Base base_type; + + flatten_view_iterator(First const& first, Base const& base) + : first(first), base(base) + {} + + first_type first; + base_type base; + }; +}} + +namespace boost { namespace fusion { namespace detail +{ + template<class Iterator, class = void> + struct make_descent_cons + { + typedef cons<Iterator> type; + + static inline type apply(Iterator const& it) + { + return type(it); + } + }; + + template<class Iterator> + struct make_descent_cons<Iterator, + typename enable_if<traits::is_sequence< + typename result_of::value_of<Iterator>::type> >::type> + { + // we use 'value_of' above for convenience, assuming the value won't be reference, + // while we must use the regular 'deref' here for const issues... + typedef typename + remove_reference<typename result_of::deref<Iterator>::type>::type + sub_sequence; + + typedef typename + result_of::begin<sub_sequence>::type + sub_begin; + + typedef cons<Iterator, typename make_descent_cons<sub_begin>::type> type; + + static inline type apply(Iterator const& it) + { + return type(it, make_descent_cons<sub_begin>::apply( + fusion::begin(*it))); + } + }; + + template<class Cons, class Base> + struct build_flatten_view_iterator; + + template<class Car, class Base> + struct build_flatten_view_iterator<cons<Car>, Base> + { + typedef flatten_view_iterator<Car, Base> type; + + static inline type apply(cons<Car> const& cons, Base const& base) + { + return type(cons.car, base); + } + }; + + template<class Car, class Cdr, class Base> + struct build_flatten_view_iterator<cons<Car, Cdr>, Base> + { + typedef flatten_view_iterator<Car, Base> next_base; + typedef build_flatten_view_iterator<Cdr, next_base> next; + typedef typename next::type type; + + static inline type apply(cons<Car, Cdr> const& cons, Base const& base) + { + return next::apply(cons.cdr, next_base(cons.car, base)); + } + }; + + template<class Base, class Iterator, class = void> + struct seek_descent + { + typedef make_descent_cons<Iterator> make_descent_cons_; + typedef typename make_descent_cons_::type cons_type; + typedef + build_flatten_view_iterator<cons_type, Base> + build_flatten_view_iterator_; + typedef typename build_flatten_view_iterator_::type type; + + static inline type apply(Base const& base, Iterator const& it) + { + return build_flatten_view_iterator_::apply( + make_descent_cons_::apply(it), base); + } + }; + + template<class Base, class Iterator> + struct seek_descent<Base, Iterator, + typename enable_if< + result_of::equal_to<Iterator, typename result_of::end< + typename result_of::value_of<Base>::type>::type> >::type> + { + typedef typename result_of::next<Base>::type type; + + static inline type apply(Base const& base, Iterator const&) + { + return fusion::next(base); + } + }; +}}} + +namespace boost { namespace fusion { namespace extension +{ + template<> + struct next_impl<flatten_view_iterator_tag> + { + template<typename Iterator> + struct apply + { + typedef typename Iterator::first_type first_type; + typedef typename Iterator::base_type base_type; + typedef typename result_of::next<first_type>::type next_type; + + typedef detail::seek_descent<base_type, next_type> seek_descent; + typedef typename seek_descent::type type; + + static inline + type call(Iterator const& it) + { + return seek_descent::apply(it.base, fusion::next(it.first)); + } + }; + }; + + template<> + struct deref_impl<flatten_view_iterator_tag> + { + template<typename Iterator> + struct apply + { + typedef typename + result_of::deref<typename Iterator::first_type>::type + type; + + static inline + type call(Iterator const& it) + { + return *it.first; + } + }; + }; + + template<> + struct value_of_impl<flatten_view_iterator_tag> + { + template<typename Iterator> + struct apply + { + typedef typename + result_of::value_of<typename Iterator::first_type>::type + type; + }; + }; +}}} + + +#endif + diff --git a/boost/fusion/view/iterator_range.hpp b/boost/fusion/view/iterator_range.hpp index 800600704e..78d6ffad9e 100644 --- a/boost/fusion/view/iterator_range.hpp +++ b/boost/fusion/view/iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610) #define FUSION_SEQUENCE_VIEW_ITERATOR_RANGE_10022005_0610 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/iterator_range/iterator_range.hpp> #endif diff --git a/boost/fusion/view/iterator_range/detail/at_impl.hpp b/boost/fusion/view/iterator_range/detail/at_impl.hpp index 1b425231ec..0626ae2ec5 100644 --- a/boost/fusion/view/iterator_range/detail/at_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_AT_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/advance.hpp> #include <boost/fusion/iterator/deref.hpp> @@ -30,6 +31,7 @@ namespace boost { namespace fusion typedef typename result_of::advance<begin_type,N>::type pos; typedef typename result_of::deref<pos>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& s) { diff --git a/boost/fusion/view/iterator_range/detail/begin_impl.hpp b/boost/fusion/view/iterator_range/detail/begin_impl.hpp index 2902e73bc1..e34b6ede30 100644 --- a/boost/fusion/view/iterator_range/detail/begin_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/begin_impl.hpp @@ -24,6 +24,7 @@ namespace boost { namespace fusion { typedef typename Sequence::begin_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/iterator_range/detail/end_impl.hpp b/boost/fusion/view/iterator_range/detail/end_impl.hpp index 3147afe107..2428198cb8 100644 --- a/boost/fusion/view/iterator_range/detail/end_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/end_impl.hpp @@ -24,6 +24,7 @@ namespace boost { namespace fusion { typedef typename Sequence::end_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp b/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp index 032225dc2b..88f4358bdf 100644 --- a/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_IS_SEGMENTED_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/bool.hpp> diff --git a/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp b/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp index 9bf459c4ec..7dc4506c79 100644 --- a/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp +++ b/boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_ITERATOR_RANGE_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/mpl/assert.hpp> #include <boost/type_traits/add_const.hpp> #include <boost/type_traits/remove_reference.hpp> @@ -47,6 +48,7 @@ namespace boost { namespace fusion } template <typename Sequence, typename T> + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence<Sequence> @@ -55,6 +57,7 @@ namespace boost { namespace fusion push_back(Sequence const& seq, T const& x); template <typename Sequence, typename T> + BOOST_FUSION_GPU_ENABLED typename lazy_enable_if< traits::is_sequence<Sequence> @@ -70,7 +73,7 @@ namespace boost { namespace fusion { namespace detail // switch (size(stack_begin)) // { // case 1: - // return nil; + // return nil_; // case 2: // // car(cdr(stack_begin)) is a range over values. // assert(end(front(car(stack_begin))) == end(car(cdr(stack_begin)))); @@ -149,6 +152,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { //return segment_sequence( @@ -195,6 +199,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return iterator_range(begin(car(cdr(stack_begin))), end(front(car(stack_begin)))); @@ -205,8 +210,9 @@ namespace boost { namespace fusion { namespace detail template <typename Stack> struct make_segment_sequence_front<Stack, 1> { - typedef typename Stack::cdr_type type; // nil + typedef typename Stack::cdr_type type; // nil_ + BOOST_FUSION_GPU_ENABLED static type call(Stack const &stack) { return stack.cdr; @@ -218,7 +224,7 @@ namespace boost { namespace fusion { namespace detail // switch (size(stack_end)) // { // case 1: - // return nil; + // return nil_; // case 2: // // car(cdr(stack_back)) is a range over values. // assert(end(front(car(stack_end))) == end(car(cdr(stack_end)))); @@ -292,6 +298,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return segment_sequence( @@ -338,6 +345,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { // return iterator_range(begin(front(car(stack_end))), begin(car(cdr(stack_end)))); @@ -348,8 +356,9 @@ namespace boost { namespace fusion { namespace detail template <typename Stack> struct make_segment_sequence_back<Stack, 1> { - typedef typename Stack::cdr_type type; // nil + typedef typename Stack::cdr_type type; // nil_ + BOOST_FUSION_GPU_ENABLED static type call(Stack const& stack) { return stack.cdr; @@ -428,6 +437,7 @@ namespace boost { namespace fusion { namespace detail > type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { //return segment_sequence( @@ -461,6 +471,7 @@ namespace boost { namespace fusion { namespace detail typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { return impl::call(stack_begin.cdr, stack_end.cdr); @@ -490,6 +501,7 @@ namespace boost { namespace fusion { namespace detail segment_sequence<segment_type> type; + BOOST_FUSION_GPU_ENABLED static type call(StackBegin stack_begin, StackEnd stack_end) { //return segment_sequence( @@ -519,6 +531,7 @@ namespace boost { namespace fusion { namespace detail typedef typename impl::type type; + BOOST_FUSION_GPU_ENABLED static type call(Begin const& begin, End const& end) { return impl::call( diff --git a/boost/fusion/view/iterator_range/detail/segments_impl.hpp b/boost/fusion/view/iterator_range/detail/segments_impl.hpp index ede49683d0..9d570cf1f0 100644 --- a/boost/fusion/view/iterator_range/detail/segments_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/segments_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_SEGMENTS_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/mpl/assert.hpp> #include <boost/fusion/sequence/intrinsic/segments.hpp> #include <boost/fusion/support/is_segmented.hpp> @@ -40,6 +41,7 @@ namespace boost { namespace fusion typename result_of::segments<typename impl::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence & seq) { return fusion::segments(impl::call(seq.first, seq.last)); diff --git a/boost/fusion/view/iterator_range/detail/size_impl.hpp b/boost/fusion/view/iterator_range/detail/size_impl.hpp index 90951b2ff9..0678e5dde1 100644 --- a/boost/fusion/view/iterator_range/detail/size_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/size_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_SIZE_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/iterator_range/detail/value_at_impl.hpp b/boost/fusion/view/iterator_range/detail/value_at_impl.hpp index b6fe888179..652b8da192 100644 --- a/boost/fusion/view/iterator_range/detail/value_at_impl.hpp +++ b/boost/fusion/view/iterator_range/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_ITERATOR_RANGE_VALUE_AT_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/advance.hpp> #include <boost/fusion/iterator/value_of.hpp> diff --git a/boost/fusion/view/iterator_range/iterator_range.hpp b/boost/fusion/view/iterator_range/iterator_range.hpp index 4f517c8d8a..f5aafd4a19 100644 --- a/boost/fusion/view/iterator_range/iterator_range.hpp +++ b/boost/fusion/view/iterator_range/iterator_range.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_ITERATOR_RANGE_05062005_1224) #define FUSION_ITERATOR_RANGE_05062005_1224 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/sequence_base.hpp> #include <boost/fusion/support/category_of.hpp> @@ -43,6 +44,7 @@ namespace boost { namespace fusion typedef typename traits::category_of<begin_type>::type category; + BOOST_FUSION_GPU_ENABLED iterator_range(First const& in_first, Last const& in_last) : first(convert_iterator<First>::call(in_first)) , last(convert_iterator<Last>::call(in_last)) {} diff --git a/boost/fusion/view/joint_view.hpp b/boost/fusion/view/joint_view.hpp index 457926ad1f..58be4b8620 100644 --- a/boost/fusion/view/joint_view.hpp +++ b/boost/fusion/view/joint_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610) #define FUSION_SEQUENCE_VIEW_JOINT_VIEW_10022005_0610 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/joint_view/joint_view.hpp> #include <boost/fusion/view/joint_view/joint_view_iterator.hpp> diff --git a/boost/fusion/view/joint_view/detail/begin_impl.hpp b/boost/fusion/view/joint_view/detail/begin_impl.hpp index a85a7e152e..f58d129042 100644 --- a/boost/fusion/view/joint_view/detail/begin_impl.hpp +++ b/boost/fusion/view/joint_view/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_0115) #define FUSION_BEGIN_IMPL_07162005_0115 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/mpl/if.hpp> @@ -42,18 +43,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s, mpl::true_) { return s.concat(); } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s, mpl::false_) { return type(s.first(), s.concat()); } + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/joint_view/detail/deref_data_impl.hpp b/boost/fusion/view/joint_view/detail/deref_data_impl.hpp index a60a125fa9..02780d99d9 100644 --- a/boost/fusion/view/joint_view/detail/deref_data_impl.hpp +++ b/boost/fusion/view/joint_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref_data.hpp> namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data<typename It::first_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/view/joint_view/detail/deref_impl.hpp b/boost/fusion/view/joint_view/detail/deref_impl.hpp index ea4055de8a..0e1e39fffa 100644 --- a/boost/fusion/view/joint_view/detail/deref_impl.hpp +++ b/boost/fusion/view/joint_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07162005_0137) #define FUSION_DEREF_IMPL_07162005_0137 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/detail/adapt_deref_traits.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/joint_view/detail/end_impl.hpp b/boost/fusion/view/joint_view/detail/end_impl.hpp index 7b88e56c48..b9e0113815 100644 --- a/boost/fusion/view/joint_view/detail/end_impl.hpp +++ b/boost/fusion/view/joint_view/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_0128) #define FUSION_END_IMPL_07162005_0128 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/mpl/if.hpp> @@ -27,6 +28,7 @@ namespace boost { namespace fusion { typedef typename Sequence::concat_last_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/joint_view/detail/key_of_impl.hpp b/boost/fusion/view/joint_view/detail/key_of_impl.hpp index e413c3d441..ec682f614d 100644 --- a/boost/fusion/view/joint_view/detail/key_of_impl.hpp +++ b/boost/fusion/view/joint_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/key_of.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/joint_view/detail/next_impl.hpp b/boost/fusion/view/joint_view/detail/next_impl.hpp index 47b4d486f2..a3c066d1f3 100644 --- a/boost/fusion/view/joint_view/detail/next_impl.hpp +++ b/boost/fusion/view/joint_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07162005_0136) #define FUSION_NEXT_IMPL_07162005_0136 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/mpl/if.hpp> @@ -44,18 +45,21 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i, mpl::true_) { return i.concat; } + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i, mpl::false_) { return type(fusion::next(i.first), i.concat); } + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp b/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp index cc883d7023..f797135b39 100644 --- a/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp +++ b/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_JOINT_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/value_of_data.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/joint_view/detail/value_of_impl.hpp b/boost/fusion/view/joint_view/detail/value_of_impl.hpp index 98637e4e5f..f058a60cbc 100644 --- a/boost/fusion/view/joint_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/joint_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_IMPL_07162005_0132) #define FUSION_VALUE_IMPL_07162005_0132 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/detail/adapt_value_traits.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/joint_view/joint_view.hpp b/boost/fusion/view/joint_view/joint_view.hpp index 11b74f9c26..3ad3191420 100644 --- a/boost/fusion/view/joint_view/joint_view.hpp +++ b/boost/fusion/view/joint_view/joint_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_JOINT_VIEW_07162005_0140) #define FUSION_JOINT_VIEW_07162005_0140 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/joint_view/joint_view_fwd.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/is_view.hpp> @@ -55,13 +56,17 @@ namespace boost { namespace fusion result_of::size<Sequence1>::value + result_of::size<Sequence2>::value> size; + BOOST_FUSION_GPU_ENABLED joint_view(Sequence1& in_seq1, Sequence2& in_seq2) : seq1(in_seq1) , seq2(in_seq2) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq1); } + BOOST_FUSION_GPU_ENABLED concat_type concat() const { return fusion::begin(seq2); } + BOOST_FUSION_GPU_ENABLED concat_last_type concat_last() const { return fusion::end(seq2); } private: diff --git a/boost/fusion/view/joint_view/joint_view_iterator.hpp b/boost/fusion/view/joint_view/joint_view_iterator.hpp index 6f5824851f..9858474078 100644 --- a/boost/fusion/view/joint_view/joint_view_iterator.hpp +++ b/boost/fusion/view/joint_view/joint_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_JOINT_VIEW_ITERATOR_07162005_0140) #define FUSION_JOINT_VIEW_ITERATOR_07162005_0140 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/iterator/equal_to.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> @@ -40,6 +41,7 @@ namespace boost { namespace fusion typedef Category category; BOOST_STATIC_ASSERT((!result_of::equal_to<first_type, last_type>::value)); + BOOST_FUSION_GPU_ENABLED joint_view_iterator(First const& in_first, Concat const& in_concat) : first(first_converter::call(in_first)) , concat(concat_converter::call(in_concat)) diff --git a/boost/fusion/view/nview.hpp b/boost/fusion/view/nview.hpp index 28d85e0f7d..b8b51cee18 100644 --- a/boost/fusion/view/nview.hpp +++ b/boost/fusion/view/nview.hpp @@ -9,6 +9,7 @@ #if !defined(FUSION_NVIEW_SEP_23_2009_1107PM) #define FUSION_NVIEW_SEP_23_2009_1107PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/nview/nview.hpp> #include <boost/fusion/view/nview/nview_iterator.hpp> diff --git a/boost/fusion/view/nview/detail/advance_impl.hpp b/boost/fusion/view/nview/detail/advance_impl.hpp index 391bebd8b0..ad82983eac 100644 --- a/boost/fusion/view/nview/detail/advance_impl.hpp +++ b/boost/fusion/view/nview/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_ADVANCE_IMPL_SEP_24_2009_0212PM) #define BOOST_FUSION_NVIEW_ADVANCE_IMPL_SEP_24_2009_0212PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/advance.hpp> #include <boost/fusion/iterator/advance.hpp> @@ -35,6 +36,7 @@ namespace boost { namespace fusion typedef nview_iterator<sequence_type, typename mpl::advance<iterator_type, Dist>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/nview/detail/at_impl.hpp b/boost/fusion/view/nview/detail/at_impl.hpp index f1f41642ab..45f9faf6f6 100644 --- a/boost/fusion/view/nview/detail/at_impl.hpp +++ b/boost/fusion/view/nview/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_AT_IMPL_SEP_24_2009_0225PM) #define BOOST_FUSION_NVIEW_AT_IMPL_SEP_24_2009_0225PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/at.hpp> namespace boost { namespace fusion @@ -31,6 +32,7 @@ namespace boost { namespace fusion typedef typename result_of::at<index_type, N>::type index; typedef typename result_of::at<sequence_type, index>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/view/nview/detail/begin_impl.hpp b/boost/fusion/view/nview/detail/begin_impl.hpp index 8ba59fc5d8..ca600b9a16 100644 --- a/boost/fusion/view/nview/detail/begin_impl.hpp +++ b/boost/fusion/view/nview/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_BEGIN_IMPL_SEP_23_2009_1036PM) #define BOOST_FUSION_NVIEW_BEGIN_IMPL_SEP_23_2009_1036PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/begin.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator<Sequence, typename mpl::begin<index_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { return type(s); diff --git a/boost/fusion/view/nview/detail/deref_impl.hpp b/boost/fusion/view/nview/detail/deref_impl.hpp index 075f0b0f18..bbdb982528 100644 --- a/boost/fusion/view/nview/detail/deref_impl.hpp +++ b/boost/fusion/view/nview/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_DEREF_IMPL_SEP_24_2009_0818AM) #define BOOST_FUSION_NVIEW_DEREF_IMPL_SEP_24_2009_0818AM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/container/vector.hpp> @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename result_of::at< typename sequence_type::sequence_type, index>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return at<index>(i.seq.seq); diff --git a/boost/fusion/view/nview/detail/distance_impl.hpp b/boost/fusion/view/nview/detail/distance_impl.hpp index 8b1906f6d2..e3e5a9a086 100644 --- a/boost/fusion/view/nview/detail/distance_impl.hpp +++ b/boost/fusion/view/nview/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_DISTANCE_IMPL_SEP_23_2009_0328PM) #define BOOST_FUSION_NVIEW_DISTANCE_IMPL_SEP_23_2009_0328PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion typename First::first_type, typename Last::first_type >::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& /*first*/, Last const& /*last*/) { diff --git a/boost/fusion/view/nview/detail/end_impl.hpp b/boost/fusion/view/nview/detail/end_impl.hpp index 7897748b7d..d36260dbb7 100644 --- a/boost/fusion/view/nview/detail/end_impl.hpp +++ b/boost/fusion/view/nview/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_END_IMPL_SEP_24_2009_0140PM) #define BOOST_FUSION_NVIEW_END_IMPL_SEP_24_2009_0140PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/end.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> @@ -35,6 +36,7 @@ namespace boost { namespace fusion typedef nview_iterator<Sequence, typename mpl::end<index_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { return type(s); diff --git a/boost/fusion/view/nview/detail/equal_to_impl.hpp b/boost/fusion/view/nview/detail/equal_to_impl.hpp index 517204b078..4b04788bb6 100644 --- a/boost/fusion/view/nview/detail/equal_to_impl.hpp +++ b/boost/fusion/view/nview/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_ITERATOR_SEP_24_2009_0329PM) #define BOOST_FUSION_NVIEW_ITERATOR_SEP_24_2009_0329PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/equal_to.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/nview/detail/next_impl.hpp b/boost/fusion/view/nview/detail/next_impl.hpp index 01cccf2b84..5193bfe655 100644 --- a/boost/fusion/view/nview/detail/next_impl.hpp +++ b/boost/fusion/view/nview/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_NEXT_IMPL_SEP_24_2009_0116PM) #define BOOST_FUSION_NVIEW_NEXT_IMPL_SEP_24_2009_0116PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/next.hpp> namespace boost { namespace fusion @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator<sequence_type, typename mpl::next<first_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/nview/detail/nview_impl.hpp b/boost/fusion/view/nview/detail/nview_impl.hpp index 555c34eac1..6c7a3e21d1 100644 --- a/boost/fusion/view/nview/detail/nview_impl.hpp +++ b/boost/fusion/view/nview/detail/nview_impl.hpp @@ -63,6 +63,7 @@ namespace boost { namespace fusion { namespace result_of namespace boost { namespace fusion { template<BOOST_PP_ENUM_PARAMS(N, int I), typename Sequence> + BOOST_FUSION_GPU_ENABLED inline nview<Sequence, mpl::vector_c<int, BOOST_PP_ENUM_PARAMS(N, I)> > as_nview(Sequence& s) { diff --git a/boost/fusion/view/nview/detail/prior_impl.hpp b/boost/fusion/view/nview/detail/prior_impl.hpp index 079a9ca6c9..374b45f669 100644 --- a/boost/fusion/view/nview/detail/prior_impl.hpp +++ b/boost/fusion/view/nview/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_PRIOR_IMPL_SEP_24_2009_0142PM) #define BOOST_FUSION_NVIEW_PRIOR_IMPL_SEP_24_2009_0142PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/prior.hpp> namespace boost { namespace fusion @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef nview_iterator<sequence_type, typename mpl::prior<first_type>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/nview/detail/size_impl.hpp b/boost/fusion/view/nview/detail/size_impl.hpp index e367f89925..57e6765386 100644 --- a/boost/fusion/view/nview/detail/size_impl.hpp +++ b/boost/fusion/view/nview/detail/size_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM) #define FUSION_NVIEW_SIZE_IMPL_OCT_06_2009_0525PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> diff --git a/boost/fusion/view/nview/detail/value_at_impl.hpp b/boost/fusion/view/nview/detail/value_at_impl.hpp index 145bb629bb..2afe9bee61 100644 --- a/boost/fusion/view/nview/detail/value_at_impl.hpp +++ b/boost/fusion/view/nview/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_VALUE_AT_IMPL_SEP_24_2009_0234PM) #define BOOST_FUSION_NVIEW_VALUE_AT_IMPL_SEP_24_2009_0234PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/value_at.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/nview/detail/value_of_impl.hpp b/boost/fusion/view/nview/detail/value_of_impl.hpp index 5b0a85ba9a..dc48e61ff6 100644 --- a/boost/fusion/view/nview/detail/value_of_impl.hpp +++ b/boost/fusion/view/nview/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_OF_PRIOR_IMPL_SEP_24_2009_0158PM) #define BOOST_FUSION_VALUE_OF_PRIOR_IMPL_SEP_24_2009_0158PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/container/vector.hpp> diff --git a/boost/fusion/view/nview/nview.hpp b/boost/fusion/view/nview/nview.hpp index 2355b68857..45b7380bdf 100644 --- a/boost/fusion/view/nview/nview.hpp +++ b/boost/fusion/view/nview/nview.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_NVIEW_SEP_23_2009_0948PM) #define BOOST_FUSION_NVIEW_SEP_23_2009_0948PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/size.hpp> #include <boost/mpl/if.hpp> #include <boost/mpl/vector_c.hpp> @@ -37,8 +38,9 @@ namespace boost { namespace fusion template<typename U> struct result<addref(U)> : add_reference<U> {}; -#ifdef BOOST_NO_RVALUE_REFERENCES +#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES template <typename T> + BOOST_FUSION_GPU_ENABLED typename add_reference<T>::type operator()(T& x) const { @@ -46,6 +48,7 @@ namespace boost { namespace fusion } #else template <typename T> + BOOST_FUSION_GPU_ENABLED typename result<addref(T)>::type operator()(T&& x) const { @@ -65,6 +68,7 @@ namespace boost { namespace fusion {}; template <typename T> + BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T>::type>::type operator()(T& x) const { @@ -72,6 +76,7 @@ namespace boost { namespace fusion } template <typename T> + BOOST_FUSION_GPU_ENABLED typename add_reference<typename add_const<T>::type>::type operator()(T const& x) const { @@ -103,7 +108,7 @@ namespace boost { namespace fusion typedef typename result_of::as_vector<transform_view_type>::type sequence_type; - explicit nview(Sequence& val) + BOOST_FUSION_GPU_ENABLED explicit nview(Sequence& val) : seq(sequence_type(transform_view_type(val, transform_type()))) {} diff --git a/boost/fusion/view/nview/nview_iterator.hpp b/boost/fusion/view/nview/nview_iterator.hpp index 3b7ec1f905..c614cbbb92 100644 --- a/boost/fusion/view/nview/nview_iterator.hpp +++ b/boost/fusion/view/nview/nview_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM) #define BOOST_FUSION_NVIEW_ITERATOR_SEP_23_2009_0948PM +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/support/category_of.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> @@ -41,7 +42,7 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef mpl_iterator<Pos> first_type; - explicit nview_iterator(Sequence& in_seq) + BOOST_FUSION_GPU_ENABLED explicit nview_iterator(Sequence& in_seq) : seq(in_seq) {} Sequence& seq; diff --git a/boost/fusion/view/repetitive_view.hpp b/boost/fusion/view/repetitive_view.hpp index fef1462fa2..abc2fda53a 100644 --- a/boost/fusion/view/repetitive_view.hpp +++ b/boost/fusion/view/repetitive_view.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/repetitive_view/repetitive_view.hpp> #include <boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp> diff --git a/boost/fusion/view/repetitive_view/detail/begin_impl.hpp b/boost/fusion/view/repetitive_view/detail/begin_impl.hpp index 321d7b8d8d..3da6b21dbf 100644 --- a/boost/fusion/view/repetitive_view/detail/begin_impl.hpp +++ b/boost/fusion/view/repetitive_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_BEGIN_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef repetitive_view_iterator<sequence_type, typename result_of::begin<sequence_type>::type > type; + BOOST_FUSION_GPU_ENABLED static type call(View const& v) { return type(v.seq); diff --git a/boost/fusion/view/repetitive_view/detail/deref_impl.hpp b/boost/fusion/view/repetitive_view/detail/deref_impl.hpp index 2c0caf8022..c54ff38ef8 100644 --- a/boost/fusion/view/repetitive_view/detail/deref_impl.hpp +++ b/boost/fusion/view/repetitive_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_DEREF_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref.hpp> namespace boost { namespace fusion @@ -29,6 +30,7 @@ namespace boost { namespace fusion result_of::deref<typename Iterator::pos_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return *i.pos; diff --git a/boost/fusion/view/repetitive_view/detail/end_impl.hpp b/boost/fusion/view/repetitive_view/detail/end_impl.hpp index 52e36da50d..ca1c270f95 100644 --- a/boost/fusion/view/repetitive_view/detail/end_impl.hpp +++ b/boost/fusion/view/repetitive_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_END_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> #include <boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef repetitive_view_iterator<sequence_type, typename result_of::end<sequence_type>::type > type; + BOOST_FUSION_GPU_ENABLED static type call(View const& v) { return type(v.seq,end(v.seq)); diff --git a/boost/fusion/view/repetitive_view/detail/next_impl.hpp b/boost/fusion/view/repetitive_view/detail/next_impl.hpp index b629cb0122..acefd513c0 100644 --- a/boost/fusion/view/repetitive_view/detail/next_impl.hpp +++ b/boost/fusion/view/repetitive_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_NEXT_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/equal_to.hpp> @@ -41,6 +42,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i.seq, next(i.pos)); @@ -57,6 +59,7 @@ namespace boost { namespace fusion > type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i.seq); @@ -77,6 +80,7 @@ namespace boost { namespace fusion typedef Iterator type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { return type(i); diff --git a/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp b/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp index bf5f2f0615..234c9fb7f5 100644 --- a/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_VALUE_OF_IMPL_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/value_of.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/repetitive_view/repetitive_view.hpp b/boost/fusion/view/repetitive_view/repetitive_view.hpp index 509db859c1..ab0a3b181f 100644 --- a/boost/fusion/view/repetitive_view/repetitive_view.hpp +++ b/boost/fusion/view/repetitive_view/repetitive_view.hpp @@ -5,9 +5,10 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) ==============================================================================*/ -#if !defined(BOOST_FUSION_REPETITIVE_REPETITIVE_VIEW_VIEW_HPP_INCLUDED) +#ifndef BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED #define BOOST_FUSION_REPETITIVE_VIEW_REPETITIVE_VIEW_HPP_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/type_traits/remove_reference.hpp> #include <boost/mpl/if.hpp> @@ -37,6 +38,7 @@ namespace boost { namespace fusion mpl::if_<traits::is_view<Sequence>, Sequence, sequence_type&>::type stored_seq_type; + BOOST_FUSION_GPU_ENABLED repetitive_view(Sequence& in_seq) : seq(in_seq) {} diff --git a/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp b/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp index 4dff006e01..7d5d139d66 100644 --- a/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp +++ b/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_REPETITIVE_VIEW_ITERATOR_HPP_INCLUDED) #define BOOST_FUSION_REPETITIVE_VIEW_HPP_ITERATOR_INCLUDED +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/support/category_of.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> @@ -35,9 +36,10 @@ namespace boost { namespace fusion typedef typename convert_iterator<typename result_of::end<Sequence>::type>::type end_type; typedef single_pass_traversal_tag category; - explicit repetitive_view_iterator(Sequence& in_seq) + BOOST_FUSION_GPU_ENABLED explicit repetitive_view_iterator(Sequence& in_seq) : seq(in_seq), pos(begin(in_seq)) {} + BOOST_FUSION_GPU_ENABLED repetitive_view_iterator(Sequence& in_seq, pos_type const& in_pos) : seq(in_seq), pos(in_pos) {} diff --git a/boost/fusion/view/reverse_view.hpp b/boost/fusion/view/reverse_view.hpp index 5ba6773036..c0c1fd7c84 100644 --- a/boost/fusion/view/reverse_view.hpp +++ b/boost/fusion/view/reverse_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_REVERSE_VIEW_10022005_0612 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/reverse_view/reverse_view.hpp> #include <boost/fusion/view/reverse_view/reverse_view_iterator.hpp> diff --git a/boost/fusion/view/reverse_view/detail/advance_impl.hpp b/boost/fusion/view/reverse_view/detail/advance_impl.hpp index cd0a730966..1304d0a9c2 100644 --- a/boost/fusion/view/reverse_view/detail/advance_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_14122005_2015) #define FUSION_ADVANCE_IMPL_14122005_2015 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/advance.hpp> #include <boost/mpl/negate.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion { typedef typename result_of::advance<first_type, negative_dist>::type advanced_type; typedef reverse_view_iterator<advanced_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/reverse_view/detail/at_impl.hpp b/boost/fusion/view/reverse_view/detail/at_impl.hpp index 2e842596c4..ebad8f3524 100644 --- a/boost/fusion/view/reverse_view/detail/at_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_AT_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_AT_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/at.hpp> #include <boost/mpl/minus.hpp> #include <boost/mpl/int.hpp> @@ -29,6 +30,7 @@ namespace boost { namespace fusion { namespace extension result_of::at<typename Seq::seq_type, real_n>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/view/reverse_view/detail/begin_impl.hpp b/boost/fusion/view/reverse_view/detail/begin_impl.hpp index 5c83eefb7a..2f20df57a4 100644 --- a/boost/fusion/view/reverse_view/detail/begin_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/begin_impl.hpp @@ -27,6 +27,7 @@ namespace boost { namespace fusion { typedef reverse_view_iterator<typename Sequence::last_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& s) { diff --git a/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp b/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp index 2f52bdd898..20d381baba 100644 --- a/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_DEREF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref_data.hpp> namespace boost { namespace fusion { namespace extension @@ -25,6 +26,7 @@ namespace boost { namespace fusion { namespace extension result_of::deref_data<typename It::first_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/view/reverse_view/detail/deref_impl.hpp b/boost/fusion/view/reverse_view/detail/deref_impl.hpp index 3a82145ea4..530921fe3a 100644 --- a/boost/fusion/view/reverse_view/detail/deref_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07202005_0851) #define FUSION_DEREF_IMPL_07202005_0851 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/iterator/prior.hpp> @@ -33,6 +34,7 @@ namespace boost { namespace fusion >::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/reverse_view/detail/distance_impl.hpp b/boost/fusion/view/reverse_view/detail/distance_impl.hpp index 13421d8d01..3a5fdc6114 100644 --- a/boost/fusion/view/reverse_view/detail/distance_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_14122005_2104) #define FUSION_DISTANCE_IMPL_14122005_2104 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> namespace boost { namespace fusion { @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typedef typename Last::first_type last_type; typedef typename result_of::distance<last_type, first_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& first, Last const& last) { diff --git a/boost/fusion/view/reverse_view/detail/end_impl.hpp b/boost/fusion/view/reverse_view/detail/end_impl.hpp index bf4ddfb476..1747d64f33 100644 --- a/boost/fusion/view/reverse_view/detail/end_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/end_impl.hpp @@ -27,6 +27,7 @@ namespace boost { namespace fusion { typedef reverse_view_iterator<typename Sequence::first_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence const& s) { diff --git a/boost/fusion/view/reverse_view/detail/key_of_impl.hpp b/boost/fusion/view/reverse_view/detail/key_of_impl.hpp index 3d760fd272..985e5fa9cd 100644 --- a/boost/fusion/view/reverse_view/detail/key_of_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/key_of_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_KEY_OF_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_KEY_OF_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/key_of.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/reverse_view/detail/next_impl.hpp b/boost/fusion/view/reverse_view/detail/next_impl.hpp index 18817280c0..1aaa692023 100644 --- a/boost/fusion/view/reverse_view/detail/next_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07202005_0856) #define FUSION_NEXT_IMPL_07202005_0856 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/prior.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion typedef reverse_view_iterator<typename wrapped::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/reverse_view/detail/prior_impl.hpp b/boost/fusion/view/reverse_view/detail/prior_impl.hpp index 014267259b..4007ad4d97 100644 --- a/boost/fusion/view/reverse_view/detail/prior_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/prior_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_PRIOR_IMPL_07202005_0857) #define FUSION_PRIOR_IMPL_07202005_0857 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/iterator/prior.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion typedef reverse_view_iterator<typename wrapped::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/reverse_view/detail/value_at_impl.hpp b/boost/fusion/view/reverse_view/detail/value_at_impl.hpp index 90f5129bc9..76465fd74a 100644 --- a/boost/fusion/view/reverse_view/detail/value_at_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_AT_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_AT_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/value_at.hpp> #include <boost/mpl/minus.hpp> #include <boost/mpl/int.hpp> diff --git a/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp b/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp index 69d310ffb1..a96d1ce362 100644 --- a/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp @@ -8,6 +8,7 @@ #ifndef BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP #define BOOST_FUSION_VIEW_REVERSE_VIEW_DETAIL_VALUE_OF_DATA_IMPL_HPP +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/value_of_data.hpp> namespace boost { namespace fusion { namespace extension diff --git a/boost/fusion/view/reverse_view/detail/value_of_impl.hpp b/boost/fusion/view/reverse_view/detail/value_of_impl.hpp index 3cb7258187..ea171ba950 100644 --- a/boost/fusion/view/reverse_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/reverse_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_07202005_0900) #define FUSION_VALUE_OF_IMPL_07202005_0900 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/value_of.hpp> #include <boost/fusion/iterator/prior.hpp> diff --git a/boost/fusion/view/reverse_view/reverse_view.hpp b/boost/fusion/view/reverse_view/reverse_view.hpp index e5716a40f0..3b134d5f26 100644 --- a/boost/fusion/view/reverse_view/reverse_view.hpp +++ b/boost/fusion/view/reverse_view/reverse_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REVERSE_VIEW_07202005_0836) #define FUSION_REVERSE_VIEW_07202005_0836 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/is_view.hpp> #include <boost/fusion/support/category_of.hpp> @@ -49,11 +50,14 @@ namespace boost { namespace fusion bidirectional_traversal_tag , typename traits::category_of<first_type>::type>::value)); + BOOST_FUSION_GPU_ENABLED reverse_view(Sequence& in_seq) : seq(in_seq) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; diff --git a/boost/fusion/view/reverse_view/reverse_view_iterator.hpp b/boost/fusion/view/reverse_view/reverse_view_iterator.hpp index 4c249438fe..9de2169ef1 100644 --- a/boost/fusion/view/reverse_view/reverse_view_iterator.hpp +++ b/boost/fusion/view/reverse_view/reverse_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_REVERSE_VIEW_ITERATOR_07202005_0835) #define FUSION_REVERSE_VIEW_ITERATOR_07202005_0835 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/support/category_of.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> @@ -41,6 +42,7 @@ namespace boost { namespace fusion bidirectional_traversal_tag , category>::value)); + BOOST_FUSION_GPU_ENABLED reverse_view_iterator(First const& in_first) : first(converter::call(in_first)) {} diff --git a/boost/fusion/view/single_view.hpp b/boost/fusion/view/single_view.hpp index 1d9696fe12..a3a3e91852 100644 --- a/boost/fusion/view/single_view.hpp +++ b/boost/fusion/view/single_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SINGLE_VIEW_03192006_2216) #define FUSION_SINGLE_VIEW_03192006_2216 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/single_view/single_view.hpp> #include <boost/fusion/view/single_view/single_view_iterator.hpp> diff --git a/boost/fusion/view/single_view/detail/advance_impl.hpp b/boost/fusion/view/single_view/detail/advance_impl.hpp index d0846ec4e5..9dd9e4d712 100644 --- a/boost/fusion/view/single_view/detail/advance_impl.hpp +++ b/boost/fusion/view/single_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_ADVANCE_IMPL_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/plus.hpp> namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typename mpl::plus<typename Iterator::position, Dist>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/single_view/detail/at_impl.hpp b/boost/fusion/view/single_view/detail/at_impl.hpp index 3e0915fce6..b63497c8d2 100644 --- a/boost/fusion/view/single_view/detail/at_impl.hpp +++ b/boost/fusion/view/single_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_AT_IMPL_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/equal_to.hpp> @@ -30,6 +31,7 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT((mpl::equal_to<N, mpl::int_<0> >)); typedef typename Sequence::value_type type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/view/single_view/detail/begin_impl.hpp b/boost/fusion/view/single_view/detail/begin_impl.hpp index eb1a3eee26..63e4292348 100644 --- a/boost/fusion/view/single_view/detail/begin_impl.hpp +++ b/boost/fusion/view/single_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305) #define BOOST_FUSION_SINGLE_VIEW_BEGIN_IMPL_05052005_0305 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion { typedef single_view_iterator<Sequence, mpl::int_<0> > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/view/single_view/detail/deref_impl.hpp b/boost/fusion/view/single_view/detail/deref_impl.hpp index b5b37a6128..ad50a41357 100644 --- a/boost/fusion/view/single_view/detail/deref_impl.hpp +++ b/boost/fusion/view/single_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258) #define BOOST_FUSION_SINGLE_VIEW_DEREF_IMPL_05052005_0258 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/equal_to.hpp> @@ -30,6 +31,7 @@ namespace boost { namespace fusion BOOST_MPL_ASSERT((mpl::equal_to<typename Iterator::position, mpl::int_<0> >)); typedef typename Iterator::value_type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/single_view/detail/distance_impl.hpp b/boost/fusion/view/single_view/detail/distance_impl.hpp index fec204cd02..73231b4152 100644 --- a/boost/fusion/view/single_view/detail/distance_impl.hpp +++ b/boost/fusion/view/single_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_DISTANCE_IMPL_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/minus.hpp> namespace boost { namespace fusion @@ -29,6 +30,7 @@ namespace boost { namespace fusion typedef typename mpl::minus<typename Last::position, typename First::position>::type type; + BOOST_FUSION_GPU_ENABLED static type call(First const& /*first*/, Last const& /*last*/) { diff --git a/boost/fusion/view/single_view/detail/end_impl.hpp b/boost/fusion/view/single_view/detail/end_impl.hpp index e069b24d96..50a7c56240 100644 --- a/boost/fusion/view/single_view/detail/end_impl.hpp +++ b/boost/fusion/view/single_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332) #define BOOST_FUSION_SINGLE_VIEW_END_IMPL_05052005_0332 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> namespace boost { namespace fusion @@ -30,6 +31,7 @@ namespace boost { namespace fusion { typedef single_view_iterator<Sequence, mpl::int_<1> > type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& seq) { diff --git a/boost/fusion/view/single_view/detail/equal_to_impl.hpp b/boost/fusion/view/single_view/detail/equal_to_impl.hpp index c9a7ebdeb2..a14b4c5128 100644 --- a/boost/fusion/view/single_view/detail/equal_to_impl.hpp +++ b/boost/fusion/view/single_view/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_ITERATOR_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/equal_to.hpp> #include <boost/type_traits/is_same.hpp> diff --git a/boost/fusion/view/single_view/detail/next_impl.hpp b/boost/fusion/view/single_view/detail/next_impl.hpp index 1ebc502bfb..d5e0ac8037 100644 --- a/boost/fusion/view/single_view/detail/next_impl.hpp +++ b/boost/fusion/view/single_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331) #define BOOST_FUSION_SINGLE_VIEW_NEXT_IMPL_05052005_0331 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/next.hpp> #include <boost/static_assert.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion typename mpl::next<typename Iterator::position>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/single_view/detail/prior_impl.hpp b/boost/fusion/view/single_view/detail/prior_impl.hpp index ece6795d7a..c34e481a27 100644 --- a/boost/fusion/view/single_view/detail/prior_impl.hpp +++ b/boost/fusion/view/single_view/detail/prior_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_PRIOR_IMPL_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/prior.hpp> namespace boost { namespace fusion @@ -32,6 +33,7 @@ namespace boost { namespace fusion typename mpl::prior<typename Iterator::position>::type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/single_view/detail/value_at_impl.hpp b/boost/fusion/view/single_view/detail/value_at_impl.hpp index a8c20ad5fa..b5721b84bd 100644 --- a/boost/fusion/view/single_view/detail/value_at_impl.hpp +++ b/boost/fusion/view/single_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM) #define BOOST_FUSION_SINGLE_VIEW_VALUE_AT_IMPL_JUL_07_2011_1348PM +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/equal_to.hpp> diff --git a/boost/fusion/view/single_view/detail/value_of_impl.hpp b/boost/fusion/view/single_view/detail/value_of_impl.hpp index 81e8817962..dfb345c8cd 100644 --- a/boost/fusion/view/single_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/single_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324) #define BOOST_FUSION_SINGLE_VIEW_VALUE_OF_IMPL_05052005_0324 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/int.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/equal_to.hpp> diff --git a/boost/fusion/view/single_view/single_view.hpp b/boost/fusion/view/single_view/single_view.hpp index 5e7e5ab5cc..36c2c931c0 100644 --- a/boost/fusion/view/single_view/single_view.hpp +++ b/boost/fusion/view/single_view/single_view.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_05052005_0335) #define BOOST_FUSION_SINGLE_VIEW_05052005_0335 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/detail/as_fusion_element.hpp> #include <boost/fusion/support/sequence_base.hpp> @@ -42,16 +43,18 @@ namespace boost { namespace fusion typedef mpl::int_<1> size; typedef T value_type; + BOOST_FUSION_GPU_ENABLED single_view() : val() {} - explicit single_view(typename detail::call_param<T>::type in_val) + BOOST_FUSION_GPU_ENABLED explicit single_view(typename detail::call_param<T>::type in_val) : val(in_val) {} value_type val; }; template <typename T> + BOOST_FUSION_GPU_ENABLED inline single_view<typename detail::as_fusion_element<T>::type> make_single_view(T const& v) { diff --git a/boost/fusion/view/single_view/single_view_iterator.hpp b/boost/fusion/view/single_view/single_view_iterator.hpp index 77b508a0f9..128c1cae66 100644 --- a/boost/fusion/view/single_view/single_view_iterator.hpp +++ b/boost/fusion/view/single_view/single_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340) #define BOOST_FUSION_SINGLE_VIEW_ITERATOR_05052005_0340 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/view/single_view/detail/deref_impl.hpp> @@ -39,7 +40,7 @@ namespace boost { namespace fusion typedef Pos position; typedef SingleView single_view_type; - explicit single_view_iterator(single_view_type& in_view) + BOOST_FUSION_GPU_ENABLED explicit single_view_iterator(single_view_type& in_view) : view(in_view) {} SingleView& view; diff --git a/boost/fusion/view/transform_view.hpp b/boost/fusion/view/transform_view.hpp index b64395e377..57ff612a73 100644 --- a/boost/fusion/view/transform_view.hpp +++ b/boost/fusion/view/transform_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612) #define FUSION_SEQUENCE_VIEW_TRANSFORM_VIEW_10022005_0612 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/transform_view/transform_view.hpp> #include <boost/fusion/view/transform_view/transform_view_iterator.hpp> diff --git a/boost/fusion/view/transform_view/detail/advance_impl.hpp b/boost/fusion/view/transform_view/detail/advance_impl.hpp index 9027226f5b..ae8a84ce63 100644 --- a/boost/fusion/view/transform_view/detail/advance_impl.hpp +++ b/boost/fusion/view/transform_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_13122005_1906) #define FUSION_ADVANCE_IMPL_13122005_1906 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/advance.hpp> namespace boost { namespace fusion @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator<advanced_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2<advanced1_type, advanced2_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/transform_view/detail/apply_transform_result.hpp b/boost/fusion/view/transform_view/detail/apply_transform_result.hpp index 100055c4a5..87c057f231 100644 --- a/boost/fusion/view/transform_view/detail/apply_transform_result.hpp +++ b/boost/fusion/view/transform_view/detail/apply_transform_result.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936) #define BOOST_FUSION_APPLY_TRANSFORM_RESULT_02092006_1936 +#include <boost/fusion/support/config.hpp> #include <boost/utility/result_of.hpp> namespace boost { namespace fusion diff --git a/boost/fusion/view/transform_view/detail/at_impl.hpp b/boost/fusion/view/transform_view/detail/at_impl.hpp index 5133de8b07..5c6dd8fb0d 100644 --- a/boost/fusion/view/transform_view/detail/at_impl.hpp +++ b/boost/fusion/view/transform_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_AT_IMPL_20061029_1946) #define BOOST_FUSION_AT_IMPL_20061029_1946 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/apply.hpp> #include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> #include <boost/fusion/sequence/intrinsic/at.hpp> @@ -32,6 +33,7 @@ namespace boost { namespace fusion { typedef typename boost::fusion::result_of::at<typename Seq::sequence_type, N>::type value_type; typedef typename mpl::apply<transform_type, value_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { return seq.f(boost::fusion::at<N>(seq.seq)); @@ -51,6 +53,7 @@ namespace boost { namespace fusion { typedef typename boost::fusion::result_of::at<typename Seq::sequence2_type, N>::type value2_type; typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { return seq.f(boost::fusion::at<N>(seq.seq1), boost::fusion::at<N>(seq.seq2)); diff --git a/boost/fusion/view/transform_view/detail/begin_impl.hpp b/boost/fusion/view/transform_view/detail/begin_impl.hpp index 09fe8897e5..7c40505ae2 100644 --- a/boost/fusion/view/transform_view/detail/begin_impl.hpp +++ b/boost/fusion/view/transform_view/detail/begin_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_BEGIN_IMPL_07162005_1031) #define FUSION_BEGIN_IMPL_07162005_1031 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/transform_view/transform_view_fwd.hpp> namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator<first_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { @@ -53,6 +55,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator2<first1_type, first2_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/transform_view/detail/deref_impl.hpp b/boost/fusion/view/transform_view/detail/deref_impl.hpp index dcdf04eff3..35dacbd1d7 100644 --- a/boost/fusion/view/transform_view/detail/deref_impl.hpp +++ b/boost/fusion/view/transform_view/detail/deref_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_DEREF_IMPL_07162005_1026) #define FUSION_DEREF_IMPL_07162005_1026 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/apply.hpp> #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/iterator/value_of.hpp> @@ -36,6 +37,7 @@ namespace boost { namespace fusion typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; typedef typename mpl::apply<transform_type, value_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -61,6 +63,7 @@ namespace boost { namespace fusion typedef detail::apply_transform_result<typename Iterator::transform_type> transform_type; typedef typename mpl::apply<transform_type, value1_type, value2_type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/transform_view/detail/distance_impl.hpp b/boost/fusion/view/transform_view/detail/distance_impl.hpp index 12a2d7976b..ecbc8c5dd0 100644 --- a/boost/fusion/view/transform_view/detail/distance_impl.hpp +++ b/boost/fusion/view/transform_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_13122005_2139) #define FUSION_DISTANCE_IMPL_13122005_2139 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/distance.hpp> namespace boost { namespace fusion { @@ -28,6 +29,7 @@ namespace boost { namespace fusion { struct apply : result_of::distance<typename First::first_type, typename Last::first_type> { + BOOST_FUSION_GPU_ENABLED static typename result_of::distance<typename First::first_type, typename Last::first_type>::type call(First const& first, Last const& last) @@ -45,6 +47,7 @@ namespace boost { namespace fusion { struct apply : result_of::distance<typename First::first1_type, typename Last::first1_type> { + BOOST_FUSION_GPU_ENABLED static typename result_of::distance<typename First::first1_type, typename Last::first1_type>::type call(First const& first, Last const& last) diff --git a/boost/fusion/view/transform_view/detail/end_impl.hpp b/boost/fusion/view/transform_view/detail/end_impl.hpp index 0c19403797..58e161b1f6 100644 --- a/boost/fusion/view/transform_view/detail/end_impl.hpp +++ b/boost/fusion/view/transform_view/detail/end_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_END_IMPL_07162005_1028) #define FUSION_END_IMPL_07162005_1028 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/transform_view/transform_view_fwd.hpp> namespace boost { namespace fusion @@ -33,6 +34,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator<last_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { @@ -53,6 +55,7 @@ namespace boost { namespace fusion typedef typename Sequence::transform_type transform_type; typedef transform_view_iterator2<last1_type, last2_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& s) { diff --git a/boost/fusion/view/transform_view/detail/equal_to_impl.hpp b/boost/fusion/view/transform_view/detail/equal_to_impl.hpp index b1f0ae2db7..c4c6815ec7 100644 --- a/boost/fusion/view/transform_view/detail/equal_to_impl.hpp +++ b/boost/fusion/view/transform_view/detail/equal_to_impl.hpp @@ -7,6 +7,7 @@ #if !defined(BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957) #define BOOST_FUSION_TRANSFORM_VIEW_ITERATOR_20070127_0957 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/equal_to.hpp> namespace boost { namespace fusion { diff --git a/boost/fusion/view/transform_view/detail/next_impl.hpp b/boost/fusion/view/transform_view/detail/next_impl.hpp index 5c61a6055b..cebba59526 100644 --- a/boost/fusion/view/transform_view/detail/next_impl.hpp +++ b/boost/fusion/view/transform_view/detail/next_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_NEXT_IMPL_07162005_1029) #define FUSION_NEXT_IMPL_07162005_1029 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/next.hpp> namespace boost { namespace fusion @@ -37,6 +38,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator<next_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -59,6 +61,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2<next1_type, next2_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/transform_view/detail/prior_impl.hpp b/boost/fusion/view/transform_view/detail/prior_impl.hpp index 772b3e5075..19c802c622 100644 --- a/boost/fusion/view/transform_view/detail/prior_impl.hpp +++ b/boost/fusion/view/transform_view/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_PREV_IMPL_13122005_2110) #define FUSION_PREV_IMPL_13122005_2110 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/iterator/prior.hpp> namespace boost { namespace fusion @@ -38,6 +39,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator<prior_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename Iterator::transform_type transform_type; typedef transform_view_iterator2<prior1_type, prior2_type, transform_type> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& i) { diff --git a/boost/fusion/view/transform_view/detail/value_at_impl.hpp b/boost/fusion/view/transform_view/detail/value_at_impl.hpp index 445bbd0b6c..6875cbed08 100644 --- a/boost/fusion/view/transform_view/detail/value_at_impl.hpp +++ b/boost/fusion/view/transform_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(BOOST_FUSION_VALUE_AT_IMPL_20061101_0745) #define BOOST_FUSION_VALUE_AT_IMPL_20061101_0745 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/apply.hpp> #include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> #include <boost/fusion/sequence/intrinsic/value_at.hpp> diff --git a/boost/fusion/view/transform_view/detail/value_of_impl.hpp b/boost/fusion/view/transform_view/detail/value_of_impl.hpp index 108586293e..ae20cd4ba1 100644 --- a/boost/fusion/view/transform_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/transform_view/detail/value_of_impl.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_07162005_1030) #define FUSION_VALUE_OF_IMPL_07162005_1030 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/apply.hpp> #include <boost/fusion/iterator/value_of.hpp> #include <boost/fusion/view/transform_view/detail/apply_transform_result.hpp> diff --git a/boost/fusion/view/transform_view/transform_view.hpp b/boost/fusion/view/transform_view/transform_view.hpp index 1049f11e5c..d18f49c61c 100644 --- a/boost/fusion/view/transform_view/transform_view.hpp +++ b/boost/fusion/view/transform_view/transform_view.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TRANSFORM_VIEW_07162005_1037) #define FUSION_TRANSFORM_VIEW_07162005_1037 +#include <boost/fusion/support/config.hpp> #include <boost/static_assert.hpp> #include <boost/fusion/support/detail/access.hpp> #include <boost/fusion/support/is_view.hpp> @@ -55,15 +56,20 @@ namespace boost { namespace fusion typedef Sequence2 sequence2_type; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view(Sequence1& in_seq1, Sequence2& in_seq2, F const& binop) : f(binop) , seq1(in_seq1) , seq2(in_seq2) {} + BOOST_FUSION_GPU_ENABLED first1_type first1() const { return fusion::begin(seq1); } + BOOST_FUSION_GPU_ENABLED first2_type first2() const { return fusion::begin(seq2); } + BOOST_FUSION_GPU_ENABLED last1_type last1() const { return fusion::end(seq1); } + BOOST_FUSION_GPU_ENABLED last2_type last2() const { return fusion::end(seq2); } transform_type f; @@ -94,12 +100,15 @@ namespace boost { namespace fusion typedef Sequence sequence_type; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view(Sequence& in_seq, F const& in_f) : seq(in_seq) , f(in_f) {} + BOOST_FUSION_GPU_ENABLED first_type first() const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED last_type last() const { return fusion::end(seq); } typename mpl::if_<traits::is_view<Sequence>, Sequence, Sequence&>::type seq; transform_type f; diff --git a/boost/fusion/view/transform_view/transform_view_iterator.hpp b/boost/fusion/view/transform_view/transform_view_iterator.hpp index af9d52be51..0762228fca 100644 --- a/boost/fusion/view/transform_view/transform_view_iterator.hpp +++ b/boost/fusion/view/transform_view/transform_view_iterator.hpp @@ -7,6 +7,7 @@ #if !defined(FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033) #define FUSION_TRANSFORM_VIEW_ITERATOR_07162005_1033 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/support/category_of.hpp> #include <boost/fusion/iterator/mpl/convert_iterator.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion typedef typename traits::category_of<first_type>::type category; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view_iterator(First const& in_first, F const& in_f) : first(converter::call(in_first)), f(in_f) {} @@ -60,6 +62,7 @@ namespace boost { namespace fusion typedef typename traits::category_of<first1_type>::type category; typedef F transform_type; + BOOST_FUSION_GPU_ENABLED transform_view_iterator2(First1 const& in_first1, First2 const& in_first2, F const& in_f) : first1(converter1::call(in_first1)), first2(converter2::call(in_first2)), f(in_f) {} diff --git a/boost/fusion/view/zip_view.hpp b/boost/fusion/view/zip_view.hpp index 50209a9fb0..5376f99924 100644 --- a/boost/fusion/view/zip_view.hpp +++ b/boost/fusion/view/zip_view.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0811) #define FUSION_ZIP_VIEW_23012006_0811 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator.hpp> diff --git a/boost/fusion/view/zip_view/detail/advance_impl.hpp b/boost/fusion/view/zip_view/detail/advance_impl.hpp index 2e4e1a7895..17012ac8b6 100644 --- a/boost/fusion/view/zip_view/detail/advance_impl.hpp +++ b/boost/fusion/view/zip_view/detail/advance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ADVANCE_IMPL_20061024_2021) #define FUSION_ADVANCE_IMPL_20061024_2021 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/iterator/advance.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> @@ -33,6 +34,7 @@ namespace boost { namespace fusion { }; template<typename It> + BOOST_FUSION_GPU_ENABLED typename result<poly_advance(It)>::type operator()(const It& it) const { @@ -55,6 +57,7 @@ namespace boost { namespace fusion { typedef zip_view_iterator< typename result_of::transform<typename It::iterators, detail::poly_advance<N> >::type> type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/view/zip_view/detail/at_impl.hpp b/boost/fusion/view/zip_view/detail/at_impl.hpp index 89df542f1f..f92c981725 100644 --- a/boost/fusion/view/zip_view/detail/at_impl.hpp +++ b/boost/fusion/view/zip_view/detail/at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_AT_IMPL_20060124_1933) #define FUSION_AT_IMPL_20060124_1933 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/vector.hpp> #include <boost/fusion/sequence/intrinsic/at.hpp> #include <boost/fusion/container/vector/convert.hpp> @@ -43,6 +44,7 @@ namespace boost { namespace fusion }; template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<poly_at(Seq&)>::type operator()(Seq& seq) const { @@ -50,12 +52,14 @@ namespace boost { namespace fusion } template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<poly_at(Seq const&)>::type operator()(Seq const& seq) const { return fusion::at<N>(seq); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -78,6 +82,7 @@ namespace boost { namespace fusion typename result_of::transform< typename Seq::sequences, detail::poly_at<N> >::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(Seq& seq) { diff --git a/boost/fusion/view/zip_view/detail/begin_impl.hpp b/boost/fusion/view/zip_view/detail/begin_impl.hpp index 43852d79c6..32be2c7d33 100644 --- a/boost/fusion/view/zip_view/detail/begin_impl.hpp +++ b/boost/fusion/view/zip_view/detail/begin_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_BEGIN_IMPL_20060123_2147) #define FUSION_BEGIN_IMPL_20060123_2147 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> @@ -40,6 +41,7 @@ namespace boost { namespace fusion { }; template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<poly_begin(Seq&)>::type operator()(Seq& seq) const { @@ -47,12 +49,14 @@ namespace boost { namespace fusion { } template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<poly_begin(Seq const&)>::type operator()(Seq const& seq) const { return fusion::begin(seq); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -75,6 +79,7 @@ namespace boost { namespace fusion { typename result_of::transform<typename Sequence::sequences, detail::poly_begin>::type, typename Sequence::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& sequence) { diff --git a/boost/fusion/view/zip_view/detail/deref_impl.hpp b/boost/fusion/view/zip_view/detail/deref_impl.hpp index c24e1452d5..e9f091c3b5 100644 --- a/boost/fusion/view/zip_view/detail/deref_impl.hpp +++ b/boost/fusion/view/zip_view/detail/deref_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DEREF_IMPL_20061024_1959) #define FUSION_DEREF_IMPL_20061024_1959 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/vector.hpp> #include <boost/fusion/iterator/deref.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> @@ -42,12 +43,14 @@ namespace boost { namespace fusion { }; template<typename It> + BOOST_FUSION_GPU_ENABLED typename result<poly_deref(It)>::type operator()(const It& it) const { return fusion::deref(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -69,6 +72,7 @@ namespace boost { namespace fusion { typedef typename result_of::as_vector< typename result_of::transform<typename It::iterators, detail::poly_deref>::type>::type type; + BOOST_FUSION_GPU_ENABLED static type call(It const& it) { diff --git a/boost/fusion/view/zip_view/detail/distance_impl.hpp b/boost/fusion/view/zip_view/detail/distance_impl.hpp index 8c9789330e..8beaccca44 100644 --- a/boost/fusion/view/zip_view/detail/distance_impl.hpp +++ b/boost/fusion/view/zip_view/detail/distance_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_DISTANCE_IMPL_20060124_2033) #define FUSION_DISTANCE_IMPL_20060124_2033 +#include <boost/fusion/support/config.hpp> #include <boost/mpl/eval_if.hpp> #include <boost/mpl/placeholders.hpp> #include <boost/mpl/assert.hpp> @@ -69,6 +70,7 @@ namespace boost { namespace fusion { struct apply : detail::zip_view_iterator_distance<It1, It2>::type { + BOOST_FUSION_GPU_ENABLED static typename detail::zip_view_iterator_distance<It1, It2>::type call(It1 const& /*it1*/, It2 const& /*it2*/) { diff --git a/boost/fusion/view/zip_view/detail/end_impl.hpp b/boost/fusion/view/zip_view/detail/end_impl.hpp index 6423a88f18..d57b08fbd7 100644 --- a/boost/fusion/view/zip_view/detail/end_impl.hpp +++ b/boost/fusion/view/zip_view/detail/end_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_END_IMPL_20060123_2208) #define FUSION_END_IMPL_20060123_2208 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/sequence/intrinsic/end.hpp> #include <boost/fusion/sequence/intrinsic/begin.hpp> @@ -54,6 +55,7 @@ namespace boost { namespace fusion { }; template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<endpoints(Seq&)>::type operator()(Seq& seq) const { @@ -61,12 +63,14 @@ namespace boost { namespace fusion { } template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<endpoints(Seq const&)>::type operator()(Seq const& seq) const { return fusion::advance<M>(fusion::begin(seq)); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -89,6 +93,7 @@ namespace boost { namespace fusion { typename result_of::transform<typename Sequence::sequences, detail::endpoints<typename Sequence::size> >::type, typename Sequence::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Sequence& sequence) { diff --git a/boost/fusion/view/zip_view/detail/equal_to_impl.hpp b/boost/fusion/view/zip_view/detail/equal_to_impl.hpp index 0349d814e5..6292a525f0 100644 --- a/boost/fusion/view/zip_view/detail/equal_to_impl.hpp +++ b/boost/fusion/view/zip_view/detail/equal_to_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_EQUAL_TO_IMPL_20060128_1423) #define FUSION_EQUAL_TO_IMPL_20060128_1423 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/mpl.hpp> #include <boost/mpl/lambda.hpp> diff --git a/boost/fusion/view/zip_view/detail/next_impl.hpp b/boost/fusion/view/zip_view/detail/next_impl.hpp index 56bf853d65..e9236b4200 100644 --- a/boost/fusion/view/zip_view/detail/next_impl.hpp +++ b/boost/fusion/view/zip_view/detail/next_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_NEXT_IMPL_20060124_2006) #define FUSION_NEXT_IMPL_20060124_2006 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/iterator/next.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> @@ -41,12 +42,14 @@ namespace boost { namespace fusion { }; template<typename It> + BOOST_FUSION_GPU_ENABLED typename result<poly_next(It)>::type operator()(const It& it) const { return fusion::next(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -69,6 +72,7 @@ namespace boost { namespace fusion { typename result_of::transform<typename Iterator::iterators, detail::poly_next>::type, typename Iterator::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) { diff --git a/boost/fusion/view/zip_view/detail/prior_impl.hpp b/boost/fusion/view/zip_view/detail/prior_impl.hpp index 875e7d2853..aa69229565 100644 --- a/boost/fusion/view/zip_view/detail/prior_impl.hpp +++ b/boost/fusion/view/zip_view/detail/prior_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_PRIOR_IMPL_20060124_2006) #define FUSION_PRIOR_IMPL_20060124_2006 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/iterator/prior.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> @@ -40,12 +41,14 @@ namespace boost { namespace fusion { }; template<typename It> + BOOST_FUSION_GPU_ENABLED typename result<poly_prior(It)>::type operator()(const It& it) const { return fusion::prior(it); } + BOOST_FUSION_GPU_ENABLED unused_type operator()(unused_type const&) const { return unused_type(); @@ -68,6 +71,7 @@ namespace boost { namespace fusion { typename result_of::transform<typename Iterator::iterators, detail::poly_prior>::type, typename Iterator::category> type; + BOOST_FUSION_GPU_ENABLED static type call(Iterator const& it) diff --git a/boost/fusion/view/zip_view/detail/value_at_impl.hpp b/boost/fusion/view/zip_view/detail/value_at_impl.hpp index 13e0274f6d..26d75b469e 100644 --- a/boost/fusion/view/zip_view/detail/value_at_impl.hpp +++ b/boost/fusion/view/zip_view/detail/value_at_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VALUE_AT_IMPL_20060124_2129) #define FUSION_VALUE_AT_IMPL_20060124_2129 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/vector/convert.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> #include <boost/fusion/sequence/intrinsic/value_at.hpp> @@ -38,8 +39,9 @@ namespace boost { namespace fusion { {}; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<poly_value_at(Seq)>::type operator()(Seq&&) const; #endif diff --git a/boost/fusion/view/zip_view/detail/value_of_impl.hpp b/boost/fusion/view/zip_view/detail/value_of_impl.hpp index 5571155e25..0c06e0e10c 100644 --- a/boost/fusion/view/zip_view/detail/value_of_impl.hpp +++ b/boost/fusion/view/zip_view/detail/value_of_impl.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_VALUE_OF_IMPL_20060124_2147) #define FUSION_VALUE_OF_IMPL_20060124_2147 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/container/vector/convert.hpp> #include <boost/fusion/algorithm/transformation/transform.hpp> #include <boost/fusion/iterator/value_of.hpp> @@ -37,8 +38,9 @@ namespace boost { namespace fusion {}; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template<typename It> + BOOST_FUSION_GPU_ENABLED typename result<poly_value_of(It)>::type operator()(It&&) const; #endif diff --git a/boost/fusion/view/zip_view/zip_view.hpp b/boost/fusion/view/zip_view/zip_view.hpp index e9a0222df5..4e807f732b 100644 --- a/boost/fusion/view/zip_view/zip_view.hpp +++ b/boost/fusion/view/zip_view/zip_view.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_23012006_0813) #define FUSION_ZIP_VIEW_23012006_0813 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/support/sequence_base.hpp> #include <boost/fusion/support/unused.hpp> #include <boost/fusion/iterator/equal_to.hpp> @@ -68,8 +69,9 @@ namespace boost { namespace fusion { }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template<typename Seq> + BOOST_FUSION_GPU_ENABLED typename result<seq_ref_size(Seq)>::type operator()(Seq&&) const; #endif @@ -89,8 +91,9 @@ namespace boost { namespace fusion { }; // never called, but needed for decltype-based result_of (C++0x) -#ifndef BOOST_NO_RVALUE_REFERENCES +#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES template<typename Lhs, typename Rhs> + BOOST_FUSION_GPU_ENABLED typename result<poly_min(Lhs, Rhs)>::type operator()(Lhs&&, Rhs&&) const; #endif @@ -119,6 +122,7 @@ namespace boost { namespace fusion { typedef typename fusion::result_of::as_vector<Sequences>::type sequences; typedef typename detail::min_size<real_sequences>::type size; + BOOST_FUSION_GPU_ENABLED zip_view( const Sequences& seqs) : sequences_(seqs) diff --git a/boost/fusion/view/zip_view/zip_view_iterator.hpp b/boost/fusion/view/zip_view/zip_view_iterator.hpp index bf0b8a39e5..fec50e6f18 100644 --- a/boost/fusion/view/zip_view/zip_view_iterator.hpp +++ b/boost/fusion/view/zip_view/zip_view_iterator.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_23012006_0814) #define FUSION_ZIP_VIEW_ITERATOR_23012006_0814 +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp> #include <boost/fusion/support/iterator_base.hpp> #include <boost/fusion/view/zip_view/detail/deref_impl.hpp> @@ -34,6 +35,7 @@ namespace boost { namespace fusion { typedef Traversal category; template<typename InitSeq> + BOOST_FUSION_GPU_ENABLED zip_view_iterator( const InitSeq& iterator_seq) : iterators_(iterator_seq) diff --git a/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp b/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp index d2bfff2388..7f1623090f 100644 --- a/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp +++ b/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp @@ -8,6 +8,7 @@ #if !defined(FUSION_ZIP_VIEW_ITERATOR_FWD) #define FUSION_ZIP_VIEW_ITERATOR_FWD +#include <boost/fusion/support/config.hpp> #include <boost/fusion/view/detail/strictest_traversal.hpp> namespace boost { namespace fusion { |