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
88 using Code = pw_Status;
96 [[nodiscard]]
static constexpr Status Cancelled() {
97 return PW_STATUS_CANCELLED;
99 [[nodiscard]]
static constexpr Status Unknown() {
100 return PW_STATUS_UNKNOWN;
102 [[nodiscard]]
static constexpr Status InvalidArgument() {
103 return PW_STATUS_INVALID_ARGUMENT;
105 [[nodiscard]]
static constexpr Status DeadlineExceeded() {
106 return PW_STATUS_DEADLINE_EXCEEDED;
108 [[nodiscard]]
static constexpr Status NotFound() {
109 return PW_STATUS_NOT_FOUND;
111 [[nodiscard]]
static constexpr Status AlreadyExists() {
112 return PW_STATUS_ALREADY_EXISTS;
114 [[nodiscard]]
static constexpr Status PermissionDenied() {
115 return PW_STATUS_PERMISSION_DENIED;
117 [[nodiscard]]
static constexpr Status ResourceExhausted() {
118 return PW_STATUS_RESOURCE_EXHAUSTED;
120 [[nodiscard]]
static constexpr Status FailedPrecondition() {
121 return PW_STATUS_FAILED_PRECONDITION;
123 [[nodiscard]]
static constexpr Status Aborted() {
124 return PW_STATUS_ABORTED;
126 [[nodiscard]]
static constexpr Status OutOfRange() {
127 return PW_STATUS_OUT_OF_RANGE;
129 [[nodiscard]]
static constexpr Status Unimplemented() {
130 return PW_STATUS_UNIMPLEMENTED;
132 [[nodiscard]]
static constexpr Status Internal() {
133 return PW_STATUS_INTERNAL;
135 [[nodiscard]]
static constexpr Status Unavailable() {
136 return PW_STATUS_UNAVAILABLE;
138 [[nodiscard]]
static constexpr Status DataLoss() {
139 return PW_STATUS_DATA_LOSS;
141 [[nodiscard]]
static constexpr Status Unauthenticated() {
142 return PW_STATUS_UNAUTHENTICATED;
147 constexpr Status(Code code = PW_STATUS_OK) : code_(code) {}
153 constexpr Code
code()
const {
return code_; }
158 [[nodiscard]]
constexpr bool ok()
const {
return code_ == PW_STATUS_OK; }
161 [[nodiscard]]
constexpr bool IsCancelled()
const {
162 return code_ == PW_STATUS_CANCELLED;
164 [[nodiscard]]
constexpr bool IsUnknown()
const {
165 return code_ == PW_STATUS_UNKNOWN;
167 [[nodiscard]]
constexpr bool IsInvalidArgument()
const {
168 return code_ == PW_STATUS_INVALID_ARGUMENT;
170 [[nodiscard]]
constexpr bool IsDeadlineExceeded()
const {
171 return code_ == PW_STATUS_DEADLINE_EXCEEDED;
173 [[nodiscard]]
constexpr bool IsNotFound()
const {
174 return code_ == PW_STATUS_NOT_FOUND;
176 [[nodiscard]]
constexpr bool IsAlreadyExists()
const {
177 return code_ == PW_STATUS_ALREADY_EXISTS;
179 [[nodiscard]]
constexpr bool IsPermissionDenied()
const {
180 return code_ == PW_STATUS_PERMISSION_DENIED;
182 [[nodiscard]]
constexpr bool IsResourceExhausted()
const {
183 return code_ == PW_STATUS_RESOURCE_EXHAUSTED;
185 [[nodiscard]]
constexpr bool IsFailedPrecondition()
const {
186 return code_ == PW_STATUS_FAILED_PRECONDITION;
188 [[nodiscard]]
constexpr bool IsAborted()
const {
189 return code_ == PW_STATUS_ABORTED;
191 [[nodiscard]]
constexpr bool IsOutOfRange()
const {
192 return code_ == PW_STATUS_OUT_OF_RANGE;
194 [[nodiscard]]
constexpr bool IsUnimplemented()
const {
195 return code_ == PW_STATUS_UNIMPLEMENTED;
197 [[nodiscard]]
constexpr bool IsInternal()
const {
198 return code_ == PW_STATUS_INTERNAL;
200 [[nodiscard]]
constexpr bool IsUnavailable()
const {
201 return code_ == PW_STATUS_UNAVAILABLE;
203 [[nodiscard]]
constexpr bool IsDataLoss()
const {
204 return code_ == PW_STATUS_DATA_LOSS;
206 [[nodiscard]]
constexpr bool IsUnauthenticated()
const {
207 return code_ == PW_STATUS_UNAUTHENTICATED;
216 code_ = other.
code();
226 [[nodiscard]]
const char*
str()
const {
return pw_StatusString(code_); }
237constexpr bool operator==(
const Status& lhs,
const Status& rhs) {
238 return lhs.code() == rhs.code();
241constexpr bool operator!=(
const Status& lhs,
const Status& rhs) {
242 return lhs.code() != rhs.code();
249constexpr Status ConvertToStatus(Status status) {
return status; }
256inline const char* pw_StatusString(
pw::Status status) {
257 return pw_StatusString(status.
code());
constexpr void Update(Status other)
Definition: status.h:214
constexpr Code code() const
Returns the Status::Code (pw_Status) for this Status.
Definition: status.h:153
constexpr bool ok() const
Definition: status.h:158
constexpr void IgnoreError() const
Definition: status.h:223
const char * str() const
Returns a null-terminated string representation of the Status.
Definition: status.h:226
The Pigweed namespace.
Definition: alignment.h:27
constexpr Status OkStatus()
Definition: status.h:235