group/view:

* added default constructors to input iterators
* make sure that a default constructed iterator compares equal to end()
This commit is contained in:
Michele Caini
2021-12-17 08:39:54 +01:00
parent 1d014953e3
commit 36c118922b
4 changed files with 10 additions and 0 deletions

View File

@@ -78,6 +78,8 @@ class basic_group<Entity, owned_t<>, get_t<Get...>, exclude_t<Exclude...>> final
using reference = value_type;
using iterator_category = std::input_iterator_tag;
extended_group_iterator() = default;
extended_group_iterator(typename basic_common_type::iterator from, const std::tuple<storage_type<Get> *...> &args) ENTT_NOEXCEPT
: it{from},
pools{args} {}
@@ -535,6 +537,8 @@ class basic_group<Entity, owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...
using reference = value_type;
using iterator_category = std::input_iterator_tag;
extended_group_iterator() = default;
template<typename... Other>
extended_group_iterator(typename basic_common_type::iterator from, const std::tuple<Other...> &other, const std::tuple<storage_type<Get> *...> &cpools) ENTT_NOEXCEPT
: it{from},

View File

@@ -106,6 +106,8 @@ struct extended_view_iterator final {
using reference = value_type;
using iterator_category = std::input_iterator_tag;
extended_view_iterator() = default;
extended_view_iterator(It from, std::tuple<Storage *...> storage) ENTT_NOEXCEPT
: it{from},
pools{storage} {}

View File

@@ -194,6 +194,7 @@ TEST(NonOwningGroup, Each) {
ASSERT_NE(citerable.begin(), citerable.end());
ASSERT_NO_THROW(iterable.begin()->operator=(*iterable.begin()));
ASSERT_EQ(decltype(iterable.end()){}, iterable.end());
auto it = iterable.begin();
@@ -837,6 +838,7 @@ TEST(OwningGroup, Each) {
ASSERT_NE(citerable.begin(), citerable.end());
ASSERT_NO_THROW(iterable.begin()->operator=(*iterable.begin()));
ASSERT_EQ(decltype(iterable.end()){}, iterable.end());
auto it = iterable.begin();

View File

@@ -184,6 +184,7 @@ TEST(SingleComponentView, Each) {
ASSERT_NE(citerable.begin(), citerable.end());
ASSERT_NO_THROW(iterable.begin()->operator=(*iterable.begin()));
ASSERT_EQ(decltype(iterable.end()){}, iterable.end());
auto it = iterable.begin();
@@ -688,6 +689,7 @@ TEST(MultiComponentView, Each) {
ASSERT_NE(citerable.begin(), citerable.end());
ASSERT_NO_THROW(iterable.begin()->operator=(*iterable.begin()));
ASSERT_EQ(decltype(iterable.end()){}, iterable.end());
auto it = iterable.begin();