userver: userver/formats/json/parser/validator.hpp Source File
Loading...
Searching...
No Matches
validator.hpp
1#pragma once
2
3#include <utility>
4
5USERVER_NAMESPACE_BEGIN
6
7namespace formats::json::parser {
8
9template <typename T>
11public:
12 virtual void operator()(const T& t) const = 0;
13};
14
15template <typename T, typename F>
16class Validator final : public BaseValidator<T> {
17public:
18 explicit Validator(F f)
19 : f_(std::move(f))
20 {}
21
22 void operator()(const T& t) const override { f_(t); }
23
24private:
25 F f_;
26};
27
28template <typename T>
29class EmptyValidator final : public BaseValidator<T> {
30public:
31 void operator()(const T&) const override {}
32};
33
34template <typename T, typename F>
35auto MakeValidator(F f) {
36 return Validator<T, F>(std::move(f));
37}
38
39template <typename T>
40inline constexpr EmptyValidator<T> kEmptyValidator;
41
42} // namespace formats::json::parser
43
44USERVER_NAMESPACE_END