| // Protocol Buffers - Google's data interchange format | |
| // Copyright 2023 Google LLC. All rights reserved. | |
| // | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file or at | |
| // https://developers.google.com/open-source/licenses/bsd | |
| #ifndef UPB_BASE_STATUS_HPP_ | |
| #define UPB_BASE_STATUS_HPP_ | |
| #ifdef __cplusplus | |
| #include "upb/base/status.h" | |
| namespace upb { | |
| class Status final { | |
| public: | |
| Status() { upb_Status_Clear(&status_); } | |
| upb_Status* ptr() { return &status_; } | |
| // Returns true if there is no error. | |
| bool ok() const { return upb_Status_IsOk(&status_); } | |
| // Guaranteed to be NULL-terminated. | |
| const char* error_message() const { | |
| return upb_Status_ErrorMessage(&status_); | |
| } | |
| // The error message will be truncated if it is longer than | |
| // _kUpb_Status_MaxMessage-4. | |
| void SetErrorMessage(const char* msg) { | |
| upb_Status_SetErrorMessage(&status_, msg); | |
| } | |
| void SetFormattedErrorMessage(const char* fmt, ...) { | |
| va_list args; | |
| va_start(args, fmt); | |
| upb_Status_VSetErrorFormat(&status_, fmt, args); | |
| va_end(args); | |
| } | |
| // Resets the status to a successful state with no message. | |
| void Clear() { upb_Status_Clear(&status_); } | |
| private: | |
| upb_Status status_; | |
| }; | |
| } // namespace upb | |
| #endif // __cplusplus | |
| #endif // UPB_BASE_STATUS_HPP_ |