[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