From af9991c00823365f828f7f18138bd06ff1dca17f Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 17 Apr 2021 13:56:52 -0500 Subject: [PATCH] [ox/std] Make HashMap::at return Result instead of Result --- deps/ox/src/ox/clargs/clargs.cpp | 12 ++++++------ deps/ox/src/ox/std/hashmap.hpp | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/deps/ox/src/ox/clargs/clargs.cpp b/deps/ox/src/ox/clargs/clargs.cpp index 3915c007..72ed399c 100644 --- a/deps/ox/src/ox/clargs/clargs.cpp +++ b/deps/ox/src/ox/clargs/clargs.cpp @@ -39,32 +39,32 @@ ClArgs::ClArgs(int argc, const char **args) noexcept { bool ClArgs::getBool(const char *arg, bool defaultValue) const noexcept { auto [value, err] = m_ints.at(arg); - return !err ? *value : defaultValue; + return !err ? value : defaultValue; } String ClArgs::getString(const char *arg, const char *defaultValue) const noexcept { auto [value, err] = m_strings.at(arg); - return !err ? *value : defaultValue; + return !err ? value : defaultValue; } int ClArgs::getInt(const char *arg, int defaultValue) const noexcept { auto [value, err] = m_ints.at(arg); - return !err ? *value : defaultValue; + return !err ? value : defaultValue; } Result ClArgs::getBool(const char *arg) const noexcept { oxRequire(out, m_bools.at(arg)); - return *out; + return out; } Result ClArgs::getString(const char *argName) const noexcept { oxRequire(out, m_strings.at(argName)); - return *out; + return out; } Result ClArgs::getInt(const char *arg) const noexcept { oxRequire(out, m_ints.at(arg)); - return *out; + return out; } } diff --git a/deps/ox/src/ox/std/hashmap.hpp b/deps/ox/src/ox/std/hashmap.hpp index a1408d3a..62e22d9c 100644 --- a/deps/ox/src/ox/std/hashmap.hpp +++ b/deps/ox/src/ox/std/hashmap.hpp @@ -46,12 +46,12 @@ class HashMap { /** * K is assumed to be a null terminated string. */ - Result at(K key); + Result at(K key); /** * K is assumed to be a null terminated string. */ - Result at(K key) const; + Result at(K key) const; bool contains(K key) const; @@ -132,21 +132,23 @@ T &HashMap::operator[](K k) { } template -Result HashMap::at(K k) { +Result HashMap::at(K k) { auto p = access(m_pairs, k); if (!p) { - return {nullptr, OxError(1, "Value not found for key")}; + AllocAlias v; + return {*bit_cast(&v), OxError(1)}; } - return &p->value; + return p->value; } template -Result HashMap::at(K k) const { +Result HashMap::at(K k) const { auto p = access(m_pairs, k); if (!p) { - return OxError(1, "Value not found for key"); + AllocAlias v; + return {*bit_cast(&v), OxError(1)}; } - return &p->value; + return p->value; } template