[Bf-blender-cvs] [579b1800534] master: BLI: add Vector/Array.fill methods

Jacques Lucke noreply at git.blender.org
Mon Jul 20 13:02:17 CEST 2020


Commit: 579b1800534fa08950278169c45db4b3be09b42c
Author: Jacques Lucke
Date:   Mon Jul 20 13:02:10 2020 +0200
Branches: master
https://developer.blender.org/rB579b1800534fa08950278169c45db4b3be09b42c

BLI: add Vector/Array.fill methods

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

M	source/blender/blenlib/BLI_array.hh
M	source/blender/blenlib/BLI_vector.hh
M	tests/gtests/blenlib/BLI_array_test.cc
M	tests/gtests/blenlib/BLI_vector_test.cc

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

diff --git a/source/blender/blenlib/BLI_array.hh b/source/blender/blenlib/BLI_array.hh
index c30893f1337..871038d7d85 100644
--- a/source/blender/blenlib/BLI_array.hh
+++ b/source/blender/blenlib/BLI_array.hh
@@ -268,6 +268,14 @@ class Array {
     return size_ == 0;
   }
 
+  /**
+   * Copies the given value to every element in the array.
+   */
+  void fill(const T &value) const
+  {
+    initialized_fill_n(data_, size_, value);
+  }
+
   /**
    * Get a pointer to the beginning of the array.
    */
diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh
index 66de8d2fbd1..11bb00c3f8d 100644
--- a/source/blender/blenlib/BLI_vector.hh
+++ b/source/blender/blenlib/BLI_vector.hh
@@ -702,6 +702,14 @@ class Vector {
     return this->first_index_of_try(value) != -1;
   }
 
+  /**
+   * Copies the given value to every element in the vector.
+   */
+  void fill(const T &value) const
+  {
+    initialized_fill_n(begin_, this->size(), value);
+  }
+
   /**
    * Get access to the underlying array.
    */
diff --git a/tests/gtests/blenlib/BLI_array_test.cc b/tests/gtests/blenlib/BLI_array_test.cc
index 4e03321454c..c01ba26ffd7 100644
--- a/tests/gtests/blenlib/BLI_array_test.cc
+++ b/tests/gtests/blenlib/BLI_array_test.cc
@@ -161,4 +161,16 @@ TEST(array, NoInitializationSizeConstructor)
   }
 }
 
+TEST(array, Fill)
+{
+  Array<int> array(5);
+  array.fill(3);
+  EXPECT_EQ(array.size(), 5u);
+  EXPECT_EQ(array[0], 3);
+  EXPECT_EQ(array[1], 3);
+  EXPECT_EQ(array[2], 3);
+  EXPECT_EQ(array[3], 3);
+  EXPECT_EQ(array[4], 3);
+}
+
 }  // namespace blender
diff --git a/tests/gtests/blenlib/BLI_vector_test.cc b/tests/gtests/blenlib/BLI_vector_test.cc
index b203970ff8e..f581626d1ad 100644
--- a/tests/gtests/blenlib/BLI_vector_test.cc
+++ b/tests/gtests/blenlib/BLI_vector_test.cc
@@ -624,4 +624,16 @@ TEST(vector, ConstructVoidPointerVector)
   EXPECT_EQ(vec.size(), 3);
 }
 
+TEST(vector, Fill)
+{
+  Vector<int> vec(5);
+  vec.fill(3);
+  EXPECT_EQ(vec.size(), 5u);
+  EXPECT_EQ(vec[0], 3);
+  EXPECT_EQ(vec[1], 3);
+  EXPECT_EQ(vec[2], 3);
+  EXPECT_EQ(vec[3], 3);
+  EXPECT_EQ(vec[4], 3);
+}
+
 }  // namespace blender



More information about the Bf-blender-cvs mailing list