From c51b8ec86364585c4088837c603b39752065bc34 Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Wed, 29 Jun 2022 12:06:47 +0200 Subject: BLI: add Vector.append_and_get_index with rvalue parameter This makes it possible to use this method with `std::unique_ptr`. --- source/blender/blenlib/BLI_vector.hh | 10 +++++++++- source/blender/blenlib/tests/BLI_vector_test.cc | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'source') 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 int64_t append_and_get_index_as(ForwardValue &&...value) { const int64_t index = this->size(); - this->append(value); + this->append_as(std::forward(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(4)), 1); UNUSED_VARS(a, b); } -- cgit v1.2.3