group: added ::handle to non-owning groups

This commit is contained in:
Michele Caini
2021-12-10 08:25:46 +01:00
parent 4347ebcee2
commit f741fe48a1
2 changed files with 27 additions and 0 deletions

View File

@@ -167,6 +167,14 @@ public:
basic_group() ENTT_NOEXCEPT
: handler{} {}
/**
* @brief Returns a const reference to the underlying handler.
* @return A const reference to the underlying handler.
*/
const base_type &handle() const ENTT_NOEXCEPT {
return *handler;
}
/**
* @brief Returns the storage for a given component type.
* @tparam Comp Type of component of which to return the storage.

View File

@@ -80,6 +80,25 @@ TEST(NonOwningGroup, Functionalities) {
ASSERT_FALSE(invalid);
}
TEST(NonOwningGroup, Handle) {
entt::registry registry;
const auto entity = registry.create();
auto group = registry.group(entt::get<int, char>);
auto &&handle = group.handle();
ASSERT_TRUE(handle.empty());
ASSERT_FALSE(handle.contains(entity));
ASSERT_EQ(&handle, &group.handle());
registry.emplace<int>(entity);
registry.emplace<char>(entity);
ASSERT_FALSE(handle.empty());
ASSERT_TRUE(handle.contains(entity));
ASSERT_EQ(&handle, &group.handle());
}
TEST(NonOwningGroup, Invalid) {
entt::registry registry{};
auto group = std::as_const(registry).group_if_exists(entt::get<const empty_type, const int>);