From a56715378721d8abd0ae379a83b9c1ee0b1a9a30 Mon Sep 17 00:00:00 2001 From: Greg Falcon Date: Tue, 31 May 2022 14:00:42 -0700 Subject: Add an internal helper for logging (upcoming). PiperOrigin-RevId: 452134803 Change-Id: I8660df850ab537c441399545b25eb32399b2a3ef --- absl/status/internal/status_internal.h | 9 +++++++++ absl/status/status.cc | 12 ++++++++++++ 2 files changed, 21 insertions(+) diff --git a/absl/status/internal/status_internal.h b/absl/status/internal/status_internal.h index 34914d2e..fc1e78bc 100644 --- a/absl/status/internal/status_internal.h +++ b/absl/status/internal/status_internal.h @@ -69,6 +69,15 @@ struct StatusRep { }; absl::StatusCode MapToLocalCode(int value); + +// If `status` is not OK, returns a pointer to a newly-allocated string with the +// given `prefix`, suitable for output as an error message in assertion/CHECK() +// failures. Otherwise returns nullptr. +// +// This is an internal implementation detail for Abseil logging. +std::string* MakeCheckFailString(const absl::Status& status, + const char* prefix); + } // namespace status_internal ABSL_NAMESPACE_END diff --git a/absl/status/status.cc b/absl/status/status.cc index fc5a1425..c66009d6 100644 --- a/absl/status/status.cc +++ b/absl/status/status.cc @@ -599,5 +599,17 @@ Status ErrnoToStatus(int error_number, absl::string_view message) { MessageForErrnoToStatus(error_number, message)); } +namespace status_internal { + +std::string* MakeCheckFailString(const absl::Status& status, + const char* prefix) { + if (status.ok()) { return nullptr; } + return new std::string( + absl::StrCat(prefix, " (", + status.ToString(StatusToStringMode::kWithEverything), ")")); +} + +} // namespace status_internal + ABSL_NAMESPACE_END } // namespace absl -- cgit v1.2.3