pw_status: Add Status::code() method
This change prepares for removing the implicit conversion to pw_Status.
Change-Id: I31bbad155999920a7a5dd639a437616f75830ef3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/24560
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Ewout van Bekkum <ewout@google.com>
diff --git a/pw_status/public/pw_status/status.h b/pw_status/public/pw_status/status.h
index b7c1926..bf6c6d8 100644
--- a/pw_status/public/pw_status/status.h
+++ b/pw_status/public/pw_status/status.h
@@ -310,6 +310,9 @@
// Status implicitly converts to a Status::Code.
constexpr operator Code() const { return code_; }
+ // Returns the Status::Code (pw_Status) for this Status.
+ constexpr Code code() const { return code_; }
+
// True if the status is Status::Ok().
[[nodiscard]] constexpr bool ok() const { return code_ == PW_STATUS_OK; }
diff --git a/pw_status/status_test.cc b/pw_status/status_test.cc
index a5fa3f4..47e4fb7 100644
--- a/pw_status/status_test.cc
+++ b/pw_status/status_test.cc
@@ -69,6 +69,29 @@
static_assert(!Status(kInvalidCode).ok());
}
+TEST(Status, Code) {
+ // clang-format off
+ static_assert(PW_STATUS_OK == Status().code());
+ static_assert(PW_STATUS_OK == Status::Ok().code());
+ static_assert(PW_STATUS_CANCELLED == Status::Cancelled().code());
+ static_assert(PW_STATUS_UNKNOWN == Status::Unknown().code());
+ static_assert(PW_STATUS_INVALID_ARGUMENT == Status::InvalidArgument().code());
+ static_assert(PW_STATUS_DEADLINE_EXCEEDED == Status::DeadlineExceeded().code());
+ static_assert(PW_STATUS_NOT_FOUND == Status::NotFound().code());
+ static_assert(PW_STATUS_ALREADY_EXISTS == Status::AlreadyExists().code());
+ static_assert(PW_STATUS_PERMISSION_DENIED == Status::PermissionDenied().code());
+ static_assert(PW_STATUS_RESOURCE_EXHAUSTED == Status::ResourceExhausted().code());
+ static_assert(PW_STATUS_FAILED_PRECONDITION == Status::FailedPrecondition().code());
+ static_assert(PW_STATUS_ABORTED == Status::Aborted().code());
+ static_assert(PW_STATUS_OUT_OF_RANGE == Status::OutOfRange().code());
+ static_assert(PW_STATUS_UNIMPLEMENTED == Status::Unimplemented().code());
+ static_assert(PW_STATUS_INTERNAL == Status::Internal().code());
+ static_assert(PW_STATUS_UNAVAILABLE == Status::Unavailable().code());
+ static_assert(PW_STATUS_DATA_LOSS == Status::DataLoss().code());
+ static_assert(PW_STATUS_UNAUTHENTICATED == Status::Unauthenticated().code());
+ // clang-format on
+}
+
TEST(Status, EqualCodes) {
static_assert(PW_STATUS_OK == Status());
static_assert(PW_STATUS_OK == Status::Ok());