fpmas 1.5
Public Types | Static Public Member Functions | List of all members
fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > > Struct Template Reference

#include <graph.h>

Public Types

typedef PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > Ptr
 

Static Public Member Functions

static std::size_t size (const ObjectPack &p, const Ptr &ptr)
 
static void to_datapack (ObjectPack &pack, const Ptr &ptr)
 
static Ptr from_datapack (const ObjectPack &pack)
 

Detailed Description

template<typename GraphCellType, typename Derived>
struct fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > >

Polymorphic GraphCellBase Serializer specialization.

Serialization Scheme
Derived ObjectPack serialization ReachableCell ObjectPack serialization

The Derived part is serialized using the Serializer<PtrWrapper<Derived>> serialization, that can be defined externally without additional constraint. The input GraphCellBase pointer is dynamically cast to Derived or ReachableCell when required to call the proper Serializer specialization.

Template Parameters
GraphCellTypefinal fpmas::model::GraphCellBase type to serialize
Derivednext derived class in the polymorphic serialization chain

Member Typedef Documentation

◆ Ptr

template<typename GraphCellType , typename Derived >
typedef PtrWrapper<fpmas::model::GraphCellBase<GraphCellType, Derived> > fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > >::Ptr

Pointer wrapper to a polymorphic SpatialAgentBase.

Member Function Documentation

◆ size()

template<typename GraphCellType , typename Derived >
static std::size_t fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > >::size ( const ObjectPack p,
const Ptr ptr 
)
inlinestatic

Returns the buffer size required to serialize the GraphCellBase pointed to by ptr in p.

◆ to_datapack()

template<typename GraphCellType , typename Derived >
static void fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > >::to_datapack ( ObjectPack pack,
const Ptr ptr 
)
inlinestatic

Serializes the pointer to the polymorphic GraphCellBase into the specified ObjectPack.

Parameters
packdestination ObjectPack
ptrpointer to a polymorphic SpatialAgentBase to serialize

◆ from_datapack()

template<typename GraphCellType , typename Derived >
static Ptr fpmas::io::datapack::Serializer< PtrWrapper< fpmas::model::GraphCellBase< GraphCellType, Derived > > >::from_datapack ( const ObjectPack pack)
inlinestatic

Unserializes a polymorphic GraphCellBase from the specified ObjectPack.

First, the Derived part, that extends GraphCellBase by definition, is unserialized using the Serializer<fpmas::api::utils::PtrWrapper<Derived> specialization. During this operation, a Derived instance is dynamically allocated, that might leave the GraphCellBase members undefined. The ReachableCell part is then unserialized into this instance, and the final Derived instance is returned in the form of a polymorphic GraphCellBase pointer.

Parameters
packsource ObjectPack
Returns
unserialized pointer to a polymorphic GraphCellBase

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