[Bf-blender-cvs] [a19584a4715] master: BLI: fix constructor regression for Vector and Array

Jacques Lucke noreply at git.blender.org
Mon Jul 13 10:51:55 CEST 2020


Commit: a19584a4715444721f8f625f0b5481e67c0d97ae
Author: Jacques Lucke
Date:   Mon Jul 13 10:51:46 2020 +0200
Branches: master
https://developer.blender.org/rBa19584a4715444721f8f625f0b5481e67c0d97ae

BLI: fix constructor regression for Vector and Array

This was introduced in rB403384998a6bb5f428e15ced5.

===================================================================

M	source/blender/blenlib/BLI_array.hh
M	source/blender/blenlib/BLI_vector.hh
M	tests/gtests/blenlib/BLI_span_test.cc
M	tests/gtests/blenlib/BLI_vector_test.cc
M	tests/gtests/functions/FN_attributes_ref_test.cc
M	tests/gtests/functions/FN_multi_function_test.cc

===================================================================

diff --git a/source/blender/blenlib/BLI_array.hh b/source/blender/blenlib/BLI_array.hh
index c7a9c49c972..c411fc50f15 100644
--- a/source/blender/blenlib/BLI_array.hh
+++ b/source/blender/blenlib/BLI_array.hh
@@ -105,6 +105,10 @@ class Array {
   {
   }
 
+  Array(const std::initializer_list<T> &values) : Array(Span<T>(values))
+  {
+  }
+
   /**
    * Create a new array with the given size. All values will be default constructed. For trivial
    * types like int, default construction does nothing.
diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh
index df885588d9b..1fe38464ad0 100644
--- a/source/blender/blenlib/BLI_vector.hh
+++ b/source/blender/blenlib/BLI_vector.hh
@@ -167,6 +167,10 @@ class Vector {
   {
   }
 
+  Vector(const std::initializer_list<T> &values) : Vector(Span<T>(values))
+  {
+  }
+
   template<typename U,
            size_t N,
            typename std::enable_if_t<std::is_convertible_v<U, T>> * = nullptr>
diff --git a/tests/gtests/blenlib/BLI_span_test.cc b/tests/gtests/blenlib/BLI_span_test.cc
index ed3cce6d2cf..cb1a8b9b6f9 100644
--- a/tests/gtests/blenlib/BLI_span_test.cc
+++ b/tests/gtests/blenlib/BLI_span_test.cc
@@ -285,4 +285,14 @@ TEST(span, CastLargerSize)
   EXPECT_EQ(new_a_span.size(), 2u);
 }
 
+TEST(span, VoidPointerSpan)
+{
+  int a;
+  float b;
+  double c;
+
+  auto func1 = [](Span<void *> span) { EXPECT_EQ(span.size(), 3); };
+  func1({&a, &b, &c});
+}
+
 }  // namespace blender
diff --git a/tests/gtests/blenlib/BLI_vector_test.cc b/tests/gtests/blenlib/BLI_vector_test.cc
index 92fb12fb4e5..a020611aed6 100644
--- a/tests/gtests/blenlib/BLI_vector_test.cc
+++ b/tests/gtests/blenlib/BLI_vector_test.cc
@@ -651,4 +651,13 @@ TEST(vector, OveralignedValues)
   }
 }
 
+TEST(vector, ConstructVoidPointerVector)
+{
+  int a;
+  float b;
+  double c;
+  Vector<void *> vec = {&a, &b, &c};
+  EXPECT_EQ(vec.size(), 3);
+}
+
 }  // namespace blender
diff --git a/tests/gtests/functions/FN_attributes_ref_test.cc b/tests/gtests/functions/FN_attributes_ref_test.cc
index fee8c5dc058..1c05bb930db 100644
--- a/tests/gtests/functions/FN_attributes_ref_test.cc
+++ b/tests/gtests/functions/FN_attributes_ref_test.cc
@@ -65,8 +65,7 @@ TEST(mutable_attributes_ref, ComplexTest)
   Array<float> sizes(amount);
   Array<std::string> names(amount);
 
-  Array<void *> buffers = {
-      (void *)positions.data(), (void *)ids.data(), (void *)sizes.data(), (void *)names.data()};
+  Array<void *> buffers = {positions.data(), ids.data(), sizes.data(), names.data()};
   MutableAttributesRef attributes{info, buffers, IndexRange(1, 3)};
   EXPECT_EQ(attributes.size(), 3);
   EXPECT_EQ(attributes.info().size(), 4);
diff --git a/tests/gtests/functions/FN_multi_function_test.cc b/tests/gtests/functions/FN_multi_function_test.cc
index 2544f1c63b0..8cc8f91a300 100644
--- a/tests/gtests/functions/FN_multi_function_test.cc
+++ b/tests/gtests/functions/FN_multi_function_test.cc
@@ -369,7 +369,7 @@ TEST(multi_function, CustomMF_Convert)
   CustomMF_Convert<float, int> fn;
 
   Array<float> inputs = {5.4f, 7.1f, 9.0f};
-  Array<int> outputs{inputs.size(), 0};
+  Array<int> outputs(inputs.size(), 0);
 
   MFParamsBuilder params(fn, inputs.size());
   params.add_readonly_single_input(inputs.as_span());



More information about the Bf-blender-cvs mailing list