From 09c57545bc7fe7a842dd31b739506ff3d9da347e Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 28 Jan 2024 16:29:39 -0600 Subject: [PATCH] [ox/std] Add Vector::at --- deps/ox/src/ox/std/vector.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/deps/ox/src/ox/std/vector.hpp b/deps/ox/src/ox/std/vector.hpp index 2bb6008f..87033fda 100644 --- a/deps/ox/src/ox/std/vector.hpp +++ b/deps/ox/src/ox/std/vector.hpp @@ -221,6 +221,12 @@ class Vector: detail::VectorAllocator { constexpr const T &operator[](std::size_t i) const noexcept; + [[nodiscard]] + constexpr Result at(size_t i) noexcept; + + [[nodiscard]] + constexpr Result at(size_t i) const noexcept; + [[nodiscard]] constexpr Result front() noexcept; @@ -416,6 +422,22 @@ constexpr const T &Vector::operator[](std::size_t return m_items[i]; } +template +constexpr Result Vector::at(size_t i) noexcept { + if (i < size()) { + return &operator[](i); + } + return OxError(1, "Vector: Invalid index"); +} + +template +constexpr Result Vector::at(size_t i) const noexcept { + if (i < size()) { + return &operator[](i); + } + return OxError(1, "Vector: Invalid index"); +} + template constexpr Result Vector::front() noexcept { if (!m_size) {