[Bf-blender-cvs] [bfb6ba2fa75] virtual-array-attributes: cleanup
Jacques Lucke
noreply at git.blender.org
Mon Apr 12 18:27:53 CEST 2021
Commit: bfb6ba2fa75f70aa3c60e3b25f78d65f05ccd334
Author: Jacques Lucke
Date: Sat Apr 10 17:00:00 2021 +0200
Branches: virtual-array-attributes
https://developer.blender.org/rBbfb6ba2fa75f70aa3c60e3b25f78d65f05ccd334
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 1ffc0275639..aa222b34705 100644
--- a/source/blender/functions/FN_generic_virtual_array.hh
+++ b/source/blender/functions/FN_generic_virtual_array.hh
@@ -269,7 +269,6 @@ class GVArrayForSingleValueRef : public GVArray {
template<typename T> class GVArrayForVArray : public GVArray {
private:
const VArray<T> *varray_ = nullptr;
- std::unique_ptr<VArray<T>> owned_varray_;
public:
GVArrayForVArray(const VArray<T> &varray)
@@ -277,13 +276,6 @@ template<typename T> class GVArrayForVArray : public GVArray {
{
}
- GVArrayForVArray(std::unique_ptr<VArray<T>> varray)
- : GVArray(CPPType::get<T>(), varray->size()),
- varray_(varray.get()),
- owned_varray_(std::move(varray))
- {
- }
-
/* When this constructor is used, the #set_varray method has to be used as well. */
GVArrayForVArray(const int64_t size) : GVArray(CPPType::get<T>(), size)
{
@@ -329,47 +321,41 @@ template<typename T> class GVArrayForVArray : public GVArray {
template<typename T> class VArrayForGVArray : public VArray<T> {
private:
- const GVArray &varray_;
- std::unique_ptr<GVArray> owned_varray_;
+ const GVArray *varray_;
public:
- VArrayForGVArray(const GVArray &varray) : VArray<T>(varray.size()), varray_(varray)
- {
- BLI_assert(varray_.type().template is<T>());
- }
-
- VArrayForGVArray(std::unique_ptr<GVArray> varray)
- : VArray<T>(varray->size()), varray_(*varray), owned_varray_(std::move(varray))
+ VArrayForGVArray(const GVArray &varray) : VArray<T>(varray.size()), varray_(&varray)
{
+ BLI_assert(varray_->type().template is<T>());
}
protected:
T get_impl(const int64_t index) const override
{
T value;
- varray_.get(index, &value);
+ varray_->get(index, &value);
return 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;
}
};
@@ -427,17 +413,28 @@ template<typename T> class VMutableArrayForGVMutableArray : public VMutableArray
}
};
+template<typename T> class GVArrayForOwnedVArray : public GVArrayForVArray<T> {
+ private:
+ std::unique_ptr<VArray<T>> owned_varray_;
+
+ public:
+ GVArrayForOwnedVArray(std::unique_ptr<VArray<T>> varray)
+ : GVArrayForVArray<T>(*varray), owned_varray_(std::move(varray))
+ {
+ }
+};
+
template<typename T, typename VArrayT>
class GVArrayForEmbeddedVArray : public GVArrayForVArray<T> {
private:
- VArrayT varray_;
+ VArrayT embedded_varray_;
public:
template<typename... Args>
GVArrayForEmbeddedVArray(const int64_t size, Args &&... args)
- : GVArrayForVArray<T>(size), varray_(std::forward<Args>(args)...)
+ : GVArrayForVArray<T>(size), embedded_varray_(std::forward<Args>(args)...)
{
- this->set_varray(varray_);
+ this->set_varray(embedded_varray_);
}
};
More information about the Bf-blender-cvs
mailing list