16#include "pw_status/internal/config.h"
37 PW_STATUS_CANCELLED = 1,
38 PW_STATUS_UNKNOWN = 2,
39 PW_STATUS_INVALID_ARGUMENT = 3,
40 PW_STATUS_DEADLINE_EXCEEDED = 4,
41 PW_STATUS_NOT_FOUND = 5,
42 PW_STATUS_ALREADY_EXISTS = 6,
43 PW_STATUS_PERMISSION_DENIED = 7,
44 PW_STATUS_RESOURCE_EXHAUSTED = 8,
45 PW_STATUS_FAILED_PRECONDITION = 9,
46 PW_STATUS_ABORTED = 10,
47 PW_STATUS_OUT_OF_RANGE = 11,
48 PW_STATUS_UNIMPLEMENTED = 12,
49 PW_STATUS_INTERNAL = 13,
50 PW_STATUS_UNAVAILABLE = 14,
51 PW_STATUS_DATA_LOSS = 15,
52 PW_STATUS_UNAUTHENTICATED = 16,
61 PW_STATUS_DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_,
65const char* pw_StatusString(pw_Status status);
68#define PW_STATUS_LAST PW_STATUS_UNAUTHENTICATED
86 using Code = pw_Status;
94 [[nodiscard]]
static constexpr Status Cancelled() {
95 return PW_STATUS_CANCELLED;
97 [[nodiscard]]
static constexpr Status Unknown() {
98 return PW_STATUS_UNKNOWN;
100 [[nodiscard]]
static constexpr Status InvalidArgument() {
101 return PW_STATUS_INVALID_ARGUMENT;
103 [[nodiscard]]
static constexpr Status DeadlineExceeded() {
104 return PW_STATUS_DEADLINE_EXCEEDED;
106 [[nodiscard]]
static constexpr Status NotFound() {
107 return PW_STATUS_NOT_FOUND;
109 [[nodiscard]]
static constexpr Status AlreadyExists() {
110 return PW_STATUS_ALREADY_EXISTS;
112 [[nodiscard]]
static constexpr Status PermissionDenied() {
113 return PW_STATUS_PERMISSION_DENIED;
115 [[nodiscard]]
static constexpr Status ResourceExhausted() {
116 return PW_STATUS_RESOURCE_EXHAUSTED;
118 [[nodiscard]]
static constexpr Status FailedPrecondition() {
119 return PW_STATUS_FAILED_PRECONDITION;
121 [[nodiscard]]
static constexpr Status Aborted() {
122 return PW_STATUS_ABORTED;
124 [[nodiscard]]
static constexpr Status OutOfRange() {
125 return PW_STATUS_OUT_OF_RANGE;
127 [[nodiscard]]
static constexpr Status Unimplemented() {
128 return PW_STATUS_UNIMPLEMENTED;
130 [[nodiscard]]
static constexpr Status Internal() {
131 return PW_STATUS_INTERNAL;
133 [[nodiscard]]
static constexpr Status Unavailable() {
134 return PW_STATUS_UNAVAILABLE;
136 [[nodiscard]]
static constexpr Status DataLoss() {
137 return PW_STATUS_DATA_LOSS;
139 [[nodiscard]]
static constexpr Status Unauthenticated() {
140 return PW_STATUS_UNAUTHENTICATED;
145 constexpr Status(Code code = PW_STATUS_OK) : code_(code) {}
151 constexpr Code
code()
const {
return code_; }
156 [[nodiscard]]
constexpr bool ok()
const {
return code_ == PW_STATUS_OK; }
159 [[nodiscard]]
constexpr bool IsCancelled()
const {
160 return code_ == PW_STATUS_CANCELLED;
162 [[nodiscard]]
constexpr bool IsUnknown()
const {
163 return code_ == PW_STATUS_UNKNOWN;
165 [[nodiscard]]
constexpr bool IsInvalidArgument()
const {
166 return code_ == PW_STATUS_INVALID_ARGUMENT;
168 [[nodiscard]]
constexpr bool IsDeadlineExceeded()
const {
169 return code_ == PW_STATUS_DEADLINE_EXCEEDED;
171 [[nodiscard]]
constexpr bool IsNotFound()
const {
172 return code_ == PW_STATUS_NOT_FOUND;
174 [[nodiscard]]
constexpr bool IsAlreadyExists()
const {
175 return code_ == PW_STATUS_ALREADY_EXISTS;
177 [[nodiscard]]
constexpr bool IsPermissionDenied()
const {
178 return code_ == PW_STATUS_PERMISSION_DENIED;
180 [[nodiscard]]
constexpr bool IsResourceExhausted()
const {
181 return code_ == PW_STATUS_RESOURCE_EXHAUSTED;
183 [[nodiscard]]
constexpr bool IsFailedPrecondition()
const {
184 return code_ == PW_STATUS_FAILED_PRECONDITION;
186 [[nodiscard]]
constexpr bool IsAborted()
const {
187 return code_ == PW_STATUS_ABORTED;
189 [[nodiscard]]
constexpr bool IsOutOfRange()
const {
190 return code_ == PW_STATUS_OUT_OF_RANGE;
192 [[nodiscard]]
constexpr bool IsUnimplemented()
const {
193 return code_ == PW_STATUS_UNIMPLEMENTED;
195 [[nodiscard]]
constexpr bool IsInternal()
const {
196 return code_ == PW_STATUS_INTERNAL;
198 [[nodiscard]]
constexpr bool IsUnavailable()
const {
199 return code_ == PW_STATUS_UNAVAILABLE;
201 [[nodiscard]]
constexpr bool IsDataLoss()
const {
202 return code_ == PW_STATUS_DATA_LOSS;
204 [[nodiscard]]
constexpr bool IsUnauthenticated()
const {
205 return code_ == PW_STATUS_UNAUTHENTICATED;
214 code_ = other.
code();
224 [[nodiscard]]
const char*
str()
const {
return pw_StatusString(code_); }
235constexpr bool operator==(
const Status& lhs,
const Status& rhs) {
236 return lhs.code() == rhs.code();
239constexpr bool operator!=(
const Status& lhs,
const Status& rhs) {
240 return lhs.code() != rhs.code();
247inline const char* pw_StatusString(
pw::Status status) {
248 return pw_StatusString(status.
code());
constexpr void Update(Status other)
Definition: status.h:212
constexpr Code code() const
Returns the Status::Code (pw_Status) for this Status.
Definition: status.h:151
constexpr bool ok() const
Definition: status.h:156
constexpr void IgnoreError() const
Definition: status.h:221
const char * str() const
Returns a null-terminated string representation of the Status.
Definition: status.h:224
Provides basic helpers for reading and writing UTF-8 encoded strings.
Definition: alignment.h:27
constexpr Status OkStatus()
Definition: status.h:233