From 123c41254f36c52486cf26acb2ad7f61d6fcb380 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 19 May 2024 22:15:13 -0500 Subject: [PATCH] [ox/std] Add SmallMap::pairs(), SmallMap model --- deps/ox/src/ox/std/smallmap.hpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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 {}; +} + }