ATLAS Offline Software
Functions
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  }

◆ 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  }

◆ 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  }
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
Trk::one
@ one
Definition: TrkDetDescr/TrkSurfaces/TrkSurfaces/RealQuadraticEquation.h:22
python.AthDsoLogger.delimiter
delimiter
Definition: AthDsoLogger.py:70
lumiFormat.i
int i
Definition: lumiFormat.py:85
python.FPGATrackSimSecondStageConfig.getPadding
def getPadding(region)
Definition: FPGATrackSimSecondStageConfig.py:212
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
HLT::StringSerializer::deserialize
std::size_t deserialize(std::vector< uint32_t >::const_iterator first, std::vector< uint32_t >::const_iterator last, std::string &str)
Definition: TrigEvent/TrigNavStructure/Root/StringSerializer.cxx:92
DeMoScan.first
bool first
Definition: DeMoScan.py:534
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
str
Definition: BTagTrackIpAccessor.cxx:11
calibdata.copy
bool copy
Definition: calibdata.py:26
HLT::StringSerializer::serialize
void serialize(const std::string &str, std::vector< uint32_t > &storage)
Definition: TrigEvent/TrigNavStructure/Root/StringSerializer.cxx:56
Amg::distance
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space
Definition: GeoPrimitivesHelpers.h:54