15 copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(
m_ostream,
s_delimiter));
24 unsigned sizeToReserve =
m_ostream.str().size();
27 unsigned int sizeToPad =
getPadding(sizeToReserve);
29 if ( sizeToPad != 0 ) {
30 sizeToReserve += sizeToPad;
31 for (
unsigned i = 0 ; i < sizeToPad; i++ )
37 const uint32_t * uarray =
reinterpret_cast<const uint32_t*
> (s.data());
39 storage.push_back(strings.size());
40 storage.insert(storage.end(), &uarray[0], &uarray[sizeToReserve/
sizeof(uint32_t)]);
55 std::vector<std::string> tmp(1,
str);
60 std::vector<uint32_t>::const_iterator last,
61 std::vector<std::string>& strings)
63 std::size_t storageSize = std::distance(first, last);
65 if ( storageSize <= 1 )
return storageSize;
66 unsigned int numOfStrings = *first;
77 std::string whole(
reinterpret_cast<const char*
>(&*(first+1)),
78 (storageSize-1)*
sizeof(uint32_t));
84 unsigned int readInStrings=0;
87 while (
m_istream.good() && readInStrings < numOfStrings ) {
89 strings.push_back(one);
91 nChars += one.size() + 1;
94 return 1 + (nChars+
getPadding(nChars))/
sizeof(uint32_t);
98 std::vector<uint32_t>::const_iterator last,
101 std::vector<std::string> tmp;
102 std::size_t nWords =
deserialize(first, last, tmp);
103 if (tmp.size() == 1 )
110 if ( storage.size() <= 1 )
static const char *const s_delimiter
default delimeter which is put between strings from the input vector while serialization happens
void serialize(const std::vector< std::string > &strings, std::vector< uint32_t > &storage)
Serializes vector of strings into vector of integers.
std::size_t deserialize(std::vector< uint32_t >::const_iterator first, std::vector< uint32_t >::const_iterator last, std::vector< std::string > &strings)
Deserialize vector into strings.
std::ostringstream m_ostream
sstream used in serialization
unsigned int inquireSize(const std::vector< uint32_t > &storage)
Return number of strings serialized into 'storage'.
std::istringstream m_istream
sstream used in de-serialization
unsigned int getPadding(unsigned int sizeToReserve)
Get number of padding bytes needed to align with uint32_t.