cereal
A C++11 library for serialization
Public Member Functions | List of all members
cereal::detail::PolymorphicVirtualCaster< Base, Derived > Struct Template Reference

Strongly typed derivation of PolymorphicCaster. More...

#include </build/libcereal-SAfJB3/libcereal-1.3.2+dfsg/include/cereal/details/polymorphic_impl.hpp>

Inheritance diagram for cereal::detail::PolymorphicVirtualCaster< Base, Derived >:
cereal::detail::PolymorphicCaster

Public Member Functions

 PolymorphicVirtualCaster ()
 Inserts an entry in the polymorphic casting map for this pairing. More...
 
void const * downcast (void const *const ptr) const override
 Performs the proper downcast with the templated types. More...
 
void * upcast (void *const ptr) const override
 Performs the proper upcast with the templated types. More...
 
std::shared_ptr< void > upcast (std::shared_ptr< void > const &ptr) const override
 Performs the proper upcast with the templated types (shared_ptr version) More...
 
- Public Member Functions inherited from cereal::detail::PolymorphicCaster
 PolymorphicCaster (const PolymorphicCaster &)=default
 
PolymorphicCasteroperator= (const PolymorphicCaster &)=default
 
 PolymorphicCaster (PolymorphicCaster &&) CEREAL_NOEXCEPT
 
PolymorphicCasteroperator= (PolymorphicCaster &&) CEREAL_NOEXCEPT
 
virtual void const * downcast (void const *const ptr) const =0
 Downcasts to the proper derived type. More...
 
virtual void * upcast (void *const ptr) const =0
 Upcast to proper base type. More...
 
virtual std::shared_ptr< void > upcast (std::shared_ptr< void > const &ptr) const =0
 Upcast to proper base type, shared_ptr version. More...
 

Detailed Description

template<class Base, class Derived>
struct cereal::detail::PolymorphicVirtualCaster< Base, Derived >

Strongly typed derivation of PolymorphicCaster.

Constructor & Destructor Documentation

◆ PolymorphicVirtualCaster()

template<class Base , class Derived >
cereal::detail::PolymorphicVirtualCaster< Base, Derived >::PolymorphicVirtualCaster ( )
inline

Inserts an entry in the polymorphic casting map for this pairing.

Creates an explicit mapping between Base and Derived in both upwards and downwards directions, allowing void pointers to either to be properly cast assuming dynamic type information is available

Member Function Documentation

◆ downcast()

template<class Base , class Derived >
void const * cereal::detail::PolymorphicVirtualCaster< Base, Derived >::downcast ( void const *const  ptr) const
inlineoverridevirtual

Performs the proper downcast with the templated types.

Implements cereal::detail::PolymorphicCaster.

◆ upcast() [1/2]

template<class Base , class Derived >
std::shared_ptr< void > cereal::detail::PolymorphicVirtualCaster< Base, Derived >::upcast ( std::shared_ptr< void > const &  ptr) const
inlineoverridevirtual

Performs the proper upcast with the templated types (shared_ptr version)

Implements cereal::detail::PolymorphicCaster.

◆ upcast() [2/2]

template<class Base , class Derived >
void * cereal::detail::PolymorphicVirtualCaster< Base, Derived >::upcast ( void *const  ptr) const
inlineoverridevirtual

Performs the proper upcast with the templated types.

Implements cereal::detail::PolymorphicCaster.


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