userver: userver/formats/json/parser/number_parser.hpp Source File
Loading...
Searching...
No Matches
number_parser.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/formats/json/parser/number_parser.hpp
4/// @brief @copybrief formats::json::parser::NumberParser
5/// @ingroup userver_universal
6
7#include <userver/formats/json/parser/typed_parser.hpp>
8
9USERVER_NAMESPACE_BEGIN
10
11namespace formats::json::parser {
12
13/// @brief SAX parsers for JSON floating-point numbers.
14template <typename Number>
15class NumberParser final : public formats::json::parser::TypedParser<Number> {
16public:
17 using formats::json::parser::TypedParser<Number>::TypedParser;
18
19protected:
20 void Int64(int64_t value) override { this->SetResult(value); }
21
22 void Uint64(uint64_t value) override { this->SetResult(value); }
23
24 void Double(double value) override { this->SetResult(std::move(value)); }
25
26 std::string Expected() const override { return "number"; }
27
28 std::string GetPathItem() const override { return {}; }
29};
30
31using DoubleParser = NumberParser<double>;
32
33using FloatParser = NumberParser<float>;
34
35} // namespace formats::json::parser
36
37USERVER_NAMESPACE_END