8 #ifndef SRC_PACKER_UNPACKER_HAS_PACK_AGG_HPP_ 9 #define SRC_PACKER_UNPACKER_HAS_PACK_AGG_HPP_ 11 #include "prp_all_zero.hpp" 12 #include "Vector/vect_isel.hpp" 13 #include "Vector/util.hpp" 23 #include <boost/fusion/mpl.hpp> 28 template<
class T,
size_t N ,
typename result_p ,
class vprp>
31 typedef typename boost::mpl::at<vprp,
typename boost::mpl::int_<N-1>>::type vprp_N;
32 typedef typename boost::mpl::at<typename T::type,vprp_N>::type stype;
38 typedef typename boost::mpl::bool_< crh_cond::value | result_p::value> result_n;
43 template<
class T,
typename result_p,
class vprp>
46 typedef boost::mpl::bool_<result_p::value> result;
53 template<
class T,
size_t N ,
typename result_p ,
class vprp>
56 typedef typename boost::mpl::at<vprp,
typename boost::mpl::int_<N-1>>::type vprp_N;
57 typedef typename boost::mpl::at<typename T::type,vprp_N>::type stype;
58 typedef typename boost::mpl::bool_<has_pack<stype>::value | result_p::value> result_n;
63 template<
class T,
typename result_p,
class vprp>
66 typedef boost::mpl::bool_<result_p::value> result;
70 template<
typename T,
int np>
90 template<
class T,
int ... prp>
93 typedef typename prp_all_zero<T,
sizeof...(prp) == 0,prp...>::type vprp;
100 template<
class T,
int ... prp>
103 typedef typename prp_all_zero<T,
sizeof...(prp) == 0,prp...>::type vprp;
110 template<class T, unsigned int sel = openfpm::vect_isel<T>::value == OPENFPM_NATIVE>
has_pack_agg_impl< T, number_prop< T, sizeof ...(prp)>::value, boost::mpl::bool_< false >, vprp >::result result
typedef typename to_boost_vmpl<prp...>::type vprp;
return if true the aggregate type T has a property that has a complex packing(serialization) method
has_Pack check if a type has defined a method called Pack
is_complex_agg_impl< T, number_prop< T, sizeof ...(prp)>::value, boost::mpl::bool_< false >, vprp >::result result
typedef typename to_boost_vmpl<prp...>::type vprp;
These set of classes generate an array definition at compile-time.
Generate the array specializing ArrayHolder.
return if true the aggregate type T has a property that has a complex packing(serialization) method
It return true if the object T require complex serialization.
Check this is a gpu or cpu type cell-list.
Structure to convert a variadic template into boost::mpl::vector.