BLI: rename SetVector to VectorSet
The structure is a set built on top of a vector and not the other way around.
This commit is contained in:
parent
79e1165bd7
commit
e73030e336
|
@ -14,15 +14,15 @@
|
|||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef __BLI_SET_VECTOR_H__
|
||||
#define __BLI_SET_VECTOR_H__
|
||||
#ifndef __BLI_VECTOR_SET_H__
|
||||
#define __BLI_VECTOR_SET_H__
|
||||
|
||||
/** \file
|
||||
* \ingroup bli
|
||||
*
|
||||
* A SetVector is a combination of a set and a vector. The elements are stored in a continuous
|
||||
* array, but every element exists at most once. The insertion order is maintained, as long as
|
||||
* there are no deletes. The expected time to check if a value is in the SetVector is O(1).
|
||||
* A VectorSet is a set built on top of a vector. The elements are stored in a continuous array,
|
||||
* but every element exists at most once. The insertion order is maintained, as long as there are
|
||||
* no deletes. The expected time to check if a value is in the VectorSet is O(1).
|
||||
*/
|
||||
|
||||
#include "BLI_hash_cxx.h"
|
||||
|
@ -49,7 +49,7 @@ namespace BLI {
|
|||
|
||||
// clang-format on
|
||||
|
||||
template<typename T, typename Allocator = GuardedAllocator> class SetVector {
|
||||
template<typename T, typename Allocator = GuardedAllocator> class VectorSet {
|
||||
private:
|
||||
static constexpr int32_t IS_EMPTY = -1;
|
||||
static constexpr int32_t IS_DUMMY = -2;
|
||||
|
@ -115,19 +115,19 @@ template<typename T, typename Allocator = GuardedAllocator> class SetVector {
|
|||
Vector<T, 4, Allocator> m_elements;
|
||||
|
||||
public:
|
||||
SetVector() = default;
|
||||
VectorSet() = default;
|
||||
|
||||
SetVector(ArrayRef<T> values)
|
||||
VectorSet(ArrayRef<T> values)
|
||||
{
|
||||
this->add_multiple(values);
|
||||
}
|
||||
|
||||
SetVector(const std::initializer_list<T> &values)
|
||||
VectorSet(const std::initializer_list<T> &values)
|
||||
{
|
||||
this->add_multiple(values);
|
||||
}
|
||||
|
||||
SetVector(const Vector<T> &values)
|
||||
VectorSet(const Vector<T> &values)
|
||||
{
|
||||
this->add_multiple(values);
|
||||
}
|
||||
|
@ -394,4 +394,4 @@ template<typename T, typename Allocator = GuardedAllocator> class SetVector {
|
|||
|
||||
} // namespace BLI
|
||||
|
||||
#endif /* __BLI_SET_VECTOR_H__ */
|
||||
#endif /* __BLI_VECTOR_SET_H__ */
|
|
@ -221,7 +221,6 @@ set(SRC
|
|||
BLI_rect.h
|
||||
BLI_scanfill.h
|
||||
BLI_set.h
|
||||
BLI_set_vector.h
|
||||
BLI_smallhash.h
|
||||
BLI_sort.h
|
||||
BLI_sort_utils.h
|
||||
|
@ -248,6 +247,7 @@ set(SRC
|
|||
BLI_utildefines_variadic.h
|
||||
BLI_uvproject.h
|
||||
BLI_vector.h
|
||||
BLI_vector_set.h
|
||||
BLI_vfontdata.h
|
||||
BLI_voronoi_2d.h
|
||||
BLI_voxel.h
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
#include "testing/testing.h"
|
||||
#include "BLI_set_vector.h"
|
||||
#include "BLI_vector_set.h"
|
||||
|
||||
using BLI::SetVector;
|
||||
using IntSetVector = SetVector<int>;
|
||||
using BLI::VectorSet;
|
||||
using IntVectorSet = VectorSet<int>;
|
||||
|
||||
TEST(set_vector, DefaultConstructor)
|
||||
TEST(vector_set, DefaultConstructor)
|
||||
{
|
||||
IntSetVector set;
|
||||
IntVectorSet set;
|
||||
EXPECT_EQ(set.size(), 0);
|
||||
}
|
||||
|
||||
TEST(set_vector, InitializerListConstructor_WithoutDuplicates)
|
||||
TEST(vector_set, InitializerListConstructor_WithoutDuplicates)
|
||||
{
|
||||
IntSetVector set = {1, 4, 5};
|
||||
IntVectorSet set = {1, 4, 5};
|
||||
EXPECT_EQ(set.size(), 3);
|
||||
EXPECT_EQ(set[0], 1);
|
||||
EXPECT_EQ(set[1], 4);
|
||||
EXPECT_EQ(set[2], 5);
|
||||
}
|
||||
|
||||
TEST(set_vector, InitializerListConstructor_WithDuplicates)
|
||||
TEST(vector_set, InitializerListConstructor_WithDuplicates)
|
||||
{
|
||||
IntSetVector set = {1, 3, 3, 2, 1, 5};
|
||||
IntVectorSet set = {1, 3, 3, 2, 1, 5};
|
||||
EXPECT_EQ(set.size(), 4);
|
||||
EXPECT_EQ(set[0], 1);
|
||||
EXPECT_EQ(set[1], 3);
|
||||
|
@ -29,35 +29,35 @@ TEST(set_vector, InitializerListConstructor_WithDuplicates)
|
|||
EXPECT_EQ(set[3], 5);
|
||||
}
|
||||
|
||||
TEST(set_vector, Copy)
|
||||
TEST(vector_set, Copy)
|
||||
{
|
||||
IntSetVector set1 = {1, 2, 3};
|
||||
IntSetVector set2 = set1;
|
||||
IntVectorSet set1 = {1, 2, 3};
|
||||
IntVectorSet set2 = set1;
|
||||
EXPECT_EQ(set1.size(), 3);
|
||||
EXPECT_EQ(set2.size(), 3);
|
||||
EXPECT_EQ(set1.index(2), 1);
|
||||
EXPECT_EQ(set2.index(2), 1);
|
||||
}
|
||||
|
||||
TEST(set_vector, Move)
|
||||
TEST(vector_set, Move)
|
||||
{
|
||||
IntSetVector set1 = {1, 2, 3};
|
||||
IntSetVector set2 = std::move(set1);
|
||||
IntVectorSet set1 = {1, 2, 3};
|
||||
IntVectorSet set2 = std::move(set1);
|
||||
EXPECT_EQ(set1.size(), 0);
|
||||
EXPECT_EQ(set2.size(), 3);
|
||||
}
|
||||
|
||||
TEST(set_vector, AddNewIncreasesSize)
|
||||
TEST(vector_set, AddNewIncreasesSize)
|
||||
{
|
||||
IntSetVector set;
|
||||
IntVectorSet set;
|
||||
EXPECT_EQ(set.size(), 0);
|
||||
set.add(5);
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
}
|
||||
|
||||
TEST(set_vector, AddExistingDoesNotIncreaseSize)
|
||||
TEST(vector_set, AddExistingDoesNotIncreaseSize)
|
||||
{
|
||||
IntSetVector set;
|
||||
IntVectorSet set;
|
||||
EXPECT_EQ(set.size(), 0);
|
||||
set.add(5);
|
||||
EXPECT_EQ(set.size(), 1);
|
||||
|
@ -65,26 +65,26 @@ TEST(set_vector, AddExistingDoesNotIncreaseSize)
|
|||
EXPECT_EQ(set.size(), 1);
|
||||
}
|
||||
|
||||
TEST(set_vector, Index)
|
||||
TEST(vector_set, Index)
|
||||
{
|
||||
IntSetVector set = {3, 6, 4};
|
||||
IntVectorSet set = {3, 6, 4};
|
||||
EXPECT_EQ(set.index(6), 1);
|
||||
EXPECT_EQ(set.index(3), 0);
|
||||
EXPECT_EQ(set.index(4), 2);
|
||||
}
|
||||
|
||||
TEST(set_vector, IndexTry)
|
||||
TEST(vector_set, IndexTry)
|
||||
{
|
||||
IntSetVector set = {3, 6, 4};
|
||||
IntVectorSet set = {3, 6, 4};
|
||||
EXPECT_EQ(set.index_try(5), -1);
|
||||
EXPECT_EQ(set.index_try(3), 0);
|
||||
EXPECT_EQ(set.index_try(6), 1);
|
||||
EXPECT_EQ(set.index_try(2), -1);
|
||||
}
|
||||
|
||||
TEST(set_vector, Remove)
|
||||
TEST(vector_set, Remove)
|
||||
{
|
||||
IntSetVector set = {4, 5, 6, 7};
|
||||
IntVectorSet set = {4, 5, 6, 7};
|
||||
EXPECT_EQ(set.size(), 4);
|
||||
set.remove(5);
|
||||
EXPECT_EQ(set.size(), 3);
|
||||
|
@ -102,9 +102,9 @@ TEST(set_vector, Remove)
|
|||
EXPECT_EQ(set.size(), 0);
|
||||
}
|
||||
|
||||
TEST(set_vector, UniquePtrValue)
|
||||
TEST(vector_set, UniquePtrValue)
|
||||
{
|
||||
SetVector<std::unique_ptr<int>> set;
|
||||
VectorSet<std::unique_ptr<int>> set;
|
||||
set.add_new(std::unique_ptr<int>(new int()));
|
||||
set.add(std::unique_ptr<int>(new int()));
|
||||
set.index_try(std::unique_ptr<int>(new int()));
|
|
@ -61,7 +61,6 @@ BLENDER_TEST(BLI_memiter "bf_blenlib")
|
|||
BLENDER_TEST(BLI_path_util "${BLI_path_util_extra_libs}")
|
||||
BLENDER_TEST(BLI_polyfill_2d "bf_blenlib")
|
||||
BLENDER_TEST(BLI_set "bf_blenlib")
|
||||
BLENDER_TEST(BLI_set_vector "bf_blenlib")
|
||||
BLENDER_TEST(BLI_stack "bf_blenlib")
|
||||
BLENDER_TEST(BLI_stack_cxx "bf_blenlib")
|
||||
BLENDER_TEST(BLI_string "bf_blenlib")
|
||||
|
@ -70,6 +69,7 @@ BLENDER_TEST(BLI_string_ref "bf_blenlib")
|
|||
BLENDER_TEST(BLI_string_utf8 "bf_blenlib")
|
||||
BLENDER_TEST(BLI_task "bf_blenlib;bf_intern_numaapi")
|
||||
BLENDER_TEST(BLI_vector "bf_blenlib")
|
||||
BLENDER_TEST(BLI_vector_set "bf_blenlib")
|
||||
|
||||
BLENDER_TEST_PERFORMANCE(BLI_ghash_performance "bf_blenlib")
|
||||
BLENDER_TEST_PERFORMANCE(BLI_task_performance "bf_blenlib")
|
||||
|
|
Loading…
Reference in New Issue