nfx-serialization 0.9.3
Cross-platform C++ JSON serialization library with extensible trait capabilities
Loading...
Searching...
No Matches
SerializationTraits.h File Reference

Unified serialization traits for JSON serialization/deserialization. More...

#include <nfx/json/Builder.h>
#include <nfx/json/Document.h>
#include <stdexcept>
#include <variant>
#include <string>
#include <type_traits>
#include <vector>
Include dependency graph for SerializationTraits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  nfx::serialization::json::detail::has_streaming_serialization< T, typename >
 SFINAE detector for streaming serialization. More...
struct  nfx::serialization::json::detail::has_streaming_serialization< T, std::void_t< decltype(SerializationTraits< T >::serialize(std::declval< const T & >(), std::declval< nfx::json::Builder & >()))> >
 SFINAE detector for streaming serialization (specialized version). More...
struct  nfx::serialization::json::detail::has_factory_deserialization< T, typename >
 SFINAE detector for factory deserialization. More...
struct  nfx::serialization::json::detail::has_factory_deserialization< T, std::void_t< decltype(SerializationTraits< T >::fromDocument(std::declval< const Document & >()))> >
 SFINAE detector for factory deserialization (specialized version). More...
struct  nfx::serialization::json::SerializationTraits< T >
 Serialization traits template (forward declaration). More...
struct  nfx::serialization::json::SerializationTraits< std::monostate >
 Specialization for std::monostate (empty variant alternative). More...

Variables

template<typename T>
constexpr bool nfx::serialization::json::detail::has_streaming_serialization_v = has_streaming_serialization<T>::value
 Helper variable template for has_streaming_serialization.
template<typename T>
constexpr bool nfx::serialization::json::detail::has_factory_deserialization_v = has_factory_deserialization<T>::value
 Helper variable template for has_factory_deserialization.

Detailed Description

Unified serialization traits for JSON serialization/deserialization.

Contains SerializationTraits template that provides the extensible serialization framework for nfx-serialization library.

SerializationTraits provides two complementary methods:

  • serialize(): High-performance streaming serialization (write)
  • fromDocument(): DOM-based deserialization (read)

Users can specialize this trait to customize serialization behavior for their own types.

For serialization support of nfx framework types (datetime, datatypes, containers), include the appropriate extension headers:

  • include <nfx/serialization/json/extensions/DateTimeTraits.h>
  • include <nfx/serialization/json/extensions/DatatypesTraits.h>
  • include <nfx/serialization/json/extensions/ContainersTraits.h>

Definition in file SerializationTraits.h.

Variable Documentation

◆ has_factory_deserialization_v

template<typename T>
bool nfx::serialization::json::detail::has_factory_deserialization_v = has_factory_deserialization<T>::value
inlineconstexpr

Helper variable template for has_factory_deserialization.

Definition at line 130 of file SerializationTraits.h.

◆ has_streaming_serialization_v

template<typename T>
bool nfx::serialization::json::detail::has_streaming_serialization_v = has_streaming_serialization<T>::value
inlineconstexpr

Helper variable template for has_streaming_serialization.

Definition at line 102 of file SerializationTraits.h.