18 unsigned int getPadding(
unsigned int sizeToReserve) {
31 void serialize (
const std::vector<std::string>& strings, std::vector<uint32_t>& storage ) {
32 std::ostringstream ostream;
36 copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(ostream,
delimiter));
38 unsigned sizeToReserve = ostream.str().size();
41 unsigned int sizeToPad =
getPadding(sizeToReserve);
43 if ( sizeToPad != 0 ) {
44 sizeToReserve += sizeToPad;
45 for (
unsigned i = 0 ;
i < sizeToPad;
i++ )
50 std::string
s (ostream.str());
52 storage.push_back(strings.size());
53 storage.insert(storage.end(), udata, udata+sizeToReserve/
sizeof(
uint32_t));
56 void serialize (
const std::string&
str, std::vector<uint32_t>& storage ) {
57 std::vector<std::string>
tmp(1,
str);
63 std::vector<uint32_t>::const_iterator last,
64 std::vector<std::string>& strings)
68 if ( storageSize <= 1 )
return storageSize;
69 unsigned int numOfStrings = *
first;
71 std::string whole(
reinterpret_cast<const char*
>(&*(
first+1)),
73 std::istringstream istream;
79 unsigned int readInStrings=0;
82 while ( istream.good() && readInStrings < numOfStrings ) {
84 strings.push_back(
one);
86 nChars +=
one.size() + 1;
93 std::vector<uint32_t>::const_iterator last,
96 std::vector<std::string>
tmp;