[Bf-blender-cvs] [ab136cb1888] functions: size-value constructor for SmallVector

Jacques Lucke noreply at git.blender.org
Thu Jun 27 15:50:03 CEST 2019


Commit: ab136cb18889392d111dee788eb1707a80b942d9
Author: Jacques Lucke
Date:   Thu Jun 27 13:59:18 2019 +0200
Branches: functions
https://developer.blender.org/rBab136cb18889392d111dee788eb1707a80b942d9

size-value constructor for SmallVector

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

M	source/blender/blenlib/BLI_small_vector.hpp
M	tests/gtests/blenlib/BLI_small_vector_test.cc

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

diff --git a/source/blender/blenlib/BLI_small_vector.hpp b/source/blender/blenlib/BLI_small_vector.hpp
index 19d15e7670d..4823b1dfb1a 100644
--- a/source/blender/blenlib/BLI_small_vector.hpp
+++ b/source/blender/blenlib/BLI_small_vector.hpp
@@ -77,6 +77,16 @@ template<typename T, uint N = 4> class SmallVector {
     m_size = size;
   }
 
+  /**
+   * Create a vector filled with a specific value.
+   */
+  SmallVector(uint size, const T &value) : SmallVector()
+  {
+    this->reserve(size);
+    std::fill_n(m_elements, size, value);
+    m_size = size;
+  }
+
   /**
    * Create a vector from an initializer list.
    */
diff --git a/tests/gtests/blenlib/BLI_small_vector_test.cc b/tests/gtests/blenlib/BLI_small_vector_test.cc
index 5cb0d23461e..c38597128ec 100644
--- a/tests/gtests/blenlib/BLI_small_vector_test.cc
+++ b/tests/gtests/blenlib/BLI_small_vector_test.cc
@@ -18,6 +18,16 @@ TEST(small_vector, SizeConstructor)
   EXPECT_EQ(vec[2], 0);
 }
 
+TEST(small_vector, SizeValueConstructor)
+{
+  IntVector vec(4, 10);
+  EXPECT_EQ(vec.size(), 4);
+  EXPECT_EQ(vec[0], 10);
+  EXPECT_EQ(vec[1], 10);
+  EXPECT_EQ(vec[2], 10);
+  EXPECT_EQ(vec[3], 10);
+}
+
 TEST(small_vector, InitializerListConstructor)
 {
   IntVector vec = {1, 3, 4, 6};



More information about the Bf-blender-cvs mailing list