// 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_ #include "upb/base/status.h" namespace upb { class Status { 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 // UPB_BASE_STATUS_HPP_