BLI: add Vector/Array.fill methods

This commit is contained in:
2020-07-20 13:02:10 +02:00
parent 8cbbdedaf4
commit 579b180053
4 changed files with 40 additions and 0 deletions

View File

@@ -268,6 +268,14 @@ class Array {
return size_ == 0; 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. * Get a pointer to the beginning of the array.
*/ */

View File

@@ -702,6 +702,14 @@ class Vector {
return this->first_index_of_try(value) != -1; 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. * Get access to the underlying array.
*/ */

View File

@@ -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 } // namespace blender

View File

@@ -624,4 +624,16 @@ TEST(vector, ConstructVoidPointerVector)
EXPECT_EQ(vec.size(), 3); 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 } // namespace blender