blob: b6f3edb2ac40aeb32a69866c101aa2d5c48963b9 [file] [log] [blame]
// 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_