From 85b1e57d8d57453e99f1e108d27ae9f8fa3e5d19 Mon Sep 17 00:00:00 2001 From: skypjack Date: Thu, 2 Feb 2023 18:27:14 +0100 Subject: [PATCH] sparse_set: drop fast_compact, expect full clear --- TODO | 1 - src/entt/entity/sparse_set.hpp | 11 ++++------- src/entt/entity/storage.hpp | 4 ---- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/TODO b/TODO index 653e9b55d..6ce96b336 100644 --- a/TODO +++ b/TODO @@ -20,7 +20,6 @@ TODO (high prio): * doc: exclude only views, storage entity, bump entities * deprecate/remove registry reserve, capacity, empty, data, destroyed, release and so on * test exclude-only views -* drop fast_compact, make clear do clear for real :) WIP: * get rid of observers, storage based views made them pointless - document alternatives diff --git a/src/entt/entity/sparse_set.hpp b/src/entt/entity/sparse_set.hpp index 125ba755d..71f17fad8 100644 --- a/src/entt/entity/sparse_set.hpp +++ b/src/entt/entity/sparse_set.hpp @@ -274,13 +274,6 @@ protected: packed[static_cast(entt)] = std::exchange(free_list, traits_type::combine(entt, tombstone)); } - /*! @brief Compact function for empty sparse sets. */ - void fast_compact() { - ENTT_ASSERT((compact(), size()) == 0u, "Non-empty set"); - packed.clear(); - free_list = tombstone; - } - protected: /** * @brief Erases entities from a sparse set. @@ -993,6 +986,10 @@ public: /*! @brief Clears a sparse set. */ void clear() { pop_all(); + // sanity check to avoid subtle issues due to storage classes + ENTT_ASSERT((compact(), size()) == 0u, "Non-empty set"); + free_list = tombstone; + packed.clear(); } /** diff --git a/src/entt/entity/storage.hpp b/src/entt/entity/storage.hpp index 88fd9bc1e..15e4d7163 100644 --- a/src/entt/entity/storage.hpp +++ b/src/entt/entity/storage.hpp @@ -367,10 +367,6 @@ protected: std::destroy_at(std::addressof(element_at(static_cast(first.index())))); } } - - if constexpr(traits_type::in_place_delete) { - base_type::fast_compact(); - } } /**