From d990d4e928aafa87bae9c95ff0140b2e8e28d29f Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Fri, 26 Apr 2024 16:45:21 +0200 Subject: [PATCH] table: ::erase functions --- src/entt/entity/table.hpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/entt/entity/table.hpp b/src/entt/entity/table.hpp index 011e8d28e..c57eae5e6 100644 --- a/src/entt/entity/table.hpp +++ b/src/entt/entity/table.hpp @@ -8,6 +8,7 @@ #include #include #include +#include "../config/config.h" #include "../core/compressed_pair.hpp" #include "../core/iterator.hpp" #include "fwd.hpp" @@ -372,6 +373,25 @@ public: return std::forward_as_tuple(std::get>(payload.first()).emplace_back(std::forward(args))...); } + /** + * @brief Removes a row from a table. + * @param pos An iterator to the row to remove. + * @return An iterator following the removed row. + */ + iterator erase(const_iterator pos) { + const auto diff = pos - begin(); + return {std::get>(payload.first()).erase(std::get>(payload.first()).begin() + diff)...}; + } + + /** + * @brief Removes a row from a table. + * @param pos Index of the row to remove. + */ + void erase(const size_type pos) { + ENTT_ASSERT(pos < size(), "Index out of bounds"); + erase(begin() + static_cast(pos)); + } + /** * @brief Returns the row data at specified location. * @param pos The row for which to return the data.