#ifndef INCLUDE_WEBM_STATUS_H_
#define INCLUDE_WEBM_STATUS_H_
#include <cstdint>
namespace webm {
struct Status {
enum Code : std::int32_t {
kOkCompleted = 0,
kOkPartial = -1,
kWouldBlock = -2,
kEndOfFile = -3,
kSeekFailed = -4,
kInvalidElementId = -1025,
kInvalidElementSize = -1026,
kIndefiniteUnknownElement = -1027,
kElementOverflow = -1028,
kNotEnoughMemory = -1029,
kInvalidElementValue = -1030,
kExceededRecursionDepthLimit = -1031,
kSwitchToSkip = INT32_MIN,
};
std::int32_t code;
Status() = default;
Status(const Status&) = default;
Status(Status&&) = default;
Status& operator=(const Status&) = default;
Status& operator=(Status&&) = default;
constexpr explicit Status(Code code) : code(code) {}
constexpr explicit Status(std::int32_t code) : code(code) {}
constexpr bool ok() const {
return code == kOkCompleted || code == kOkPartial;
}
constexpr bool completed_ok() const { return code == kOkCompleted; }
constexpr bool is_parsing_error() const {
return -2048 <= code && code <= -1025;
}
};
}
#endif