summaryrefslogtreecommitdiff
path: root/deimos/core/status.h
diff options
context:
space:
mode:
authorSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 01:16:21 +0200
committerSteven Le Rouzic <steven.lerouzic@gmail.com>2024-04-27 01:16:21 +0200
commite02f9fd89b059919baf3a8d8bf8b783470976a27 (patch)
tree6bb16cce1231dba9b0eab5f43ceb7c5d86f8e7cb /deimos/core/status.h
parent08eece258ceff7824250454906bff013a7303c28 (diff)
Some work on Vulkan initialization
Diffstat (limited to 'deimos/core/status.h')
-rw-r--r--deimos/core/status.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/deimos/core/status.h b/deimos/core/status.h
index 912d4c8..8141dad 100644
--- a/deimos/core/status.h
+++ b/deimos/core/status.h
@@ -147,18 +147,18 @@ public:
StatusOr(const Status& status) : m_status{status} // NOLINT
{
+ Expects(!m_status.ok());
if (m_status.ok())
{
- deimos_Panic("Cannot construct a StatusOr from OK");
m_status = InternalError("StatusOr constructed from OK");
}
}
StatusOr(Status&& status) : m_status{std::move(status)} // NOLINT
{
+ Expects(!m_status.ok());
if (m_status.ok())
{
- deimos_Panic("Cannot construct a StatusOr from OK");
m_status = InternalError("StatusOr constructed from OK");
}
}
@@ -229,6 +229,16 @@ public:
}
constexpr bool ok() const { return m_status.ok(); }
+
+ constexpr StatusCode code() const { return m_status.code(); }
+
+ constexpr const Status& status() const { return m_status; }
+
+ constexpr const T& value() const & { Expects(m_status.ok()); return m_value; }
+
+ constexpr T& value() & { Expects(m_status.ok()); return m_value; }
+
+ constexpr T&& value() && { Expects(m_status.ok()); return std::move(m_value); }
friend void DeimosFormat(IWriter* writer, const StatusOr<T>& status)
{