[Bf-blender-cvs] [c51b8ec8636] master: BLI: add Vector.append_and_get_index with rvalue parameter

Jacques Lucke noreply at git.blender.org
Wed Jun 29 12:07:12 CEST 2022


Commit: c51b8ec86364585c4088837c603b39752065bc34
Author: Jacques Lucke
Date:   Wed Jun 29 12:06:47 2022 +0200
Branches: master
https://developer.blender.org/rBc51b8ec86364585c4088837c603b39752065bc34

BLI: add Vector.append_and_get_index with rvalue parameter

This makes it possible to use this method with `std::unique_ptr`.

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

M	source/blender/blenlib/BLI_vector.hh
M	source/blender/blenlib/tests/BLI_vector_test.cc

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

diff --git a/source/blender/blenlib/BLI_vector.hh b/source/blender/blenlib/BLI_vector.hh
index c23d846d277..1f5f97d754d 100644
--- a/source/blender/blenlib/BLI_vector.hh
+++ b/source/blender/blenlib/BLI_vector.hh
@@ -450,9 +450,17 @@ class Vector {
    * added value.
    */
   int64_t append_and_get_index(const T &value)
+  {
+    return this->append_and_get_index_as(value);
+  }
+  int64_t append_and_get_index(T &&value)
+  {
+    return this->append_and_get_index_as(std::move(value));
+  }
+  template<typename... ForwardValue> int64_t append_and_get_index_as(ForwardValue &&...value)
   {
     const int64_t index = this->size();
-    this->append(value);
+    this->append_as(std::forward<ForwardValue>(value)...);
     return index;
   }
 
diff --git a/source/blender/blenlib/tests/BLI_vector_test.cc b/source/blender/blenlib/tests/BLI_vector_test.cc
index 29b6d2b41fe..3a12fe14de3 100644
--- a/source/blender/blenlib/tests/BLI_vector_test.cc
+++ b/source/blender/blenlib/tests/BLI_vector_test.cc
@@ -264,7 +264,8 @@ TEST(vector, AppendAndGetIndex)
   EXPECT_EQ(vec.append_and_get_index(10), 1);
   EXPECT_EQ(vec.append_and_get_index(10), 2);
   vec.append(10);
-  EXPECT_EQ(vec.append_and_get_index(10), 4);
+  int value = 10;
+  EXPECT_EQ(vec.append_and_get_index(value), 4);
 }
 
 TEST(vector, AppendNonDuplicates)
@@ -479,6 +480,7 @@ TEST(vector, UniquePtrValue)
   vec.remove_and_reorder(0);
   vec.remove(0);
   EXPECT_EQ(vec.size(), 1);
+  EXPECT_EQ(vec.append_and_get_index(std::make_unique<int>(4)), 1);
 
   UNUSED_VARS(a, b);
 }



More information about the Bf-blender-cvs mailing list