summaryrefslogtreecommitdiff
path: root/boost/fusion/view
diff options
context:
space:
mode:
Diffstat (limited to 'boost/fusion/view')
-rw-r--r--boost/fusion/view/detail/strictest_traversal.hpp4
-rw-r--r--boost/fusion/view/filter_view.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/begin_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/deref_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/end_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/key_of_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/filter_view/detail/size_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/value_of_data_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/filter_view/filter_view.hpp4
-rw-r--r--boost/fusion/view/filter_view/filter_view_iterator.hpp2
-rw-r--r--boost/fusion/view/flatten_view.hpp15
-rw-r--r--boost/fusion/view/flatten_view/flatten_view.hpp127
-rw-r--r--boost/fusion/view/flatten_view/flatten_view_iterator.hpp199
-rw-r--r--boost/fusion/view/iterator_range.hpp1
-rw-r--r--boost/fusion/view/iterator_range/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/iterator_range/detail/begin_impl.hpp1
-rw-r--r--boost/fusion/view/iterator_range/detail/end_impl.hpp1
-rw-r--r--boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp1
-rw-r--r--boost/fusion/view/iterator_range/detail/segmented_iterator_range.hpp21
-rw-r--r--boost/fusion/view/iterator_range/detail/segments_impl.hpp2
-rw-r--r--boost/fusion/view/iterator_range/detail/size_impl.hpp1
-rw-r--r--boost/fusion/view/iterator_range/detail/value_at_impl.hpp1
-rw-r--r--boost/fusion/view/iterator_range/iterator_range.hpp2
-rw-r--r--boost/fusion/view/joint_view.hpp1
-rw-r--r--boost/fusion/view/joint_view/detail/begin_impl.hpp4
-rw-r--r--boost/fusion/view/joint_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/joint_view/detail/deref_impl.hpp1
-rw-r--r--boost/fusion/view/joint_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/joint_view/detail/key_of_impl.hpp1
-rw-r--r--boost/fusion/view/joint_view/detail/next_impl.hpp4
-rw-r--r--boost/fusion/view/joint_view/detail/value_of_data_impl.hpp1
-rw-r--r--boost/fusion/view/joint_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/joint_view/joint_view.hpp5
-rw-r--r--boost/fusion/view/joint_view/joint_view_iterator.hpp2
-rw-r--r--boost/fusion/view/nview.hpp1
-rw-r--r--boost/fusion/view/nview/detail/advance_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/equal_to_impl.hpp1
-rw-r--r--boost/fusion/view/nview/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/nview_impl.hpp1
-rw-r--r--boost/fusion/view/nview/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/nview/detail/size_impl.hpp1
-rw-r--r--boost/fusion/view/nview/detail/value_at_impl.hpp1
-rw-r--r--boost/fusion/view/nview/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/nview/nview.hpp9
-rw-r--r--boost/fusion/view/nview/nview_iterator.hpp3
-rw-r--r--boost/fusion/view/repetitive_view.hpp1
-rw-r--r--boost/fusion/view/repetitive_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/repetitive_view/detail/next_impl.hpp4
-rw-r--r--boost/fusion/view/repetitive_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/repetitive_view/repetitive_view.hpp4
-rw-r--r--boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp4
-rw-r--r--boost/fusion/view/reverse_view.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/advance_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/begin_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/deref_data_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/end_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/key_of_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/reverse_view/detail/value_at_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/reverse_view/reverse_view.hpp4
-rw-r--r--boost/fusion/view/reverse_view/reverse_view_iterator.hpp2
-rw-r--r--boost/fusion/view/single_view.hpp1
-rw-r--r--boost/fusion/view/single_view/detail/advance_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/at_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/begin_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/deref_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/end_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/equal_to_impl.hpp1
-rw-r--r--boost/fusion/view/single_view/detail/next_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/prior_impl.hpp2
-rw-r--r--boost/fusion/view/single_view/detail/value_at_impl.hpp1
-rw-r--r--boost/fusion/view/single_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/single_view/single_view.hpp5
-rw-r--r--boost/fusion/view/single_view/single_view_iterator.hpp3
-rw-r--r--boost/fusion/view/transform_view.hpp1
-rw-r--r--boost/fusion/view/transform_view/detail/advance_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/apply_transform_result.hpp1
-rw-r--r--boost/fusion/view/transform_view/detail/at_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/begin_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/deref_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/distance_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/end_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/equal_to_impl.hpp1
-rw-r--r--boost/fusion/view/transform_view/detail/next_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/prior_impl.hpp3
-rw-r--r--boost/fusion/view/transform_view/detail/value_at_impl.hpp1
-rw-r--r--boost/fusion/view/transform_view/detail/value_of_impl.hpp1
-rw-r--r--boost/fusion/view/transform_view/transform_view.hpp9
-rw-r--r--boost/fusion/view/transform_view/transform_view_iterator.hpp3
-rw-r--r--boost/fusion/view/zip_view.hpp1
-rw-r--r--boost/fusion/view/zip_view/detail/advance_impl.hpp3
-rw-r--r--boost/fusion/view/zip_view/detail/at_impl.hpp5
-rw-r--r--boost/fusion/view/zip_view/detail/begin_impl.hpp5
-rw-r--r--boost/fusion/view/zip_view/detail/deref_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/detail/distance_impl.hpp2
-rw-r--r--boost/fusion/view/zip_view/detail/end_impl.hpp5
-rw-r--r--boost/fusion/view/zip_view/detail/equal_to_impl.hpp1
-rw-r--r--boost/fusion/view/zip_view/detail/next_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/detail/prior_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/detail/value_at_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/detail/value_of_impl.hpp4
-rw-r--r--boost/fusion/view/zip_view/zip_view.hpp8
-rw-r--r--boost/fusion/view/zip_view/zip_view_iterator.hpp2
-rw-r--r--boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp1
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 {