[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