12 #ifndef SST_CORE_SERIALIZATION_SERIALIZER_H 13 #define SST_CORE_SERIALIZATION_SERIALIZER_H 17 #define SST_INCLUDING_SERIALIZER_H 18 #include "sst/core/serialization/impl/mapper.h" 19 #include "sst/core/serialization/impl/packer.h" 20 #include "sst/core/serialization/impl/sizer.h" 21 #include "sst/core/serialization/impl/unpacker.h" 23 #undef SST_INCLUDING_SERIALIZER_H 25 #include "sst/core/warnmacros.h" 36 class ObjectMapContext;
45 enum SERIALIZE_MODE :
size_t { SIZER = 1, PACK, UNPACK, MAP };
46 static constexpr SERIALIZE_MODE UNSTARTED { 0 };
50 mode()
const {
return SERIALIZE_MODE(ser_.index()); }
60 void start_sizing() { ser_.emplace<SIZER>(); }
61 void start_packing(
char* buffer,
size_t size) { ser_.emplace<PACK>(buffer, size); }
62 void start_unpacking(
char* buffer,
size_t size) { ser_.emplace<UNPACK>(buffer, size); }
63 void start_mapping(
ObjectMap* obj) { ser_.emplace<MAP>(obj); }
69 void finalize() { ser_.emplace<UNSTARTED>(); }
106 unpacker().unpack(t);
113 template <
typename ELEM_T,
typename SIZE_T>
114 void binary(ELEM_T*& buffer, SIZE_T& size)
118 sizer().size_buffer(buffer, size);
121 packer().pack_buffer(buffer, size);
124 unpacker().unpack_buffer(buffer, size);
131 void raw(
void* data,
size_t size);
133 void string(std::string& str);
135 void enable_pointer_tracking(
bool value =
true) { enable_ptr_tracking_ = value; }
136 bool is_pointer_tracking_enabled()
const {
return enable_ptr_tracking_; }
137 const char* getMapName()
const;
143 std::variant<std::monostate, pvt::ser_sizer, pvt::ser_packer, pvt::ser_unpacker, pvt::ser_mapper> ser_;
145 bool enable_ptr_tracking_ =
false;
159 const char*
const name;
164 prevContext(ser.mapContext),
167 DISABLE_WARN_DANGLING_POINTER
168 ser.mapContext =
this;
172 const char* getName()
const {
return name; }
177 #endif // SST_CORE_SERIALIZATION_SERIALIZER_H This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition: serializer.h:42
Base class for objects created by the serializer mapping mode used to map the variables for objects...
Definition: objectMap.h:158
ObjectMap context which is saved in a virtual stack when name or other information changes...
Definition: serializer.h:155
Definition: unpacker.h:31