Browse Source

group: make non-owning groups work with their handlers

Michele Caini 3 years ago
parent
commit
3417d66b2b
1 changed files with 20 additions and 20 deletions
  1. 20 20
      src/entt/entity/group.hpp

+ 20 - 20
src/entt/entity/group.hpp

@@ -222,16 +222,16 @@ public:
 
 
     /*! @brief Default constructor to use to create empty, invalid groups. */
     /*! @brief Default constructor to use to create empty, invalid groups. */
     basic_group() noexcept
     basic_group() noexcept
-        : set{} {}
+        : descriptor{} {}
 
 
     /**
     /**
      * @brief Constructs a group from a set of storage classes.
      * @brief Constructs a group from a set of storage classes.
-     * @param ref The actual entities to iterate.
+     * @param ref A reference to a group handler.
      * @param gpool The storage for the _observed_ types to iterate.
      * @param gpool The storage for the _observed_ types to iterate.
      * @param epool The storage for the types used to filter the group.
      * @param epool The storage for the types used to filter the group.
      */
      */
-    basic_group(basic_common_type &ref, Get &...gpool, Exclude &...epool) noexcept
-        : set{&ref},
+    basic_group(handler &ref, Get &...gpool, Exclude &...epool) noexcept
+        : descriptor{&ref},
           pools{&gpool...},
           pools{&gpool...},
           filter{&epool...} {}
           filter{&epool...} {}
 
 
@@ -240,7 +240,7 @@ public:
      * @return A const reference to the underlying handler.
      * @return A const reference to the underlying handler.
      */
      */
     [[nodiscard]] const base_type &handle() const noexcept {
     [[nodiscard]] const base_type &handle() const noexcept {
-        return *set;
+        return *descriptor;
     }
     }
 
 
     /**
     /**
@@ -274,7 +274,7 @@ public:
      * @return Number of entities that are part of the group.
      * @return Number of entities that are part of the group.
      */
      */
     [[nodiscard]] size_type size() const noexcept {
     [[nodiscard]] size_type size() const noexcept {
-        return *this ? set->size() : size_type{};
+        return *this ? descriptor->size() : size_type{};
     }
     }
 
 
     /**
     /**
@@ -283,13 +283,13 @@ public:
      * @return Capacity of the group.
      * @return Capacity of the group.
      */
      */
     [[nodiscard]] size_type capacity() const noexcept {
     [[nodiscard]] size_type capacity() const noexcept {
-        return *this ? set->capacity() : size_type{};
+        return *this ? descriptor->capacity() : size_type{};
     }
     }
 
 
     /*! @brief Requests the removal of unused capacity. */
     /*! @brief Requests the removal of unused capacity. */
     void shrink_to_fit() {
     void shrink_to_fit() {
         if(*this) {
         if(*this) {
-            set->shrink_to_fit();
+            descriptor->shrink_to_fit();
         }
         }
     }
     }
 
 
@@ -298,7 +298,7 @@ public:
      * @return True if the group is empty, false otherwise.
      * @return True if the group is empty, false otherwise.
      */
      */
     [[nodiscard]] bool empty() const noexcept {
     [[nodiscard]] bool empty() const noexcept {
-        return !*this || set->empty();
+        return !*this || descriptor->empty();
     }
     }
 
 
     /**
     /**
@@ -310,7 +310,7 @@ public:
      * @return An iterator to the first entity of the group.
      * @return An iterator to the first entity of the group.
      */
      */
     [[nodiscard]] iterator begin() const noexcept {
     [[nodiscard]] iterator begin() const noexcept {
-        return *this ? set->begin() : iterator{};
+        return *this ? descriptor->begin() : iterator{};
     }
     }
 
 
     /**
     /**
@@ -324,7 +324,7 @@ public:
      * group.
      * group.
      */
      */
     [[nodiscard]] iterator end() const noexcept {
     [[nodiscard]] iterator end() const noexcept {
-        return *this ? set->end() : iterator{};
+        return *this ? descriptor->end() : iterator{};
     }
     }
 
 
     /**
     /**
@@ -336,7 +336,7 @@ public:
      * @return An iterator to the first entity of the reversed group.
      * @return An iterator to the first entity of the reversed group.
      */
      */
     [[nodiscard]] reverse_iterator rbegin() const noexcept {
     [[nodiscard]] reverse_iterator rbegin() const noexcept {
-        return *this ? set->rbegin() : reverse_iterator{};
+        return *this ? descriptor->rbegin() : reverse_iterator{};
     }
     }
 
 
     /**
     /**
@@ -351,7 +351,7 @@ public:
      * reversed group.
      * reversed group.
      */
      */
     [[nodiscard]] reverse_iterator rend() const noexcept {
     [[nodiscard]] reverse_iterator rend() const noexcept {
-        return *this ? set->rend() : reverse_iterator{};
+        return *this ? descriptor->rend() : reverse_iterator{};
     }
     }
 
 
     /**
     /**
@@ -381,7 +381,7 @@ public:
      * iterator otherwise.
      * iterator otherwise.
      */
      */
     [[nodiscard]] iterator find(const entity_type entt) const noexcept {
     [[nodiscard]] iterator find(const entity_type entt) const noexcept {
-        const auto it = *this ? set->find(entt) : iterator{};
+        const auto it = *this ? descriptor->find(entt) : iterator{};
         return it != end() && *it == entt ? it : end();
         return it != end() && *it == entt ? it : end();
     }
     }
 
 
@@ -399,7 +399,7 @@ public:
      * @return True if the group is properly initialized, false otherwise.
      * @return True if the group is properly initialized, false otherwise.
      */
      */
     [[nodiscard]] explicit operator bool() const noexcept {
     [[nodiscard]] explicit operator bool() const noexcept {
-        return set != nullptr;
+        return descriptor != nullptr;
     }
     }
 
 
     /**
     /**
@@ -408,7 +408,7 @@ public:
      * @return True if the group contains the given entity, false otherwise.
      * @return True if the group contains the given entity, false otherwise.
      */
      */
     [[nodiscard]] bool contains(const entity_type entt) const noexcept {
     [[nodiscard]] bool contains(const entity_type entt) const noexcept {
-        return *this && set->contains(entt);
+        return *this && descriptor->contains(entt);
     }
     }
 
 
     /**
     /**
@@ -528,7 +528,7 @@ public:
         if(*this) {
         if(*this) {
             if constexpr(sizeof...(Type) == 0) {
             if constexpr(sizeof...(Type) == 0) {
                 static_assert(std::is_invocable_v<Compare, const entity_type, const entity_type>, "Invalid comparison function");
                 static_assert(std::is_invocable_v<Compare, const entity_type, const entity_type>, "Invalid comparison function");
-                set->sort(std::move(compare), std::move(algo), std::forward<Args>(args)...);
+                descriptor->sort(std::move(compare), std::move(algo), std::forward<Args>(args)...);
             } else {
             } else {
                 auto comp = [this, &compare](const entity_type lhs, const entity_type rhs) {
                 auto comp = [this, &compare](const entity_type lhs, const entity_type rhs) {
                     if constexpr(sizeof...(Type) == 1) {
                     if constexpr(sizeof...(Type) == 1) {
@@ -538,7 +538,7 @@ public:
                     }
                     }
                 };
                 };
 
 
-                set->sort(std::move(comp), std::move(algo), std::forward<Args>(args)...);
+                descriptor->sort(std::move(comp), std::move(algo), std::forward<Args>(args)...);
             }
             }
         }
         }
     }
     }
@@ -562,12 +562,12 @@ public:
     template<typename Type>
     template<typename Type>
     void sort() const {
     void sort() const {
         if(*this) {
         if(*this) {
-            set->respect(*std::get<index_of<Type>>(pools));
+            descriptor->respect(*std::get<index_of<Type>>(pools));
         }
         }
     }
     }
 
 
 private:
 private:
-    base_type *set;
+    handler *descriptor;
     std::tuple<Get *...> pools;
     std::tuple<Get *...> pools;
     std::tuple<Exclude *...> filter;
     std::tuple<Exclude *...> filter;
 };
 };