userver: userver/formats/json/parser/int_parser.hpp Source File
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
int_parser.hpp
1#pragma once
2
3#include <cstdint>
4
5#include <userver/formats/json/parser/typed_parser.hpp>
6
7USERVER_NAMESPACE_BEGIN
8
9namespace formats::json::parser {
10
11template <typename T = int>
12class IntegralParser;
13
14template <>
15class IntegralParser<std::int32_t> final : public TypedParser<std::int32_t> {
16 public:
17 using TypedParser<std::int32_t>::TypedParser;
18
19 private:
20 void Int64(std::int64_t i) override;
21
22 void Uint64(std::uint64_t i) override;
23
24 void Double(double value) override;
25
26 std::string GetPathItem() const override { return {}; }
27
28 std::string Expected() const override { return "integer"; }
29};
30
31template <>
32class IntegralParser<std::int64_t> final : public TypedParser<std::int64_t> {
33 public:
34 using TypedParser<std::int64_t>::TypedParser;
35
36 private:
37 void Int64(std::int64_t i) override;
38
39 void Uint64(std::uint64_t i) override;
40
41 void Double(double value) override;
42
43 std::string GetPathItem() const override { return {}; }
44
45 std::string Expected() const override { return "integer"; }
46};
47
48using IntParser = IntegralParser<std::int32_t>;
49using Int32Parser = IntegralParser<std::int32_t>;
50using Int64Parser = IntegralParser<std::int64_t>;
51
52} // namespace formats::json::parser
53
54USERVER_NAMESPACE_END