view: return the best size for entity storage from size_hint

This commit is contained in:
Michele Caini
2024-10-17 09:08:50 +02:00
parent 8c4a2f79ab
commit 68adf8615c
3 changed files with 5 additions and 5 deletions

View File

@@ -330,7 +330,7 @@ public:
* @return Estimated number of entities iterated by the view.
*/
[[nodiscard]] size_type size_hint() const noexcept {
return (index != Get) ? pools[index]->size() : size_type{};
return (index != Get) ? offset() : size_type{};
}
/**

View File

@@ -1873,7 +1873,7 @@ TEST(Registry, ExcludeOnlyView) {
registry.destroy(entity[3u]);
ASSERT_EQ(view.size_hint(), 4u);
ASSERT_EQ(view.size_hint(), 3u);
ASSERT_NE(view.begin(), view.end());
ASSERT_EQ(std::distance(view.begin(), view.end()), 1);

View File

@@ -1441,7 +1441,7 @@ TEST(MultiStorageView, StorageEntity) {
ASSERT_EQ(view.front(), entity[1u]);
ASSERT_EQ(view.back(), entity[1u]);
ASSERT_EQ(view.size_hint(), 2u);
ASSERT_EQ(view.size_hint(), 1u);
ASSERT_NE(view.begin(), view.end());
ASSERT_EQ(std::distance(view.begin(), view.end()), 1);
@@ -1478,7 +1478,7 @@ TEST(MultiStorageView, StorageEntityWithExclude) {
ASSERT_EQ(view.front(), entity[1u]);
ASSERT_EQ(view.back(), entity[1u]);
ASSERT_EQ(view.size_hint(), 3u);
ASSERT_EQ(view.size_hint(), 2u);
ASSERT_NE(view.begin(), view.end());
ASSERT_EQ(std::distance(view.begin(), view.end()), 1);
@@ -1510,7 +1510,7 @@ TEST(MultiStorageView, StorageEntityExcludeOnly) {
ASSERT_EQ(view.front(), entity[1u]);
ASSERT_EQ(view.back(), entity[1u]);
ASSERT_EQ(view.size_hint(), 3u);
ASSERT_EQ(view.size_hint(), 2u);
ASSERT_NE(view.begin(), view.end());
ASSERT_EQ(std::distance(view.begin(), view.end()), 1);