24#ifndef STELLARLIB_ECS_SPARSE_SET_HPP
25#define STELLARLIB_ECS_SPARSE_SET_HPP
27#include <stellarlib/ecs/stack_vector.hpp>
31namespace stellarlib::ecs::internal
37 sparse_set() noexcept;
40 constexpr sparse_set(const sparse_set &) noexcept = delete;
43 sparse_set(sparse_set &&) noexcept;
45 constexpr auto operator=(const sparse_set &) noexcept
46 -> sparse_set & = delete;
48 auto operator=(sparse_set &&) noexcept
51 ~sparse_set() noexcept;
53 void insert(std::uint32_t key) noexcept;
56 auto size() const noexcept
60 auto contains(std::uint32_t key) const noexcept
64 auto begin() const noexcept
65 -> const std::uint32_t *;
68 auto end() const noexcept
69 -> const std::uint32_t *;
71 void erase(std::uint32_t key) noexcept;
73 void clear() noexcept;
76 stack_vector<std::uint32_t, std::uint32_t> _sparse;
77 stack_vector<std::uint32_t, std::uint32_t> _keys;