diff --git a/src/entt/entity/sparse_set.hpp b/src/entt/entity/sparse_set.hpp index 72eec8ad7..f72837617 100644 --- a/src/entt/entity/sparse_set.hpp +++ b/src/entt/entity/sparse_set.hpp @@ -267,7 +267,7 @@ protected: void in_place_pop(const basic_iterator it) { ENTT_ASSERT(mode == deletion_policy::in_place, "Deletion policy mismatched"); const auto entt = traits_type::to_entity(std::exchange(sparse_ref(*it), null)); - packed[static_cast(entt)] = std::exchange(free_list, traits_type::combine(entt, tombstone)); + packed[static_cast(entt)] = std::exchange(head, traits_type::combine(entt, tombstone)); } protected: @@ -296,7 +296,7 @@ protected: /*! @brief Erases all entities of a sparse set. */ virtual void pop_all() { - if(const auto prev = std::exchange(free_list, tombstone); prev == null) { + if(const auto prev = std::exchange(head, tombstone); prev == null) { for(auto first = begin(); !(first.index() < 0); ++first) { sparse_ref(*first) = null; } @@ -320,14 +320,14 @@ protected: virtual basic_iterator try_emplace(const Entity entt, const bool force_back, const void * = nullptr) { ENTT_ASSERT(!contains(entt), "Set already contains entity"); - if(auto &elem = assure_at_least(entt); free_list == null || force_back) { + if(auto &elem = assure_at_least(entt); head == null || force_back) { packed.push_back(entt); elem = traits_type::combine(static_cast(packed.size() - 1u), traits_type::to_integral(entt)); return begin(); } else { - const auto pos = static_cast(traits_type::to_entity(free_list)); - elem = traits_type::combine(traits_type::to_integral(free_list), traits_type::to_integral(entt)); - free_list = std::exchange(packed[pos], entt); + const auto pos = static_cast(traits_type::to_entity(head)); + elem = traits_type::combine(traits_type::to_integral(head), traits_type::to_integral(entt)); + head = std::exchange(packed[pos], entt); return --(end() - pos); } } @@ -384,7 +384,7 @@ public: : sparse{allocator}, packed{allocator}, info{&elem}, - free_list{tombstone}, + head{tombstone}, mode{pol} {} /** @@ -395,7 +395,7 @@ public: : sparse{std::move(other.sparse)}, packed{std::move(other.packed)}, info{other.info}, - free_list{std::exchange(other.free_list, tombstone)}, + head{std::exchange(other.head, tombstone)}, mode{other.mode} {} /** @@ -407,7 +407,7 @@ public: : sparse{std::move(other.sparse), allocator}, packed{std::move(other.packed), allocator}, info{other.info}, - free_list{std::exchange(other.free_list, tombstone)}, + head{std::exchange(other.head, tombstone)}, mode{other.mode} { ENTT_ASSERT(alloc_traits::is_always_equal::value || packed.get_allocator() == other.packed.get_allocator(), "Copying a sparse set is not allowed"); } @@ -429,7 +429,7 @@ public: sparse = std::move(other.sparse); packed = std::move(other.packed); info = other.info; - free_list = std::exchange(other.free_list, tombstone); + head = std::exchange(other.head, tombstone); mode = other.mode; return *this; } @@ -443,7 +443,7 @@ public: swap(sparse, other.sparse); swap(packed, other.packed); swap(info, other.info); - swap(free_list, other.free_list); + swap(head, other.head); swap(mode, other.mode); } @@ -530,7 +530,7 @@ public: * @return True if the sparse set is fully packed, false otherwise. */ [[nodiscard]] bool contiguous() const noexcept { - return (mode != deletion_policy::in_place) || (free_list == null); + return (mode != deletion_policy::in_place) || (head == null); } /** @@ -832,7 +832,7 @@ public: size_type from = packed.size(); for(; from && packed[from - 1u] == tombstone; --from) {} - for(auto *it = &free_list; *it != null && from; it = std::addressof(packed[traits_type::to_entity(*it)])) { + for(auto *it = &head; *it != null && from; it = std::addressof(packed[traits_type::to_entity(*it)])) { if(const size_type to = traits_type::to_entity(*it); to < from) { --from; swap_or_move(from, to); @@ -846,7 +846,7 @@ public: } } - free_list = tombstone; + head = tombstone; packed.resize(from); } } @@ -911,7 +911,7 @@ public: template void sort_n(const size_type length, Compare compare, Sort algo = Sort{}, Args &&...args) { ENTT_ASSERT(!(length > packed.size()), "Length exceeds the number of elements"); - ENTT_ASSERT((mode != deletion_policy::in_place) || (free_list == null), "Partial sorting with tombstones is not supported"); + ENTT_ASSERT((mode != deletion_policy::in_place) || (head == null), "Partial sorting with tombstones is not supported"); algo(packed.rend() - length, packed.rend(), std::move(compare), std::forward(args)...); @@ -982,7 +982,7 @@ public: pop_all(); // sanity check to avoid subtle issues due to storage classes ENTT_ASSERT((compact(), size()) == 0u, "Non-empty set"); - free_list = tombstone; + head = tombstone; packed.clear(); } @@ -1001,7 +1001,7 @@ private: sparse_container_type sparse; packed_container_type packed; const type_info *info; - entity_type free_list; + entity_type head; deletion_policy mode; };