[Bf-blender-cvs] [1352e7bb25e] virtual-array-attributes: cleanup
Jacques Lucke
noreply at git.blender.org
Mon Apr 12 18:27:54 CEST 2021
Commit: 1352e7bb25efb6d4dcda190f0bc5720c947138b9
Author: Jacques Lucke
Date: Sat Apr 10 17:15:48 2021 +0200
Branches: virtual-array-attributes
https://developer.blender.org/rB1352e7bb25efb6d4dcda190f0bc5720c947138b9
cleanup
===================================================================
M source/blender/functions/FN_generic_virtual_array.hh
===================================================================
diff --git a/source/blender/functions/FN_generic_virtual_array.hh b/source/blender/functions/FN_generic_virtual_array.hh
index b88e0b8f892..1cfaa34989c 100644
--- a/source/blender/functions/FN_generic_virtual_array.hh
+++ b/source/blender/functions/FN_generic_virtual_array.hh
@@ -337,6 +337,7 @@ template<typename T> class VArrayForGVArray : public VArray<T> {
void set_varray(const GVArray &varray)
{
BLI_assert(varray.size() == this->size_);
+ BLI_assert(varray.type().template is<T>());
varray_ = &varray;
}
@@ -372,53 +373,58 @@ template<typename T> class VArrayForGVArray : public VArray<T> {
template<typename T> class VMutableArrayForGVMutableArray : public VMutableArray<T> {
private:
- GVMutableArray &varray_;
- std::unique_ptr<GVMutableArray> owned_varray_;
+ GVMutableArray *varray_ = nullptr;
public:
VMutableArrayForGVMutableArray(GVMutableArray &varray)
- : VMutableArray<T>(varray.size()), varray_(varray)
+ : VMutableArray<T>(varray.size()), varray_(&varray)
{
- BLI_assert(varray_.type().template is<T>());
+ BLI_assert(varray.type().template is<T>());
}
- VMutableArrayForGVMutableArray(std::unique_ptr<GVMutableArray> varray)
- : VMutableArray<T>(varray->size()), varray_(*varray), owned_varray_(std::move(varray))
+ VMutableArrayForGVMutableArray(const int64_t size) : VMutableArray<T>(size)
{
}
private:
+ void set_varray(GVMutableArray &varray)
+ {
+ BLI_assert(varray.size() == this->size());
+ BLI_assert(varray.type().template is<T>());
+ varray_ = &varray;
+ }
+
T get_impl(const int64_t index) const override
{
T value;
- varray_.get(index, &value);
+ varray_->get(index, &value);
return value;
}
void set_impl(const int64_t index, T value) const override
{
- varray_.set_by_relocate(index, &value);
+ varray_->set_by_relocate(index, &value);
}
bool is_span_impl() const override
{
- return varray_.is_span();
+ return varray_->is_span();
}
Span<T> get_span_impl() const override
{
- return varray_.get_span().template typed<T>();
+ return varray_->get_span().template typed<T>();
}
bool is_single_impl() const override
{
- return varray_.is_single();
+ return varray_->is_single();
}
T get_single_impl() const override
{
T value;
- varray_.get_single(&value);
+ varray_->get_single(&value);
return value;
}
};
More information about the Bf-blender-cvs
mailing list