diff --git a/deps/ox/src/ox/std/smallmap.hpp b/deps/ox/src/ox/std/smallmap.hpp index 28f2d43e..27f16927 100644 --- a/deps/ox/src/ox/std/smallmap.hpp +++ b/deps/ox/src/ox/std/smallmap.hpp @@ -8,7 +8,7 @@ #pragma once -#include "algorithm.hpp" +#include "def.hpp" #include "hash.hpp" #include "ignore.hpp" #include "stringview.hpp" @@ -28,7 +28,7 @@ class SmallMap { T value{}; }; - private: + protected: using PairVector = Vector; PairVector m_pairs; @@ -79,6 +79,11 @@ class SmallMap { [[nodiscard]] constexpr Pair &get(size_t i) noexcept; + [[nodiscard]] + constexpr ox::SpanView pairs() const noexcept { + return m_pairs; + } + constexpr void clear(); private: @@ -204,12 +209,12 @@ constexpr T &SmallMap::value(size_t i) noexcept { } template -constexpr SmallMap::Pair const&SmallMap::get(size_t i) const noexcept { +constexpr typename SmallMap::Pair const&SmallMap::get(size_t i) const noexcept { return m_pairs[i]; } template -constexpr SmallMap::Pair &SmallMap::get(size_t i) noexcept { +constexpr typename SmallMap::Pair &SmallMap::get(size_t i) noexcept { return m_pairs[i]; } @@ -246,4 +251,12 @@ constexpr typename SmallMap::Pair &SmallMap::acces return pairs.emplace_back(); } +template +constexpr Error model(T *io, ox::CommonPtrWith> auto *obj) noexcept { + using Map = SmallMap; + oxReturnError(io->template setTypeInfo()); + oxReturnError(io->field("pairs", &obj->m_pairs)); + return {}; +} + }