12#ifndef SST_CORE_SERIALIZATION_SERIALIZABLE_H
13#define SST_CORE_SERIALIZATION_SERIALIZABLE_H
15#include "sst/core/serialization/serializable_base.h"
16#include "sst/core/serialization/serialize.h"
21namespace SST::Core::Serialization {
26 static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max();
52class serialize_impl<T*, std::enable_if_t<std::is_base_of_v<serializable, T>>>
54 void operator()(T*& s,
serializer& ser, ser_opt_t UNUSED(options))
57 switch ( ser.mode() ) {
58 case serializer::SIZER:
59 pvt::size_serializable(sp, ser);
61 case serializer::PACK:
62 pvt::pack_serializable(sp, ser);
64 case serializer::UNPACK:
65 pvt::unpack_serializable(sp, ser);
68 pvt::map_serializable(sp, ser);
71 s =
static_cast<T*
>(sp);
74 SST_FRIEND_SERIALIZE();
82 switch ( ser.mode() ) {
83 case serializer::SIZER:
84 pvt::size_serializable(s, ser);
86 case serializer::PACK:
87 pvt::pack_serializable(s, ser);
89 case serializer::UNPACK:
90 pvt::unpack_serializable(s, ser);
91 t =
dynamic_cast<T*
>(s);
102 inline void operator()(T& t,
serializer& ser, ser_opt_t UNUSED(options))
106 t.serialize_order(ser);
116 SST_FRIEND_SERIALIZE();
Definition serializable_base.h:119
Definition serializable.h:24
Base serialize class.
Definition serialize.h:110
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:45