diff options
Diffstat (limited to 'deimos/core/status.h')
-rw-r--r-- | deimos/core/status.h | 14 |
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)
{
|