as_group/as_view: make them transparent to the registry type

This commit is contained in:
Michele Caini
2022-05-17 12:40:47 +02:00
parent c321997591
commit 12e773f3fb

View File

@@ -13,14 +13,14 @@ namespace entt {
/**
* @brief Converts a registry to a view.
* @tparam Entity A valid entity type (see entt_traits for more details).
* @tparam Type Basic registry type.
*/
template<typename Entity>
template<typename Type>
struct as_view {
/*! @brief Underlying entity identifier. */
using entity_type = std::remove_const_t<Entity>;
/*! @brief Type of registry to convert. */
using registry_type = constness_as_t<basic_registry<entity_type>, Entity>;
using registry_type = Type;
/*! @brief Underlying entity identifier. */
using entity_type = std::remove_const_t<typename Type::entity_type>;
/**
* @brief Constructs a converter for a given registry.
@@ -44,30 +44,16 @@ private:
registry_type &reg;
};
/**
* @brief Deduction guide.
* @tparam Entity A valid entity type (see entt_traits for more details).
*/
template<typename Entity>
as_view(basic_registry<Entity> &) -> as_view<Entity>;
/**
* @brief Deduction guide.
* @tparam Entity A valid entity type (see entt_traits for more details).
*/
template<typename Entity>
as_view(const basic_registry<Entity> &) -> as_view<const Entity>;
/**
* @brief Converts a registry to a group.
* @tparam Entity A valid entity type (see entt_traits for more details).
* @tparam Type Basic registry type.
*/
template<typename Entity>
template<typename Type>
struct as_group {
/*! @brief Underlying entity identifier. */
using entity_type = std::remove_const_t<Entity>;
/*! @brief Type of registry to convert. */
using registry_type = constness_as_t<basic_registry<entity_type>, Entity>;
using registry_type = Type;
/*! @brief Underlying entity identifier. */
using entity_type = std::remove_const_t<typename Type::entity_type>;
/**
* @brief Constructs a converter for a given registry.
@@ -96,20 +82,6 @@ private:
registry_type &reg;
};
/**
* @brief Deduction guide.
* @tparam Entity A valid entity type (see entt_traits for more details).
*/
template<typename Entity>
as_group(basic_registry<Entity> &) -> as_group<Entity>;
/**
* @brief Deduction guide.
* @tparam Entity A valid entity type (see entt_traits for more details).
*/
template<typename Entity>
as_group(const basic_registry<Entity> &) -> as_group<const Entity>;
/**
* @brief Helper to create a listener that directly invokes a member function.
* @tparam Member Member function to invoke on a component of the given type.