userver: userver/chaotic/ref.hpp Source File
Loading...
Searching...
No Matches
ref.hpp
1#pragma once
2
3#include <userver/formats/common/meta.hpp>
4#include <userver/formats/json/value.hpp>
5#include <userver/utils/box.hpp>
6
7USERVER_NAMESPACE_BEGIN
8
9namespace chaotic {
10
11template <typename T>
12struct Ref {
13 const utils::Box<formats::common::ParseType<formats::json::Value, T>>& value;
14};
15
16template <typename Value, typename T>
17utils::Box<formats::common::ParseType<Value, T>> Parse(
18 const Value& value, formats::parse::To<Ref<T>>) {
19 auto result = value.template As<T>();
20 return result;
21}
22
23template <typename Value, typename T>
24Value Serialize(const Ref<T>& ps, formats::serialize::To<Value>) {
25 return typename Value::Builder{T{*ps.value}}.ExtractValue();
26}
27
28} // namespace chaotic
29
30USERVER_NAMESPACE_END