31 template <
class... Properties>
33 using memory_space =
typename Kokkos::View<
char*, Properties...>::memory_space;
38 using hash_type = ippl::detail::hash_type<MemorySpace>;
39 using memory_space = MemorySpace;
40 using execution_space =
typename memory_space::execution_space;
42 template <
typename... Properties>
43 using with_properties =
typename WithMemSpace<Properties...>::type;
47 const char* default_name =
"UNNAMED_attribute";
48 for (
size_t i = 0; i < ATTRIB_NAME_MAX_LEN && default_name[i] !=
'\0'; ++i) {
49 name_m[i] = default_name[i];
50 if (i + 1 < ATTRIB_NAME_MAX_LEN) {
56 virtual void set_name(
const std::string& name_) = 0;
58 virtual std::string get_name()
const = 0;
62 virtual void alloc(size_type) = 0;
67 virtual void create(size_type,
bool non_destructive =
false) = 0;
69 virtual void destroy(
const hash_type&,
const hash_type&, size_type) = 0;
70 virtual size_type packedSize(
const size_type)
const = 0;
72 virtual void pack(
const hash_type&) = 0;
74 virtual void unpack(size_type) = 0;
80 virtual size_type size()
const = 0;
84 void setParticleCount(size_type& num) { localNum_mp = # }
85 size_type getParticleCount()
const {
return *localNum_mp; }
87 virtual void applyPermutation(
const hash_type&) = 0;
88 virtual void internalCopy(
const hash_type&) = 0;
91 const size_type* localNum_mp;
92 char name_m[ATTRIB_NAME_MAX_LEN];
Definition ParticleAttribBase.h:30