42 (
static_cast<T *
>(
ptr))->~T();
50 T *ptr_ =
static_cast<T *
>(
ptr);
51 mask.foreach_index([&](
int64_t i) { ptr_[i].~T(); });
56 *
static_cast<T *
>(dst) = *
static_cast<const T *
>(src);
60 const T *src_ =
static_cast<const T *
>(src);
61 T *dst_ =
static_cast<T *
>(dst);
63 for (
int64_t i = 0; i < n; i++) {
70 const T *src_ =
static_cast<const T *
>(src);
71 T *dst_ =
static_cast<T *
>(dst);
73 mask.foreach_index([&](
int64_t i) { dst_[i] = src_[i]; });
87 const T *src_ =
static_cast<const T *
>(src);
88 T *dst_ =
static_cast<T *
>(dst);
90 mask.foreach_index([&](
int64_t i) {
new (dst_ + i)
T(src_[i]); });
103 T *src_ =
static_cast<T *
>(src);
104 T *dst_ =
static_cast<T *
>(dst);
106 mask.foreach_index([&](
int64_t i) { dst_[i] = std::move(src_[i]); });
119 T *src_ =
static_cast<T *
>(src);
120 T *dst_ =
static_cast<T *
>(dst);
122 mask.foreach_index([&](
int64_t i) {
new (dst_ + i)
T(std::move(src_[i])); });
127 T *src_ =
static_cast<T *
>(src);
128 T *dst_ =
static_cast<T *
>(dst);
130 *dst_ = std::move(*src_);
139 T *src_ =
static_cast<T *
>(src);
140 T *dst_ =
static_cast<T *
>(dst);
143 dst_[i] = std::move(src_[i]);
150 T *src_ =
static_cast<T *
>(src);
151 T *dst_ =
static_cast<T *
>(dst);
153 new (dst_)
T(std::move(*src_));
163 T *src_ =
static_cast<T *
>(src);
164 T *dst_ =
static_cast<T *
>(dst);
167 new (dst_ + i)
T(std::move(src_[i]));
174 const T &value_ = *
static_cast<const T *
>(value);
175 T *dst_ =
static_cast<T *
>(dst);
177 for (
int64_t i = 0; i < n; i++) {
183 const T &value_ = *
static_cast<const T *
>(value);
184 T *dst_ =
static_cast<T *
>(dst);
186 mask.foreach_index([&](
int64_t i) { dst_[i] = value_; });
191 const T &value_ = *
static_cast<const T *
>(value);
192 T *dst_ =
static_cast<T *
>(dst);
194 for (
int64_t i = 0; i < n; i++) {
195 new (dst_ + i)
T(value_);
201 const T &value_ = *
static_cast<const T *
>(value);
202 T *dst_ =
static_cast<T *
>(dst);
204 mask.foreach_index([&](
int64_t i) {
new (dst_ + i)
T(value_); });
207 template<
typename T>
void debug_print_cb(
const void *value, std::stringstream &ss)
209 const T &value_ = *
static_cast<const T *
>(value);
215 const T &a_ = *
static_cast<const T *
>(
a);
216 const T &b_ = *
static_cast<const T *
>(b);
222 const T &value_ = *
static_cast<const T *
>(value);
233 using namespace cpp_type_util;
237 std::is_trivially_destructible_v<T>,
238 construct_default_cb<T>,
239 construct_default_n_cb<T>,
240 construct_default_indices_cb<T>,
243 destruct_indices_cb<T>,
244 copy_to_initialized_cb<T>,
245 copy_to_initialized_n_cb<T>,
246 copy_to_initialized_indices_cb<T>,
247 copy_to_uninitialized_cb<T>,
248 copy_to_uninitialized_n_cb<T>,
249 copy_to_uninitialized_indices_cb<T>,
250 move_to_initialized_cb<T>,
251 move_to_initialized_n_cb<T>,
252 move_to_initialized_indices_cb<T>,
253 move_to_uninitialized_cb<T>,
254 move_to_uninitialized_n_cb<T>,
255 move_to_uninitialized_indices_cb<T>,
256 relocate_to_initialized_cb<T>,
257 relocate_to_initialized_n_cb<T>,
258 relocate_to_initialized_indices_cb<T>,
259 relocate_to_uninitialized_cb<T>,
260 relocate_to_uninitialized_n_cb<T>,
261 relocate_to_uninitialized_indices_cb<T>,
262 fill_initialized_cb<T>,
263 fill_initialized_indices_cb<T>,
264 fill_uninitialized_cb<T>,
265 fill_uninitialized_indices_cb<T>,
269 static_cast<const void *
>(&default_value));
270 return std::unique_ptr<const CPPType>(
type);
275 #define MAKE_CPP_TYPE(IDENTIFIER, TYPE_NAME) \
276 template<> const blender::fn::CPPType &blender::fn::CPPType::get<TYPE_NAME>() \
278 static TYPE_NAME default_value; \
279 static std::unique_ptr<const CPPType> cpp_type = blender::fn::create_cpp_type<TYPE_NAME>( \
280 STRINGIFY(IDENTIFIER), default_value); \
284 template<> const blender::fn::CPPType &blender::fn::CPPType::get<const TYPE_NAME>() \
286 return blender::fn::CPPType::get<TYPE_NAME>(); \
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
void copy_to_initialized_n_cb(const void *src, void *dst, int64_t n)
void copy_to_uninitialized_indices_cb(const void *src, void *dst, IndexMask mask)
void move_to_uninitialized_cb(void *src, void *dst)
void relocate_to_initialized_cb(void *src, void *dst)
void relocate_to_uninitialized_n_cb(void *src, void *dst, int64_t n)
void copy_to_initialized_cb(const void *src, void *dst)
void copy_to_initialized_indices_cb(const void *src, void *dst, IndexMask mask)
void relocate_to_initialized_indices_cb(void *src, void *dst, IndexMask mask)
void copy_to_uninitialized_cb(const void *src, void *dst)
void construct_default_cb(void *ptr)
void fill_initialized_indices_cb(const void *value, void *dst, IndexMask mask)
void fill_initialized_cb(const void *value, void *dst, int64_t n)
bool is_equal_cb(const void *a, const void *b)
void destruct_cb(void *ptr)
void move_to_uninitialized_indices_cb(void *src, void *dst, IndexMask mask)
void destruct_indices_cb(void *ptr, IndexMask mask)
void move_to_initialized_indices_cb(void *src, void *dst, IndexMask mask)
void debug_print_cb(const void *value, std::stringstream &ss)
void move_to_initialized_n_cb(void *src, void *dst, int64_t n)
void move_to_uninitialized_n_cb(void *src, void *dst, int64_t n)
void relocate_to_initialized_n_cb(void *src, void *dst, int64_t n)
uint64_t hash_cb(const void *value)
void relocate_to_uninitialized_indices_cb(void *src, void *dst, IndexMask mask)
void fill_uninitialized_cb(const void *value, void *dst, int64_t n)
void destruct_n_cb(void *ptr, int64_t n)
void fill_uninitialized_indices_cb(const void *value, void *dst, IndexMask mask)
void move_to_initialized_cb(void *src, void *dst)
void construct_default_n_cb(void *ptr, int64_t n)
void construct_default_indices_cb(void *ptr, IndexMask mask)
void copy_to_uninitialized_n_cb(const void *src, void *dst, int64_t n)
void relocate_to_uninitialized_cb(void *src, void *dst)
std::unique_ptr< const CPPType > create_cpp_type(StringRef name, const T &default_value)
void default_construct_n(T *ptr, int64_t n)
void initialized_relocate_n(T *src, int64_t n, T *dst)
void initialized_move_n(T *src, int64_t n, T *dst)
uint64_t get_default_hash(const T &v)
void uninitialized_relocate_n(T *src, int64_t n, T *dst)
void destruct_n(T *ptr, int64_t n)
void uninitialized_copy_n(const T *src, int64_t n, T *dst)
void uninitialized_move_n(T *src, int64_t n, T *dst)
unsigned __int64 uint64_t
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)