group: basic_registry is no longer a friend class

This commit is contained in:
Michele Caini
2022-08-10 08:18:52 +02:00
parent 768f8cd74c
commit 31fb2bc2c3

View File

@@ -132,13 +132,6 @@ class basic_group<owned_t<>, get_t<Get...>, exclude_t<Exclude...>> {
template<typename Type>
static constexpr std::size_t index_of = type_list_index_v<std::remove_const_t<Type>, type_list<typename Get::value_type...>>;
/*! @brief A registry is allowed to create groups. */
friend class basic_registry<underlying_type>;
basic_group(basic_common_type &ref, Get &...gpool) noexcept
: handler{&ref},
pools{&gpool...} {}
public:
/*! @brief Underlying entity identifier. */
using entity_type = underlying_type;
@@ -157,6 +150,15 @@ public:
basic_group() noexcept
: handler{} {}
/**
* @brief Constructs a group from a set of storage classes.
* @param ref The actual entities to iterate.
* @param gpool Storage types to iterate _observed_ by the group.
*/
basic_group(basic_common_type &ref, Get &...gpool) noexcept
: handler{&ref},
pools{&gpool...} {}
/**
* @brief Returns a const reference to the underlying handler.
* @return A const reference to the underlying handler.
@@ -523,16 +525,9 @@ class basic_group<owned_t<Owned...>, get_t<Get...>, exclude_t<Exclude...>> {
using underlying_type = std::common_type_t<typename Owned::entity_type..., typename Get::entity_type..., typename Exclude::entity_type...>;
using basic_common_type = std::common_type_t<typename Owned::base_type..., typename Get::base_type..., typename Exclude::base_type...>;
/*! @brief A registry is allowed to create groups. */
friend class basic_registry<underlying_type>;
template<typename Type>
static constexpr std::size_t index_of = type_list_index_v<std::remove_const_t<Type>, type_list<typename Owned::value_type..., typename Get::value_type...>>;
basic_group(const std::size_t &extent, Owned &...opool, Get &...gpool) noexcept
: pools{&opool..., &gpool...},
length{&extent} {}
public:
/*! @brief Underlying entity identifier. */
using entity_type = underlying_type;
@@ -551,6 +546,16 @@ public:
basic_group() noexcept
: length{} {}
/**
* @brief Constructs a group from a set of storage classes.
* @param extent The actual number of entities to iterate.
* @param opool Storage types to iterate _owned_ by the group.
* @param gpool Storage types to iterate _observed_ by the group.
*/
basic_group(const std::size_t &extent, Owned &...opool, Get &...gpool) noexcept
: pools{&opool..., &gpool...},
length{&extent} {}
/**
* @brief Returns the storage for a given component type.
* @tparam Type Type of component of which to return the storage.