[Bf-blender-cvs] [406424e09d6] virtual-array-attributes: cleanup

Jacques Lucke noreply at git.blender.org
Mon Apr 12 18:27:53 CEST 2021


Commit: 406424e09d619d76ca6a007fe5b2b2641b69e3f7
Author: Jacques Lucke
Date:   Sat Apr 10 17:03:44 2021 +0200
Branches: virtual-array-attributes
https://developer.blender.org/rB406424e09d619d76ca6a007fe5b2b2641b69e3f7

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 aa222b34705..298b7a72c0b 100644
--- a/source/blender/functions/FN_generic_virtual_array.hh
+++ b/source/blender/functions/FN_generic_virtual_array.hh
@@ -321,7 +321,7 @@ template<typename T> class GVArrayForVArray : public GVArray {
 
 template<typename T> class VArrayForGVArray : public VArray<T> {
  private:
-  const GVArray *varray_;
+  const GVArray *varray_ = nullptr;
 
  public:
   VArrayForGVArray(const GVArray &varray) : VArray<T>(varray.size()), varray_(&varray)
@@ -329,7 +329,17 @@ template<typename T> class VArrayForGVArray : public VArray<T> {
     BLI_assert(varray_->type().template is<T>());
   }
 
+  VArrayForGVArray(const int64_t size) : VArray<T>(size)
+  {
+  }
+
  protected:
+  void set_varray(const GVArray &varray)
+  {
+    BLI_assert(varray.size() == this->size_);
+    varray_ = &varray;
+  }
+
   T get_impl(const int64_t index) const override
   {
     T value;
@@ -424,6 +434,17 @@ template<typename T> class GVArrayForOwnedVArray : public GVArrayForVArray<T> {
   }
 };
 
+template<typename T> class VArrayForOwnedGVArray : public VArrayForGVArray<T> {
+ private:
+  std::unique_ptr<VArray<T>> owned_varray_;
+
+ public:
+  VArrayForOwnedGVArray(std::unique_ptr<GVArray> varray)
+      : VArrayForGVArray<T>(*varray), owned_varray_(std::move(varray))
+  {
+  }
+};
+
 template<typename T, typename VArrayT>
 class GVArrayForEmbeddedVArray : public GVArrayForVArray<T> {
  private:



More information about the Bf-blender-cvs mailing list