16#include "pw_status/internal/config.h"
38 PW_STATUS_CANCELLED = 1,
39 PW_STATUS_UNKNOWN = 2,
40 PW_STATUS_INVALID_ARGUMENT = 3,
41 PW_STATUS_DEADLINE_EXCEEDED = 4,
42 PW_STATUS_NOT_FOUND = 5,
43 PW_STATUS_ALREADY_EXISTS = 6,
44 PW_STATUS_PERMISSION_DENIED = 7,
45 PW_STATUS_RESOURCE_EXHAUSTED = 8,
46 PW_STATUS_FAILED_PRECONDITION = 9,
47 PW_STATUS_ABORTED = 10,
48 PW_STATUS_OUT_OF_RANGE = 11,
49 PW_STATUS_UNIMPLEMENTED = 12,
50 PW_STATUS_INTERNAL = 13,
51 PW_STATUS_UNAVAILABLE = 14,
52 PW_STATUS_DATA_LOSS = 15,
53 PW_STATUS_UNAUTHENTICATED = 16,
62 PW_STATUS_DO_NOT_USE_RESERVED_FOR_FUTURE_EXPANSION_USE_DEFAULT_IN_SWITCH_INSTEAD_,
66const char* pw_StatusString(pw_Status status);
69#define PW_STATUS_LAST PW_STATUS_UNAUTHENTICATED
87 using Code = pw_Status;
95 [[nodiscard]]
static constexpr Status Cancelled() {
96 return PW_STATUS_CANCELLED;
98 [[nodiscard]]
static constexpr Status Unknown() {
99 return PW_STATUS_UNKNOWN;
101 [[nodiscard]]
static constexpr Status InvalidArgument() {
102 return PW_STATUS_INVALID_ARGUMENT;
104 [[nodiscard]]
static constexpr Status DeadlineExceeded() {
105 return PW_STATUS_DEADLINE_EXCEEDED;
107 [[nodiscard]]
static constexpr Status NotFound() {
108 return PW_STATUS_NOT_FOUND;
110 [[nodiscard]]
static constexpr Status AlreadyExists() {
111 return PW_STATUS_ALREADY_EXISTS;
113 [[nodiscard]]
static constexpr Status PermissionDenied() {
114 return PW_STATUS_PERMISSION_DENIED;
116 [[nodiscard]]
static constexpr Status ResourceExhausted() {
117 return PW_STATUS_RESOURCE_EXHAUSTED;
119 [[nodiscard]]
static constexpr Status FailedPrecondition() {
120 return PW_STATUS_FAILED_PRECONDITION;
122 [[nodiscard]]
static constexpr Status Aborted() {
123 return PW_STATUS_ABORTED;
125 [[nodiscard]]
static constexpr Status OutOfRange() {
126 return PW_STATUS_OUT_OF_RANGE;
128 [[nodiscard]]
static constexpr Status Unimplemented() {
129 return PW_STATUS_UNIMPLEMENTED;
131 [[nodiscard]]
static constexpr Status Internal() {
132 return PW_STATUS_INTERNAL;
134 [[nodiscard]]
static constexpr Status Unavailable() {
135 return PW_STATUS_UNAVAILABLE;
137 [[nodiscard]]
static constexpr Status DataLoss() {
138 return PW_STATUS_DATA_LOSS;
140 [[nodiscard]]
static constexpr Status Unauthenticated() {
141 return PW_STATUS_UNAUTHENTICATED;
146 constexpr Status(Code code = PW_STATUS_OK) : code_(code) {}
152 constexpr Code
code()
const {
return code_; }
157 [[nodiscard]]
constexpr bool ok()
const {
return code_ == PW_STATUS_OK; }
160 [[nodiscard]]
constexpr bool IsCancelled()
const {
161 return code_ == PW_STATUS_CANCELLED;
163 [[nodiscard]]
constexpr bool IsUnknown()
const {
164 return code_ == PW_STATUS_UNKNOWN;
166 [[nodiscard]]
constexpr bool IsInvalidArgument()
const {
167 return code_ == PW_STATUS_INVALID_ARGUMENT;
169 [[nodiscard]]
constexpr bool IsDeadlineExceeded()
const {
170 return code_ == PW_STATUS_DEADLINE_EXCEEDED;
172 [[nodiscard]]
constexpr bool IsNotFound()
const {
173 return code_ == PW_STATUS_NOT_FOUND;
175 [[nodiscard]]
constexpr bool IsAlreadyExists()
const {
176 return code_ == PW_STATUS_ALREADY_EXISTS;
178 [[nodiscard]]
constexpr bool IsPermissionDenied()
const {
179 return code_ == PW_STATUS_PERMISSION_DENIED;
181 [[nodiscard]]
constexpr bool IsResourceExhausted()
const {
182 return code_ == PW_STATUS_RESOURCE_EXHAUSTED;
184 [[nodiscard]]
constexpr bool IsFailedPrecondition()
const {
185 return code_ == PW_STATUS_FAILED_PRECONDITION;
187 [[nodiscard]]
constexpr bool IsAborted()
const {
188 return code_ == PW_STATUS_ABORTED;
190 [[nodiscard]]
constexpr bool IsOutOfRange()
const {
191 return code_ == PW_STATUS_OUT_OF_RANGE;
193 [[nodiscard]]
constexpr bool IsUnimplemented()
const {
194 return code_ == PW_STATUS_UNIMPLEMENTED;
196 [[nodiscard]]
constexpr bool IsInternal()
const {
197 return code_ == PW_STATUS_INTERNAL;
199 [[nodiscard]]
constexpr bool IsUnavailable()
const {
200 return code_ == PW_STATUS_UNAVAILABLE;
202 [[nodiscard]]
constexpr bool IsDataLoss()
const {
203 return code_ == PW_STATUS_DATA_LOSS;
205 [[nodiscard]]
constexpr bool IsUnauthenticated()
const {
206 return code_ == PW_STATUS_UNAUTHENTICATED;
215 code_ = other.
code();
225 [[nodiscard]]
const char*
str()
const {
return pw_StatusString(code_); }
236constexpr bool operator==(
const Status& lhs,
const Status& rhs) {
237 return lhs.code() == rhs.code();
240constexpr bool operator!=(
const Status& lhs,
const Status& rhs) {
241 return lhs.code() != rhs.code();
248constexpr Status ConvertToStatus(Status status) {
return status; }
255inline const char* pw_StatusString(
pw::Status status) {
256 return pw_StatusString(status.
code());
constexpr void Update(Status other)
Definition: status.h:213
constexpr Code code() const
Returns the Status::Code (pw_Status) for this Status.
Definition: status.h:152
constexpr bool ok() const
Definition: status.h:157
constexpr void IgnoreError() const
Definition: status.h:222
const char * str() const
Returns a null-terminated string representation of the Status.
Definition: status.h:225
Provides basic helpers for reading and writing UTF-8 encoded strings.
Definition: alignment.h:27
constexpr Status OkStatus()
Definition: status.h:234