6 #include "memory/memory.hpp"
7 #include "util/for_each_ref.hpp"
8 #include "util/variadic_to_vmpl.hpp"
10 #define GCC_VERSION (__GNUC__ * 10000 \
11 + __GNUC_MINOR__ * 100 \
12 + __GNUC_PATCHLEVEL__)
17 inline static std::string to_string(std::string s)
33 constexpr
typename std::add_const<T>::type & as_const(T& t) noexcept
38 template <
typename>
struct Debug;
53 template<
size_t index,
size_t N>
struct Fill_two {
58 template<
size_t index,
size_t N>
struct Fill_one {
63 template<
typename>
struct Void
69 template<
typename T,
typename Sfinae =
void>
85 struct has_attributes<T, typename
Void<decltype( T::attributes::name[0] )>::type> : std::true_type
88 template<
typename T,
typename Sfinae =
void>
105 template<
typename T,
typename Sfinae =
void>
118 struct has_data<T, typename
Void<decltype( T::data )>::type> : std::true_type
121 template<
typename T,
typename Sfinae =
void>
153 template<
bool cond,
typename T>
158 value = std::is_same<decltype(T().data),
typename T::type>::value
173 template<
typename T,
typename Sfinae =
void>
204 template<
typename ObjType,
typename Sfinae =
void>
207 template<
typename ObjType>
208 struct has_pack<ObjType, typename
Void<decltype( ObjType::pack() )>::type> : std::true_type
224 template<
typename ObjType,
typename Sfinae =
void>
227 template<
typename ObjType>
244 template<
typename ObjType,
typename Sfinae =
void>
255 template<
typename ObjType>
256 struct has_packMem<ObjType, typename
Void<decltype( ObjType::packMem() )>::type> : std::true_type
269 template<typename T, bool = is_typedef_and_data_same<has_typedef_type<T>::value &&
has_data<T>::value,T>::value>
278 template<
typename T,
typename Sfinae =
void>
298 enum { value = index + N };
303 enum { value = index };
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
Compile time array functor needed to generate array at compile-time of type.
has_calculateMem check if a type has defined a method called calculateMem
void type
define void type