116 using DebugPrintF = void (*)(
const void *value, std::stringstream &ss);
117 using IsEqualF = bool (*)(
const void *
a,
const void *b);
124 bool is_trivially_destructible_;
168 const void *default_value_;
305 return is_trivially_destructible_;
333 construct_default_(
ptr);
340 construct_default_n_(
ptr, n);
347 construct_default_indices_(
ptr,
mask);
396 copy_to_initialized_(src, dst);
405 copy_to_initialized_n_(src, dst, n);
411 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
412 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
414 copy_to_initialized_indices_(src, dst,
mask);
431 copy_to_uninitialized_(src, dst);
440 copy_to_uninitialized_n_(src, dst, n);
446 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
447 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
449 copy_to_uninitialized_indices_(src, dst,
mask);
466 move_to_initialized_(src, dst);
475 move_to_initialized_n_(src, dst, n);
481 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
482 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
484 move_to_initialized_indices_(src, dst,
mask);
501 move_to_uninitialized_(src, dst);
510 move_to_uninitialized_n_(src, dst, n);
516 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
517 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
519 move_to_uninitialized_indices_(src, dst,
mask);
536 relocate_to_initialized_(src, dst);
545 relocate_to_initialized_n_(src, dst, n);
551 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
552 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
554 relocate_to_initialized_indices_(src, dst,
mask);
571 relocate_to_uninitialized_(src, dst);
580 relocate_to_uninitialized_n_(src, dst, n);
586 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(src));
587 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
589 relocate_to_uninitialized_indices_(src, dst,
mask);
602 fill_initialized_(value, dst, n);
607 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(value));
608 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
610 fill_initialized_indices_(value, dst,
mask);
623 fill_uninitialized_(value, dst, n);
628 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(value));
629 BLI_assert(
mask.size() == 0 || this->pointer_can_point_to_instance(dst));
631 fill_uninitialized_indices_(value, dst,
mask);
637 debug_print_(value, ss);
644 return is_equal_(
a, b);
659 return default_value_;
667 template<
typename T>
bool is()
const
669 return this == &CPPType::get<T>();
676 #define BUFFER_FOR_CPP_TYPE_VALUE(type, variable_name) \
677 blender::DynamicStackBuffer<64, 64> stack_buffer_for_##variable_name((type).size(), \
678 (type).alignment()); \
679 void *variable_name = stack_buffer_for_##variable_name.buffer();
MINLINE int is_power_of_2_i(int n)
void(*)(void *src, void *dst, IndexMask mask) MoveToUninitializedIndicesF
void construct_default(void *ptr) const
void(*)(const void *src, void *dst) CopyToInitializedF
void(*)(void *src, void *dst) RelocateToUninitializedF
bool pointer_has_valid_alignment(const void *ptr) const
void relocate_to_uninitialized_indices(void *src, void *dst, IndexMask mask) const
uint64_t hash(const void *value) const
void(*)(void *src, void *dst, int64_t n) RelocateToInitializedNF
void copy_to_initialized_n(const void *src, void *dst, int64_t n) const
void(*)(const void *src, void *dst, IndexMask mask) CopyToUninitializedIndicesF
void(*)(const void *src, void *dst) CopyToUninitializedF
void(*)(void *src, void *dst, int64_t n) RelocateToUninitializedNF
void(*)(void *src, void *dst, int64_t n) MoveToUninitializedNF
void copy_to_initialized_indices(const void *src, void *dst, IndexMask mask) const
StringRefNull name() const
uint64_t(*)(const void *value) HashF
void(*)(const void *value, void *dst, int64_t n) FillInitializedF
void(*)(const void *value, void *dst, IndexMask mask) FillUninitializedIndicesF
void destruct_indices(void *ptr, IndexMask mask) const
int64_t alignment() const
bool is_trivially_destructible() const
void(*)(const void *value, std::stringstream &ss) DebugPrintF
void move_to_uninitialized_n(void *src, void *dst, int64_t n) const
void(*)(void *src, void *dst) MoveToUninitializedF
void construct_default_indices(void *ptr, IndexMask mask) const
void(*)(void *ptr, int64_t n) DestructNF
void fill_initialized(const void *value, void *dst, int64_t n) const
void(*)(void *src, void *dst, int64_t n) MoveToInitializedNF
friend bool operator!=(const CPPType &a, const CPPType &b)
void(*)(void *src, void *dst, IndexMask mask) RelocateToInitializedIndicesF
void construct_default_n(void *ptr, int64_t n) const
void(*)(void *ptr, IndexMask mask) ConstructDefaultIndicesF
void fill_initialized_indices(const void *value, void *dst, IndexMask mask) const
DestructF destruct_cb() const
void relocate_to_uninitialized_n(void *src, void *dst, int64_t n) const
void debug_print(const void *value, std::stringstream &ss) const
void(*)(void *src, void *dst) RelocateToInitializedF
void copy_to_uninitialized_n(const void *src, void *dst, int64_t n) const
void relocate_to_uninitialized(void *src, void *dst) const
void copy_to_uninitialized_indices(const void *src, void *dst, IndexMask mask) const
void(*)(const void *value, void *dst, int64_t n) FillUninitializedF
void fill_uninitialized_indices(const void *value, void *dst, IndexMask mask) const
void(*)(void *ptr) DestructF
void(*)(void *ptr, int64_t n) ConstructDefaultNF
bool(*)(const void *a, const void *b) IsEqualF
void(*)(void *ptr) ConstructDefaultF
bool is_equal(const void *a, const void *b) const
void(*)(void *src, void *dst, IndexMask mask) RelocateToUninitializedIndicesF
void move_to_initialized_indices(void *src, void *dst, IndexMask mask) const
void relocate_to_initialized_indices(void *src, void *dst, IndexMask mask) const
void move_to_uninitialized_indices(void *src, void *dst, IndexMask mask) const
void move_to_uninitialized(void *src, void *dst) const
void destruct(void *ptr) const
CPPType(std::string name, int64_t size, int64_t alignment, bool is_trivially_destructible, ConstructDefaultF construct_default, ConstructDefaultNF construct_default_n, ConstructDefaultIndicesF construct_default_indices, DestructF destruct, DestructNF destruct_n, DestructIndicesF destruct_indices, CopyToInitializedF copy_to_initialized, CopyToInitializedNF copy_to_initialized_n, CopyToInitializedIndicesF copy_to_initialized_indices, CopyToUninitializedF copy_to_uninitialized, CopyToUninitializedNF copy_to_uninitialized_n, CopyToUninitializedIndicesF copy_to_uninitialized_indices, MoveToInitializedF move_to_initialized, MoveToInitializedNF move_to_initialized_n, MoveToInitializedIndicesF move_to_initialized_indices, MoveToUninitializedF move_to_uninitialized, MoveToUninitializedNF move_to_uninitialized_n, MoveToUninitializedIndicesF move_to_uninitialized_indices, RelocateToInitializedF relocate_to_initialized, RelocateToInitializedNF relocate_to_initialized_n, RelocateToInitializedIndicesF relocate_to_initialized_indices, RelocateToUninitializedF relocate_to_uninitialized, RelocateToUninitializedNF relocate_to_uninitialized_n, RelocateToUninitializedIndicesF relocate_to_uninitialized_indices, FillInitializedF fill_initialized, FillInitializedIndicesF fill_initialized_indices, FillUninitializedF fill_uninitialized, FillUninitializedIndicesF fill_uninitialized_indices, DebugPrintF debug_print, IsEqualF is_equal, HashF hash, const void *default_value)
void copy_to_initialized(const void *src, void *dst) const
static const CPPType & get()
void(*)(const void *value, void *dst, IndexMask mask) FillInitializedIndicesF
void(*)(const void *src, void *dst, int64_t n) CopyToInitializedNF
void relocate_to_initialized(void *src, void *dst) const
void move_to_initialized(void *src, void *dst) const
void(*)(void *src, void *dst, IndexMask mask) MoveToInitializedIndicesF
void destruct_n(void *ptr, int64_t n) const
void fill_uninitialized(const void *value, void *dst, int64_t n) const
void(*)(void *ptr, IndexMask mask) DestructIndicesF
void copy_to_uninitialized(const void *src, void *dst) const
const void * default_value() const
void move_to_initialized_n(void *src, void *dst, int64_t n) const
friend bool operator==(const CPPType &a, const CPPType &b)
void(*)(const void *src, void *dst, int64_t n) CopyToUninitializedNF
void relocate_to_initialized_n(void *src, void *dst, int64_t n) const
void(*)(const void *src, void *dst, IndexMask mask) CopyToInitializedIndicesF
bool pointer_can_point_to_instance(const void *ptr) const
void(*)(void *src, void *dst) MoveToInitializedF
uint64_t get_default_hash(const T &v)
_W64 unsigned int uintptr_t
unsigned __int64 uint64_t
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)