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"
22namespace SST::Core::Serialization {
27 static constexpr uint32_t NullClsId = std::numeric_limits<uint32_t>::max();
53class serialize_impl<T*, std::enable_if_t<std::is_base_of_v<serializable, T>>>
55 void operator()(T*& s,
serializer& ser, ser_opt_t UNUSED(options))
58 switch ( ser.mode() ) {
59 case serializer::SIZER:
60 pvt::size_serializable(sp, ser);
62 case serializer::PACK:
63 pvt::pack_serializable(sp, ser);
65 case serializer::UNPACK:
66 pvt::unpack_serializable(sp, ser);
69 pvt::map_serializable(sp, ser);
72 s =
static_cast<T*
>(sp);
75 SST_FRIEND_SERIALIZE();
83 switch ( ser.mode() ) {
84 case serializer::SIZER:
85 pvt::size_serializable(s, ser);
87 case serializer::PACK:
88 pvt::pack_serializable(s, ser);
90 case serializer::UNPACK:
91 pvt::unpack_serializable(s, ser);
92 t =
dynamic_cast<T*
>(s);
103 inline void operator()(T& t,
serializer& ser, ser_opt_t UNUSED(options))
107 t.serialize_order(ser);
117 SST_FRIEND_SERIALIZE();
Definition serializable_base.h:121
Definition serializable.h:25
Base serialize class.
Definition serialize.h:132
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition serializer.h:43