3#include "enums/lump.hpp"
7#define ERROR_FOR_REASON(reason) \
8 class reason final : public Error { \
10 explicit reason(const Enums::Lump lump, const std::string& message) : Error(Reason::reason, lump, message) {} \
13namespace BspParser::Errors {
14 enum class Reason : uint8_t {
22 class Error :
public std::runtime_error {
24 Error(
const Reason reason,
const Enums::Lump lump,
const std::string& message) :
25 std::runtime_error(message), reason(reason), lump(lump) {}
27 [[nodiscard]] Reason getReason()
const {
31 [[nodiscard]] Enums::Lump getLump()
const {
40 ERROR_FOR_REASON(InvalidHeader);
41 ERROR_FOR_REASON(InvalidBody);
42 ERROR_FOR_REASON(InvalidChecksum);
43 ERROR_FOR_REASON(UnsupportedVersion);
44 ERROR_FOR_REASON(OutOfBoundsAccess);
47#undef ERROR_FOR_REASON
Definition: errors.hpp:22