116 return this->
get(index);
199 return this->
size_ == 1;
226 template<
typename T,
typename Func>
252 template<
typename T1,
typename T2,
typename Func>
260 const bool is_span1 = varray1.
is_span();
261 const bool is_span2 = varray2.
is_span();
262 const bool is_single1 = varray1.
is_single();
263 const bool is_single2 = varray2.
is_single();
264 if (is_span1 && is_span2) {
267 func(varray1_span, varray2_span);
270 if (is_span1 && is_single2) {
273 func(varray1_span, varray2_single);
276 if (is_single1 && is_span2) {
279 func(varray1_single, varray2_span);
282 if (is_single1 && is_single2) {
285 func(varray1_single, varray2_single);
292 func(varray1, varray2);
#define BLI_assert_unreachable()
T get_single_impl() const override
VArrayForSingle(T value, const int64_t size)
bool is_span_impl() const override
bool is_single_impl() const override
T get_impl(const int64_t UNUSED(index)) const override
Span< T > get_span_impl() const override
bool is_span_impl() const override
VArrayForSpan(const Span< T > data)
Span< T > get_span_impl() const override
T get_impl(const int64_t index) const override
T operator[](const int64_t index) const
virtual T get_single_impl() const
virtual Span< T > get_span_impl() const
VArray(const int64_t size)
virtual T get_impl(const int64_t index) const =0
virtual ~VArray()=default
T get(const int64_t index) const
Span< T > get_span() const
virtual bool is_span_impl() const
virtual bool is_single_impl() const
void devirtualize_varray(const VArray< T > &varray, const Func &func, bool enable=true)
void devirtualize_varray2(const VArray< T1 > &varray1, const VArray< T2 > &varray2, const Func &func, bool enable=true)