di 0.1.0
Loading...
Searching...
No Matches
di::JsonDeserializer< Reader > Class Template Reference

A deserializer for the JSON format. More...

#include <di/serialization/json_deserializer.h>

Public Types

using DeserializationFormat = JsonFormat
 

Public Member Functions

template<typename T>
requires (concepts::ConstructibleFrom<Reader, T>)
constexpr JsonDeserializer (T &&reader)
 
constexpr auto deserialize (InPlaceType< json::Value >) -> Result< json::Value >
 
template<typename T, concepts::InstanceOf< reflection::Fields > M>
constexpr auto deserialize (InPlaceType< T >, M fields) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Enumerators > M>
constexpr auto deserialize (InPlaceType< T >, M enumerators) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_bool() || M::is_integer() || M::is_string())
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T > requires(M::is_custom_atom() &&
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_tuple() && detail::all_deserializable<JsonDeserializer, meta::TupleElements<T>>)
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_variant() && detail::all_deserializable<JsonDeserializer, meta::VariantTypes<T>>)
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M, typename U = meta::Type<meta::RemoveCVRef<T>>>
requires (M::is_box() && concepts::Deserializable<U, JsonDeserializer>)
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_list() && concepts::Deserializable<meta::ContainerValue<T>, JsonDeserializer>)
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_map() && concepts::SameAs<json::String, meta::TupleElement<meta::ContainerValue<T>, 0>> && concepts::Deserializable<meta::TupleElement<meta::ContainerValue<T>, 1>, JsonDeserializer>)
constexpr auto deserialize (InPlaceType< T >, M) -> Result< T >
 
constexpr auto deserialize (InPlaceType< json::Null >) -> Result< json::Null >
 
constexpr auto reader () &-> Reader &
 
constexpr auto reader () const &-> Reader const &
 
constexpr auto reader () &&-> Reader &&
 

Public Attributes

auto result = DI_TRY(di::parse<T>(string.view()))
 
return result
 

Detailed Description

template<concepts::Impl< io::Reader > Reader>
class di::JsonDeserializer< Reader >

A deserializer for the JSON format.

Template Parameters
ReaderThe type of the reader to read from.

This implements the JSON grammar as specified in RFC 8259.

Member Typedef Documentation

◆ DeserializationFormat

template<concepts::Impl< io::Reader > Reader>
using di::serialization::JsonDeserializer< Reader >::DeserializationFormat = JsonFormat

Constructor & Destructor Documentation

◆ JsonDeserializer()

template<concepts::Impl< io::Reader > Reader>
template<typename T>
requires (concepts::ConstructibleFrom<Reader, T>)
di::serialization::JsonDeserializer< Reader >::JsonDeserializer ( T && reader)
inlineexplicitconstexpr

Member Function Documentation

◆ deserialize() [1/11]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< json::Null > ) -> Result<json::Null>
inlineconstexpr

◆ deserialize() [2/11]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< json::Value > ) -> Result<json::Value>
inlineconstexpr

◆ deserialize() [3/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Enumerators > M>
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M enumerators ) -> Result<T>
inlineconstexpr

◆ deserialize() [4/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Fields > M>
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M fields ) -> Result<T>
inlineconstexpr

◆ deserialize() [5/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_bool() || M::is_integer() || M::is_string())
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [6/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_tuple() && detail::all_deserializable<JsonDeserializer, meta::TupleElements<T>>)
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [7/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_variant() && detail::all_deserializable<JsonDeserializer, meta::VariantTypes<T>>)
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [8/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M, typename U = meta::Type<meta::RemoveCVRef<T>>>
requires (M::is_box() && concepts::Deserializable<U, JsonDeserializer>)
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [9/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_list() && concepts::Deserializable<meta::ContainerValue<T>, JsonDeserializer>)
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [10/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
requires (M::is_map() && concepts::SameAs<json::String, meta::TupleElement<meta::ContainerValue<T>, 0>> && concepts::Deserializable<meta::TupleElement<meta::ContainerValue<T>, 1>, JsonDeserializer>)
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T>
inlineconstexpr

◆ deserialize() [11/11]

template<concepts::Impl< io::Reader > Reader>
template<typename T, concepts::InstanceOf< reflection::Atom > M>
auto di::serialization::JsonDeserializer< Reader >::deserialize ( InPlaceType< T > ,
M  ) -> Result<T> requires(M::is_custom_atom() &&
inlineconstexpr

◆ reader() [1/3]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::reader ( ) && -> Reader&&
inlineconstexpr

◆ reader() [2/3]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::reader ( ) & -> Reader&
inlineconstexpr

◆ reader() [3/3]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::reader ( ) const & -> Reader const&
inlineconstexpr

Member Data Documentation

◆ result [1/2]

template<concepts::Impl< io::Reader > Reader>
auto di::serialization::JsonDeserializer< Reader >::result = DI_TRY(di::parse<T>(string.view()))

◆ result [2/2]

template<concepts::Impl< io::Reader > Reader>
return di::serialization::JsonDeserializer< Reader >::result

The documentation for this class was generated from the following file: