6 #include "memory/memory.hpp"
12 inline static std::string to_string(std::string s)
31 template<
size_t index,
size_t N>
struct Fill_two {
35 template<
size_t index,
size_t N>
struct Fill_one {
40 template<
typename>
struct Void
46 template<
typename T,
typename Sfinae =
void>
62 struct has_attributes<T, typename
Void<decltype( T::attributes::name[0] )>::type> : std::true_type
65 template<
typename T,
typename Sfinae =
void>
82 template<
typename T,
typename Sfinae =
void>
95 struct has_data<T, typename
Void<decltype( T::data )>::type> : std::true_type
98 template<
typename T,
typename Sfinae =
void>
130 template<
bool cond,
typename T>
135 value = std::is_same<decltype(T().data),
typename T::type>::value
150 template<
typename T,
typename Sfinae =
void>
181 template<
typename ObjType,
typename Sfinae =
void>
184 template<
typename ObjType>
185 struct has_pack<ObjType, typename
Void<decltype( ObjType::pack() )>::type> : std::true_type
201 template<
typename ObjType,
typename Sfinae =
void>
204 template<
typename ObjType>
221 template<
typename ObjType,
typename Sfinae =
void>
232 template<
typename ObjType>
233 struct has_packMem<ObjType, typename
Void<decltype( ObjType::packMem() )>::type> : std::true_type
246 template<typename T, bool = is_typedef_and_data_same<has_typedef_type<T>::value &&
has_data<T>::value,T>::value>
has_Pack check if a type has defined a method called Pack
check if T::type and T.data has the same type
has_packRequest check if a type has defined a method called packRequest
is_openfpm_native check if a type is an openfpm native structure type
has_calculateMem check if a type has defined a method called calculateMem
void type
define void type