39 #ifndef SERIALIZATION_TOOLS_HEADER
40 #define SERIALIZATION_TOOLS_HEADER
46 template <
typename VectorType>
49 size_t sizeOfOneElement =
sizeof(
typename VectorType::value_type);
50 return sizeof(size_t) + v.size() * sizeOfOneElement;
55 template <
typename VectorType>
57 size_t nElements = v.size();
58 memcpy(p, &nElements,
sizeof(
size_t));
60 size_t sizeOfOneElement =
sizeof(
typename VectorType::value_type);
61 size_t sizeOfAllElements = v.size() * sizeOfOneElement;
62 memcpy(p, &v[0], sizeOfAllElements);
63 p += sizeOfAllElements;
68 template <
typename VectorType>
70 assert(bufEndPtr > p);
71 size_t nBytesInBuffer = bufEndPtr - p;
72 assert(nBytesInBuffer >=
sizeof(
size_t));
74 memcpy(&nElements, p,
sizeof(
size_t));
77 size_t sizeOfOneElement =
sizeof(
typename VectorType::value_type);
78 size_t sizeOfAllElements = nElements * sizeOfOneElement;
79 assert(sizeOfAllElements +
sizeof(
size_t) <= nBytesInBuffer);
81 memcpy(&v[0], p, sizeOfAllElements);
82 p += sizeOfAllElements;