ATLAS Offline Software
Loading...
Searching...
No Matches
HLT::StringSerializer Namespace Reference

Functions

void serialize (const std::vector< std::string > &strings, std::vector< uint32_t > &storage)
void serialize (const std::string &str, std::vector< uint32_t > &storage)
std::size_t deserialize (std::vector< uint32_t >::const_iterator first, std::vector< uint32_t >::const_iterator last, std::vector< std::string > &strings)
std::size_t deserialize (std::vector< uint32_t >::const_iterator first, std::vector< uint32_t >::const_iterator last, std::string &str)

Function Documentation

◆ deserialize() [1/2]

size_t HLT::StringSerializer::deserialize ( std::vector< uint32_t >::const_iterator first,
std::vector< uint32_t >::const_iterator last,
std::string & str )

Definition at line 92 of file TrigEvent/TrigNavStructure/Root/StringSerializer.cxx.

95 {
96 std::vector<std::string> tmp;
97 std::size_t nWords = deserialize(first, last, tmp);
98 if (tmp.size() == 1 )
99 str = tmp[0];
100
101 return nWords;
102 }
std::size_t deserialize(std::vector< uint32_t >::const_iterator first, std::vector< uint32_t >::const_iterator last, std::vector< std::string > &strings)

◆ deserialize() [2/2]

size_t HLT::StringSerializer::deserialize ( std::vector< uint32_t >::const_iterator first,
std::vector< uint32_t >::const_iterator last,
std::vector< std::string > & strings )

Definition at line 62 of file TrigEvent/TrigNavStructure/Root/StringSerializer.cxx.

65 {
66 std::size_t storageSize = std::distance(first, last);
67
68 if ( storageSize <= 1 ) return storageSize;
69 unsigned int numOfStrings = *first;
70
71 std::string whole(reinterpret_cast<const char*>(&*(first+1)),
72 (storageSize-1)*sizeof(uint32_t));
73 std::istringstream istream;
74
75 istream.clear(); // istream reset
76 istream.str(whole);
77
78 std::string one;
79 unsigned int readInStrings=0;
80 std::size_t nChars=0;
81
82 while ( istream.good() && readInStrings < numOfStrings ) {
83 getline(istream, one, delimiter[0]);
84 strings.push_back(one);
85 readInStrings++;
86 nChars += one.size() + 1;
87 }
88
89 return 1 + (nChars+getPadding(nChars))/sizeof(uint32_t); // # uint32_t words (incl. header)
90 }

◆ serialize() [1/2]

void HLT::StringSerializer::serialize ( const std::string & str,
std::vector< uint32_t > & storage )

Definition at line 56 of file TrigEvent/TrigNavStructure/Root/StringSerializer.cxx.

56 {
57 std::vector<std::string> tmp(1, str);
58 return serialize(tmp, storage);
59 }
void serialize(const std::vector< std::string > &strings, std::vector< uint32_t > &storage)

◆ serialize() [2/2]

void HLT::StringSerializer::serialize ( const std::vector< std::string > & strings,
std::vector< uint32_t > & storage )

Definition at line 31 of file TrigEvent/TrigNavStructure/Root/StringSerializer.cxx.

31 {
32 std::ostringstream ostream;
33 ostream.str(""); // ostream reset
34
35 // copy strings into m_ostream with delimiter after each element (even after last element)
36 copy(strings.begin(), strings.end(), std::ostream_iterator<std::string>(ostream, delimiter));
37
38 unsigned sizeToReserve = ostream.str().size();
39
40 // Pad with '\n'
41 unsigned int sizeToPad = getPadding(sizeToReserve);
42
43 if ( sizeToPad != 0 ) {
44 sizeToReserve += sizeToPad;
45 for ( unsigned i = 0 ; i < sizeToPad; i++ )
46 ostream << delimiter;
47 }
48 ostream.flush();
49
50 std::string s (ostream.str());
51 const uint32_t* udata = reinterpret_cast<const uint32_t*> (s.data());
52 storage.push_back(strings.size()); // put number of strings first
53 storage.insert(storage.end(), udata, udata+sizeToReserve/sizeof(uint32_t));
54 }
STL class.
const FeatureContainerInit< FEATURE, CONTAINER > RegisterFeatureContainerTypes< FEATURE, CONTAINER >::s