20 copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(
m_ostream,
s_delimiter));
29 unsigned sizeToReserve =
m_ostream.str().size();
32 unsigned int sizeToPad =
getPadding(sizeToReserve);
34 if ( sizeToPad != 0 ) {
35 sizeToReserve += sizeToPad;
36 for (
unsigned i = 0 ; i < sizeToPad; i++ )
42 const uint32_t * uarray =
reinterpret_cast<const uint32_t*
> (s.data());
44 storage.push_back(strings.size());
45 storage.insert(storage.end(), &uarray[0], &uarray[sizeToReserve/
sizeof(uint32_t)]);
60 std::vector<std::string> tmp(1,
str);
65 std::vector<uint32_t>::const_iterator last,
66 std::vector<std::string>& strings)
68 std::size_t storageSize = std::distance(first, last);
70 if ( storageSize <= 1 )
return storageSize;
71 unsigned int numOfStrings = *first;
82 std::string whole(
reinterpret_cast<const char*
>(&*(first+1)),
83 (storageSize-1)*
sizeof(uint32_t));
89 unsigned int readInStrings=0;
92 while (
m_istream.good() && readInStrings < numOfStrings ) {
94 strings.push_back(one);
96 nChars += one.size() + 1;
99 return 1 + (nChars+
getPadding(nChars))/
sizeof(uint32_t);
103 std::vector<uint32_t>::const_iterator last,
106 std::vector<std::string> tmp;
107 std::size_t nWords =
deserialize(first, last, tmp);
108 if (tmp.size() == 1 )
115 if ( storage.size() <= 1 )
std::istringstream m_istream
sstream used in de-serialization
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'.
unsigned int getPadding(unsigned int sizeToReserve)
Get number of padding bytes needed to align with uint32_t.