8 #ifndef OPENFPM_DATA_SRC_UTIL_AGGREGATE_HPP_
9 #define OPENFPM_DATA_SRC_UTIL_AGGREGATE_HPP_
11 #include <boost/fusion/container/vector.hpp>
12 #include <Packer_Unpacker/has_pack_agg.hpp>
16 #define SE3_MAX_PROP(i) i+2
17 #define SE3_ADD_PROP(i) size_t[i+1],size_t
18 #define SE3_SUB_MAX_PROP -2
27 template<
typename ... list>
30 typedef boost::fusion::vector<list... , SE3_ADD_PROP(
sizeof...(list))>
type;
31 typedef boost::fusion::vector<list... >
type_real;
40 template<
unsigned int i>
typename boost::mpl::at<type,boost::mpl::int_<i>>
::type &
get()
42 return boost::fusion::at_c<i>(
data);
59 template<
unsigned int i>
const typename boost::mpl::at<type,boost::mpl::int_<i>>
::type &
get()
const
61 return boost::fusion::at_c<i>(
data);
66 static const unsigned int max_prop = boost::mpl::size<type>::type::value;
67 static const unsigned int max_prop_real = boost::mpl::size<type>::type::value + SE3_SUB_MAX_PROP;
80 template<
typename ... list>
84 typedef boost::fusion::vector<list...>
type;
97 template<
unsigned int i>
typename boost::mpl::at<type,boost::mpl::int_<i>>
::type &
get()
99 return boost::fusion::at_c<i>(
data);
116 template<
unsigned int i>
const typename boost::mpl::at<type,boost::mpl::int_<i>>
::type &
get()
const
118 return boost::fusion::at_c<i>(
data);
123 static const unsigned int max_prop = boost::mpl::size<type>::type::value;
124 static const unsigned int max_prop_real = boost::mpl::size<type>::type::value;
boost::fusion::vector< list...> type_real
real internal type containing the data
static bool noPointers()
it return false if this aggregate has no pointers
boost::fusion::vector< list...> type
internal type containing the data
It return true if the object T require complex serialization.
aggregate of properties, from a list of object if create a struct that follow the OPENFPM native stru...