rodecomp/Recovered/jsoncons/include/jsoncons/json_error.hpp
ragnarok-clanker 9b9c369f0c Move exe-only code to Recovered/ and rebuild virtualised PakAuxiliary::Extract
Recovered/ holds the code linked only into the standalone exe (scripts/exe/build_exe.py), outside the Clank source dirs:
- jsoncons/ and nProtect/ moved from scripts/exe/; GameGuard stand-in follows main's renamed entry points.
- GPak/PakAuxiliary.cpp: Extract (virtualised in every build; 02-19 jumps out at 0x0065861E) rebuilt from the open GRF Editor decoder, after the visible 02-19 prologue; inline key and kRO keys 1-4. Apply traps (unreachable in 02-19).
- GGHash/GGHash.cpp: CGGHash::Load/Check/VerifyHash trap (RagHash.dat check unreachable in 02-19).
The whole client links: 984 units, 0 unresolved.
2026-11-06 19:33:10 +01:00

156 lines
5.8 KiB
C++

/// Copyright 2013-2023 Daniel Parker
// Distributed under the Boost license, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
// See https://github.com/danielaparker/jsoncons for latest version
#ifndef JSONCONS_JSON_ERROR_HPP
#define JSONCONS_JSON_ERROR_HPP
#include <system_error>
#include <jsoncons/config/jsoncons_config.hpp>
namespace jsoncons {
enum class json_errc
{
success = 0,
unexpected_eof = 1,
source_error,
syntax_error,
extra_character,
max_nesting_depth_exceeded,
single_quote,
illegal_character_in_string,
extra_comma,
expected_key,
expected_value,
invalid_value,
expected_colon,
illegal_control_character,
illegal_escaped_character,
expected_codepoint_surrogate_pair,
invalid_hex_escape_sequence,
invalid_unicode_escape_sequence,
leading_zero,
invalid_number,
expected_comma_or_rbrace,
expected_comma_or_rbracket,
unexpected_rbracket,
unexpected_rbrace,
illegal_comment,
expected_continuation_byte,
over_long_utf8_sequence,
illegal_codepoint,
illegal_surrogate_value,
unpaired_high_surrogate,
illegal_unicode_character
};
class json_error_category_impl
: public std::error_category
{
public:
const char* name() const noexcept override
{
return "jsoncons/json";
}
std::string message(int ev) const override
{
switch (static_cast<json_errc>(ev))
{
case json_errc::unexpected_eof:
return "Unexpected end of file";
case json_errc::source_error:
return "Source error";
case json_errc::syntax_error:
return "JSON syntax_error";
case json_errc::extra_character:
return "Unexpected non-whitespace character after JSON text";
case json_errc::max_nesting_depth_exceeded:
return "Data item nesting exceeds limit in options";
case json_errc::single_quote:
return "JSON strings cannot be quoted with single quotes";
case json_errc::illegal_character_in_string:
return "Illegal character in string";
case json_errc::extra_comma:
return "Extra comma";
case json_errc::expected_key:
return "Expected object member key";
case json_errc::expected_value:
return "Expected value";
case json_errc::invalid_value:
return "Invalid value";
case json_errc::expected_colon:
return "Expected name separator ':'";
case json_errc::illegal_control_character:
return "Illegal control character in string";
case json_errc::illegal_escaped_character:
return "Illegal escaped character in string";
case json_errc::expected_codepoint_surrogate_pair:
return "Invalid codepoint, expected another \\u token to begin the second half of a codepoint surrogate pair.";
case json_errc::invalid_hex_escape_sequence:
return "Invalid codepoint, expected hexadecimal digit.";
case json_errc::invalid_unicode_escape_sequence:
return "Invalid codepoint, expected four hexadecimal digits.";
case json_errc::leading_zero:
return "A number cannot have a leading zero";
case json_errc::invalid_number:
return "Invalid number";
case json_errc::expected_comma_or_rbrace:
return "Expected comma or right brace '}'";
case json_errc::expected_comma_or_rbracket:
return "Expected comma or right bracket ']'";
case json_errc::unexpected_rbrace:
return "Unexpected right brace '}'";
case json_errc::unexpected_rbracket:
return "Unexpected right bracket ']'";
case json_errc::illegal_comment:
return "Illegal comment";
case json_errc::expected_continuation_byte:
return "Expected continuation byte";
case json_errc::over_long_utf8_sequence:
return "Over long UTF-8 sequence";
case json_errc::illegal_codepoint:
return "Illegal codepoint (>= 0xd800 && <= 0xdfff)";
case json_errc::illegal_surrogate_value:
return "UTF-16 surrogate values are illegal in UTF-32";
case json_errc::unpaired_high_surrogate:
return "Expected low surrogate following the high surrogate";
case json_errc::illegal_unicode_character:
return "Illegal unicode character";
default:
return "Unknown JSON parser error";
}
}
};
inline
const std::error_category& json_error_category()
{
static json_error_category_impl instance;
return instance;
}
inline
std::error_code make_error_code(json_errc result)
{
return std::error_code(static_cast<int>(result),json_error_category());
}
#if !defined(JSONCONS_NO_DEPRECATED)
JSONCONS_DEPRECATED_MSG("Instead, use json_errc") typedef json_errc json_parser_errc;
JSONCONS_DEPRECATED_MSG("Instead, use json_errc") typedef json_errc json_parse_errc;
#endif
} // jsoncons
namespace std {
template<>
struct is_error_code_enum<jsoncons::json_errc> : public true_type
{
};
}
#endif