Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / fusion / view / iterator_range / detail / segmented_iterator_range.hpp
index 9bf459c..7dc4506 100644 (file)
@@ -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(