forked from boostorg/fusion
final gpu-enabling tweaks
This commit is contained in:
@ -445,12 +445,14 @@
|
||||
(NAME, ATTRIBUTES_SEQ) \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
} \
|
||||
\
|
||||
template <typename boost_fusion_detail_Seq> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
NAME& operator=(const boost_fusion_detail_Seq& rhs) \
|
||||
{ \
|
||||
boost::fusion::copy(rhs, *this); \
|
||||
|
@ -17,6 +17,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
typedef typename result_of::value_of<It>::type type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static inline type call(It const& it)
|
||||
{
|
||||
return *it;
|
||||
@ -30,6 +31,7 @@ namespace boost { namespace fusion { namespace detail
|
||||
typedef typename result_of::value_of_data<It>::type data_type;
|
||||
typedef typename fusion::pair<key_type, data_type> type;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static inline type call(It const& it)
|
||||
{
|
||||
return type(deref_data(it));
|
||||
|
@ -37,6 +37,7 @@ namespace boost { namespace fusion
|
||||
|
||||
public:
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline explicit fused(func_const_fwd_t f = Function())
|
||||
: fnc_transformed(f)
|
||||
{ }
|
||||
|
@ -37,6 +37,7 @@ namespace boost { namespace fusion
|
||||
|
||||
public:
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline explicit fused_function_object(func_const_fwd_t f = Function())
|
||||
: fnc_transformed(f)
|
||||
{ }
|
||||
|
@ -37,6 +37,7 @@ namespace boost { namespace fusion
|
||||
|
||||
public:
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline explicit fused_procedure(func_const_fwd_t f = Function())
|
||||
: fnc_transformed(f)
|
||||
{ }
|
||||
|
@ -79,6 +79,7 @@ namespace boost { namespace fusion
|
||||
typedef typename detail::call_param<Function>::type func_const_fwd_t;
|
||||
public:
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline explicit unfused(func_const_fwd_t f = function())
|
||||
: fnc_transformed(f)
|
||||
{ }
|
||||
|
@ -63,6 +63,7 @@ namespace boost { namespace fusion
|
||||
|
||||
public:
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline explicit unfused_typed(func_const_fwd_t f = Function())
|
||||
: fnc_transformed(f)
|
||||
{ }
|
||||
@ -129,6 +130,7 @@ namespace boost
|
||||
#define M(z,i,s) \
|
||||
typename call_param<typename result_of::value_at_c<s,i>::type>::type a##i
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline typename boost::result_of<
|
||||
function_c(arg_vector_t &) >::type
|
||||
operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const
|
||||
@ -141,7 +143,8 @@ namespace boost
|
||||
return static_cast<Derived const *>(this)->fnc_transformed(arg);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED inline typename boost::result_of<
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline typename boost::result_of<
|
||||
function(arg_vector_t &) >::type
|
||||
operator()(BOOST_PP_ENUM(N,M,arg_vector_t))
|
||||
{
|
||||
|
@ -24,6 +24,7 @@ namespace boost { namespace fusion
|
||||
iterator_base_type;
|
||||
iterator_base_type iterator_base;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
iterator_adapter(iterator_base_type const& iterator_base_)
|
||||
: iterator_base(iterator_base_) {}
|
||||
|
||||
|
@ -27,7 +27,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
// read a delimiter
|
||||
template <typename IS>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
read(IS& is, char const* delim, mpl::false_ = mpl::false_())
|
||||
{
|
||||
@ -36,7 +35,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
}
|
||||
|
||||
template <typename IS>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
read(IS&, char const*, mpl::true_)
|
||||
{
|
||||
@ -46,14 +44,12 @@ namespace boost { namespace fusion { namespace detail
|
||||
struct read_sequence_loop
|
||||
{
|
||||
template <typename IS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(IS&, First const&, Last const&, mpl::true_)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename IS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(IS& is, First const& first, Last const& last, mpl::false_)
|
||||
{
|
||||
@ -69,7 +65,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
}
|
||||
|
||||
template <typename IS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(IS& is, First const& first, Last const& last)
|
||||
{
|
||||
@ -79,7 +74,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
};
|
||||
|
||||
template <typename IS, typename Sequence>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline void
|
||||
read_sequence(IS& is, Sequence& seq)
|
||||
{
|
||||
|
@ -36,7 +36,6 @@ namespace boost { namespace fusion
|
||||
namespace detail
|
||||
{
|
||||
template <typename Tag>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
int get_xalloc_index(Tag* = 0)
|
||||
{
|
||||
// each Tag will have a unique index
|
||||
@ -49,7 +48,6 @@ namespace boost { namespace fusion
|
||||
{
|
||||
struct arena
|
||||
{
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
~arena()
|
||||
{
|
||||
for (
|
||||
@ -64,7 +62,6 @@ namespace boost { namespace fusion
|
||||
std::vector<T*> data;
|
||||
};
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void attach(Stream& stream, T const& data)
|
||||
{
|
||||
static arena ar; // our arena
|
||||
@ -72,7 +69,6 @@ namespace boost { namespace fusion
|
||||
stream.pword(get_xalloc_index<Tag>()) = ar.data.back();
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static T const* get(Stream& stream)
|
||||
{
|
||||
return (T const*)stream.pword(get_xalloc_index<Tag>());
|
||||
@ -88,19 +84,16 @@ namespace boost { namespace fusion
|
||||
|
||||
typedef stream_data<Stream, Tag, string_type> stream_data_t;
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
string_ios_manip(Stream& str_)
|
||||
: stream(str_)
|
||||
{}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
void
|
||||
set(string_type const& s)
|
||||
{
|
||||
stream_data_t::attach(stream, s);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
void
|
||||
print(char const* default_) const
|
||||
{
|
||||
@ -112,7 +105,6 @@ namespace boost { namespace fusion
|
||||
stream << default_;
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
void
|
||||
read(char const* default_) const
|
||||
{
|
||||
@ -137,7 +129,6 @@ namespace boost { namespace fusion
|
||||
private:
|
||||
|
||||
template <typename Char>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
void
|
||||
check_delim(Char c) const
|
||||
{
|
||||
@ -165,35 +156,30 @@ namespace boost { namespace fusion
|
||||
|
||||
#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \
|
||||
template <typename Char, typename Traits> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<Char, Traits> \
|
||||
name(const std::basic_string<Char, Traits>& s) \
|
||||
{ \
|
||||
return detail::name##_type<Char, Traits>(s); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<char> \
|
||||
name(char const* s) \
|
||||
{ \
|
||||
return detail::name##_type<char>(std::basic_string<char>(s)); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<wchar_t> \
|
||||
name(wchar_t const* s) \
|
||||
{ \
|
||||
return detail::name##_type<wchar_t>(std::basic_string<wchar_t>(s)); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<char> \
|
||||
name(char c) \
|
||||
{ \
|
||||
return detail::name##_type<char>(std::basic_string<char>(1, c)); \
|
||||
} \
|
||||
\
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<wchar_t> \
|
||||
name(wchar_t c) \
|
||||
{ \
|
||||
@ -204,7 +190,6 @@ namespace boost { namespace fusion
|
||||
|
||||
#define STD_TUPLE_DEFINE_MANIPULATOR_FUNCTIONS(name) \
|
||||
template <typename Char, typename Traits> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<Char, Traits> \
|
||||
name(const std::basic_string<Char, Traits>& s) \
|
||||
{ \
|
||||
@ -212,7 +197,6 @@ namespace boost { namespace fusion
|
||||
} \
|
||||
\
|
||||
template <typename Char> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<Char> \
|
||||
name(Char s[]) \
|
||||
{ \
|
||||
@ -220,7 +204,6 @@ namespace boost { namespace fusion
|
||||
} \
|
||||
\
|
||||
template <typename Char> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<Char> \
|
||||
name(Char const s[]) \
|
||||
{ \
|
||||
@ -228,7 +211,6 @@ namespace boost { namespace fusion
|
||||
} \
|
||||
\
|
||||
template <typename Char> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
inline detail::name##_type<Char> \
|
||||
name(Char c) \
|
||||
{ \
|
||||
@ -247,12 +229,10 @@ namespace boost { namespace fusion
|
||||
{ \
|
||||
typedef std::basic_string<Char, Traits> string_type; \
|
||||
string_type data; \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
name##_type(const string_type& d): data(d) {} \
|
||||
}; \
|
||||
\
|
||||
template <typename Stream, typename Char, typename Traits> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
Stream& operator>>(Stream& s, const name##_type<Char,Traits>& m) \
|
||||
{ \
|
||||
string_ios_manip<name##_tag, Stream>(s).set(m.data); \
|
||||
@ -260,7 +240,6 @@ namespace boost { namespace fusion
|
||||
} \
|
||||
\
|
||||
template <typename Stream, typename Char, typename Traits> \
|
||||
BOOST_FUSION_GPU_ENABLED \
|
||||
Stream& operator<<(Stream& s, const name##_type<Char,Traits>& m) \
|
||||
{ \
|
||||
string_ios_manip<name##_tag, Stream>(s).set(m.data); \
|
||||
|
@ -27,7 +27,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
// print a delimiter
|
||||
template <typename OS>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
print(OS& os, char const* delim, mpl::false_ = mpl::false_())
|
||||
{
|
||||
@ -36,7 +35,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
}
|
||||
|
||||
template <typename OS>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
print(OS&, char const*, mpl::true_)
|
||||
{
|
||||
@ -46,14 +44,12 @@ namespace boost { namespace fusion { namespace detail
|
||||
struct print_sequence_loop
|
||||
{
|
||||
template <typename OS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(OS&, First const&, Last const&, mpl::true_)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename OS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(OS& os, First const& first, Last const& last, mpl::false_)
|
||||
{
|
||||
@ -69,7 +65,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
}
|
||||
|
||||
template <typename OS, typename First, typename Last>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
static void
|
||||
call(OS& os, First const& first, Last const& last)
|
||||
{
|
||||
@ -79,7 +74,6 @@ namespace boost { namespace fusion { namespace detail
|
||||
};
|
||||
|
||||
template <typename OS, typename Sequence>
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
inline void
|
||||
print_sequence(OS& os, Sequence const& seq)
|
||||
{
|
||||
|
@ -77,6 +77,7 @@ namespace boost { namespace fusion
|
||||
}
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
pair& operator=(pair&& rhs)
|
||||
{
|
||||
second = std::forward<Second>(rhs.second);
|
||||
|
@ -22,18 +22,21 @@ namespace boost { namespace fusion
|
||||
template <typename Sequence>
|
||||
struct sequence_base
|
||||
{
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
Sequence const&
|
||||
derived() const
|
||||
{
|
||||
return static_cast<Sequence const&>(*this);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
Sequence&
|
||||
derived()
|
||||
{
|
||||
return static_cast<Sequence&>(*this);
|
||||
}
|
||||
|
||||
BOOST_FUSION_GPU_ENABLED
|
||||
operator detail::from_sequence_convertible_type()const
|
||||
{
|
||||
return detail::from_sequence_convertible_type();
|
||||
|
Reference in New Issue
Block a user