12 #ifndef SPROCKIT_COMMON_MESSAGES_spkt_serializer_H_INCLUDED
13 #define SPROCKIT_COMMON_MESSAGES_spkt_serializer_H_INCLUDED
16 #include <sst/core/serialization/serialize_packer.h>
17 #include <sst/core/serialization/serialize_sizer.h>
18 #include <sst/core/serialization/serialize_unpacker.h>
29 namespace Serialization {
78 unpacker_.unpack<T>(t);
91 set_mode(SERIALIZE_MODE mode) {
118 template <
class T,
int N>
123 sizer_.add(
sizeof(T) * N);
127 char* charstr = packer_.next_str(N*
sizeof(T));
128 ::memcpy(charstr, arr, N*
sizeof(T));
132 char* charstr = unpacker_.next_str(N*
sizeof(T));
133 ::memcpy(arr, charstr, N*
sizeof(T));
139 template <
typename T,
typename Int>
141 binary(T*& buffer, Int& size){
144 sizer_.add(
sizeof(Int));
154 packer_.pack(nullsize);
159 unpacker_.unpack(size);
172 template <
typename Int>
174 binary(
void*& buffer, Int& size){
175 char* tmp = (
char*) buffer;
176 binary<char>(tmp, size);
181 string(std::string& str);
184 start_packing(
char* buffer,
size_t size){
185 packer_.init(buffer, size);
196 start_unpacking(
char* buffer,
size_t size){
197 unpacker_.init(buffer, size);
204 case SIZER:
return sizer_.size();
205 case PACK:
return packer_.size();
206 case UNPACK:
return unpacker_.size();
217 SERIALIZE_MODE mode_;
This class is basically a wrapper for objects to declare the order in which their members should be s...
Definition: serializer.h:35
void unpack_buffer(void *buf, int size)
unpack_buffer
Definition: serializer.cc:22
Definition: serialize_packer.h:23
void pack_buffer(void *buf, int size)
pack_buffer
Definition: serializer.cc:37
Definition: serialize_sizer.h:21
Definition: serialize_unpacker.h:22