From e02f9fd89b059919baf3a8d8bf8b783470976a27 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sat, 27 Apr 2024 01:16:21 +0200 Subject: Some work on Vulkan initialization --- deimos/core/status.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'deimos/core/status.h') 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& status) { -- cgit