checkpoint::dispatch::vrt namespace

Namespaces

namespace objregistry
namespace serializer_registry

Classes

template<typename BaseT>
struct _CheckpointBaseType
template<typename BaseT>
struct _CheckpointBaseType<BaseT*>
template<typename BaseT>
struct _CheckpointBaseType<SerializableBase<BaseT>*>
template<typename DerivedT>
struct _CheckpointDerivedType
template<typename DerivedT>
struct _CheckpointDerivedType<DerivedT*>
template<typename DerivedT, typename BaseT>
struct _CheckpointDerivedType<SerializableDerived<DerivedT, BaseT>*>
template<typename ObjT, typename SerializerT, typename = void>
struct InstantiateIfPossible
template<typename ObjT, typename... Ts>
struct InstantiateTupleHelper
template<typename ObjT>
struct InstantiateTupleHelper<ObjT>
template<typename ObjT, typename T, typename... Ts>
struct InstantiateTupleHelper<ObjT, T, Ts...>
template<typename ObjT, typename SerializerT>
struct InstantiateIfPossible<ObjT, SerializerT, typename std::enable_if_t<SerializableTraits<ObjT, SerializerT>::has_serialize_function or SerializableTraits<ObjT, SerializerT>::is_bytecopyable>>
template<typename ObjT, typename SerializerT>
struct InstantiateIfPossible<ObjT, SerializerT, typename std::enable_if_t<not(SerializableTraits<ObjT, SerializerT>::has_serialize_function or SerializableTraits<ObjT, SerializerT>::is_bytecopyable)>>
template<typename BaseT>
struct SerializableBase
A class at the base of an inheritance hierarchy should inherit from this.
template<typename DerivedT, typename BaseT>
struct SerializableDerived
A derived class of an inheritance hierarchy should inherit from this.
template<typename T>
struct VirtualSerializeTraits

Typedefs

template<typename DerivedT>
using checkpoint_derived_type_t = typename _CheckpointDerivedType<DerivedT>::type
using TypeIdx = int
template<typename ObjT>
using checkpoint_base_type_t = typename _CheckpointBaseType<decltype(std::declval<ObjT>()._CheckpointVSBaseTypeFn())>::type

Functions

template<typename ObjT>
void assertTypeIdxMatch(TypeIdx const expected_idx)
template<typename SerializerT, typename DerivedT, typename BaseT>
void linkDerivedToBase()
template<typename ObjT, typename SerializerT>
static void instantiateObjSerializerImpl()
template<typename T, typename SerializerT>
void virtualSerialize(T*& base, SerializerT& s)
A function to handle serialization of objects of a mix of types in a virtual inheritance hierarchy.

Variables

static const TypeIdx no_type_idx constexpr

Typedef documentation

template<typename DerivedT>
using checkpoint::dispatch::vrt::checkpoint_derived_type_t = typename _CheckpointDerivedType<DerivedT>::type

using checkpoint::dispatch::vrt::TypeIdx = int

template<typename ObjT>
using checkpoint::dispatch::vrt::checkpoint_base_type_t = typename _CheckpointBaseType<decltype(std::declval<ObjT>()._CheckpointVSBaseTypeFn())>::type

Function documentation

template<typename ObjT>
void checkpoint::dispatch::vrt::assertTypeIdxMatch(TypeIdx const expected_idx)

template<typename SerializerT, typename DerivedT, typename BaseT>
void checkpoint::dispatch::vrt::linkDerivedToBase()

template<typename ObjT, typename SerializerT>
static void checkpoint::dispatch::vrt::instantiateObjSerializerImpl()

template<typename T, typename SerializerT>
void checkpoint::dispatch::vrt::virtualSerialize(T*& base, SerializerT& s)

A function to handle serialization of objects of a mix of types in a virtual inheritance hierarchy.

This will automatically record the exact derived type at serialization, and reconstruct objects accordingly at deserialization.

Variable documentation

static const TypeIdx checkpoint::dispatch::vrt::no_type_idx constexpr