userver
C++ Async Framework
Toggle main menu visibility
Loading...
Searching...
No Matches
base_parser.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/formats/json/parser/base_parser.hpp
4
/// @brief @copybrief formats::json::parser::BaseParser
5
/// @ingroup userver_universal
6
7
#
include
<
userver
/
formats
/
json
/
parser
/
exception
.
hpp
>
8
#
include
<
userver
/
formats
/
json
/
parser
/
parser_state
.
hpp
>
9
10
USERVER_NAMESPACE_BEGIN
11
12
namespace
formats::
json
::
parser
{
13
14
/// @brief Base class for SAX parser.
15
///
16
class
BaseParser
{
17
public
:
18
virtual
~BaseParser();
19
20
BaseParser() =
default
;
21
BaseParser(
BaseParser
&&) =
delete
;
22
BaseParser(
const
BaseParser
&) =
delete
;
23
BaseParser
& operator=(
const
BaseParser
&) =
delete
;
24
BaseParser
& operator=(
BaseParser
&&) =
delete
;
25
26
virtual
void
Null();
27
virtual
void
Bool(
bool
);
28
virtual
void
Int64(int64_t);
29
virtual
void
Uint64(uint64_t);
30
virtual
void
Double(
double
);
31
virtual
void
String(std::string_view);
32
virtual
void
StartObject();
33
virtual
void
Key(std::string_view key);
34
virtual
void
EndObject();
35
virtual
void
StartArray();
36
virtual
void
EndArray();
37
38
// Low-level variants of EndObject/EndArray
39
virtual
void
EndObject(size_t
/* members */
) { EndObject(); }
40
virtual
void
EndArray(size_t
/* members */
) { EndArray(); }
41
42
void
SetState(ParserState& state) { parser_state_ = &state; }
43
44
virtual
std::string GetPathItem()
const
= 0;
45
46
std::string GetCurrentPath()
const
{
return
parser_state_->GetCurrentPath(); }
47
48
protected
:
49
[[
noreturn
]]
void
Throw(
const
std::string& found);
50
51
virtual
std::string Expected()
const
= 0;
52
53
// NOLINTNEXTLINE(misc-non-private-member-variables-in-classes)
54
ParserState* parser_state_{
nullptr
};
55
};
56
57
}
// namespace formats::json::parser
58
59
USERVER_NAMESPACE_END
userver
formats
json
parser
base_parser.hpp
Generated on
for userver by
Doxygen
1.17.0