14 virtual ~BaseParser() =
default;
16 BaseParser() =
default;
22 virtual void Null() { Throw(
"null"); }
23 virtual void Bool(
bool) { Throw(
"bool"); }
24 virtual void Int64(int64_t) { Throw(
"integer"); }
25 virtual void Uint64(uint64_t) { Throw(
"integer"); }
26 virtual void Double(
double) { Throw(
"double"); }
27 virtual void String(std::string_view) { Throw(
"string"); }
28 virtual void StartObject() { Throw(
"object"); }
29 virtual void Key(std::string_view key) { Throw(
"field '" + std::string(key) +
"'"); }
30 virtual void EndObject() { Throw(
"'}'"); }
31 virtual void StartArray() { Throw(
"array"); }
32 virtual void EndArray() { Throw(
"']'"); }
35 virtual void EndObject(size_t ) { EndObject(); }
36 virtual void EndArray(size_t ) { EndArray(); }
38 void SetState(ParserState& state) { parser_state_ = &state; }
40 virtual std::string GetPathItem()
const = 0;
42 std::string GetCurrentPath()
const {
return parser_state_->GetCurrentPath(); }
45 [[
noreturn]]
void Throw(
const std::string& found) {
49 virtual std::string Expected()
const = 0;
52 ParserState* parser_state_{
nullptr};