ATLAS Offline Software
Loading...
Searching...
No Matches
DataHeaderElementCnv_p4 Class Reference

This class provides the converter to customize the saving of DataHeaderElement_p4. More...

#include <DataHeaderCnv_p4.h>

Collaboration diagram for DataHeaderElementCnv_p4:

Public Member Functions

 DataHeaderElementCnv_p4 ()
void persToTrans (const DataHeaderElement_p4 *pers, DataHeaderElement *trans, const std::vector< std::string > &map)
void transToPers (const DataHeaderElement *trans, DataHeaderElement_p4 *pers, std::vector< std::string > &map)

Friends

class DataHeaderCnv_p4

Detailed Description

This class provides the converter to customize the saving of DataHeaderElement_p4.

Definition at line 21 of file DataHeaderCnv_p4.h.

Constructor & Destructor Documentation

◆ DataHeaderElementCnv_p4()

DataHeaderElementCnv_p4::DataHeaderElementCnv_p4 ( )

Definition at line 18 of file DataHeaderCnv_p4.cxx.

18{}

Member Function Documentation

◆ persToTrans()

void DataHeaderElementCnv_p4::persToTrans ( const DataHeaderElement_p4 * pers,
DataHeaderElement * trans,
const std::vector< std::string > & map )

Definition at line 21 of file DataHeaderCnv_p4.cxx.

23 {
24 std::vector<unsigned int>::const_iterator intIter = pers->m_clids.begin();
25 const std::vector<unsigned int>::const_iterator intLast = pers->m_clids.end();
26 trans->m_pClid = *intIter; ++intIter;
27 trans->m_clids.assign (intIter, intLast);
28 std::vector<std::string>::const_iterator strIter = pers->m_alias.begin();
29 trans->m_key = *strIter; ++strIter;
30 trans->m_alias.assign (strIter, pers->m_alias.end());
31 if (!std::ranges::is_sorted (trans->m_alias)) {
32 // Should really be sorted, but just in case...
33 std::ranges::sort (trans->m_alias);
34 auto ret = std::ranges::unique (trans->m_alias);
35 trans->m_alias.erase (ret.begin(), ret.end());
36 }
37 trans->m_hashes.clear();
38 trans->m_hashes.reserve(pers->m_hashes.size());
39 for (std::vector<uint64_t>::const_iterator iter = pers->m_hashes.begin(),
40 last = pers->m_hashes.end(); iter != last; ++iter) {
41 trans->m_hashes.push_back((unsigned int)(*iter));
42 }
43// Translate PoolToken
44 std::string tokenStr;
45 if (map.empty()) {
46 tokenStr = pers->m_token;
47 } else {
48 unsigned int tokenSize = 129 + pers->m_token.size();
49 if (pers->m_prefixIdx > 0) {
50 tokenSize += map[pers->m_prefixIdx].size();
51 }
52 if (pers->m_keyPos > 0) {
53 tokenSize += trans->m_key.size();
54 }
55 tokenStr.reserve(tokenSize);
56// Append DbGuid
57 tokenStr = "[DB=";
58 tokenStr.append(map[pers->m_dbGuidIdx]);
59// Still optimize
60 tokenStr.append("][CNT=");
61 std::string cntName;
62 if (pers->m_prefixIdx > 0) {
63 tokenStr.append(map[pers->m_prefixIdx]);
64 }
65// insert key
66 if (pers->m_keyPos > 0) {
67 tokenStr.append(pers->m_token.substr(0, pers->m_keyPos - 1));
68 tokenStr.append(trans->m_key);
69 tokenStr.append(pers->m_token.substr(pers->m_keyPos - 1));
70 } else {
71 tokenStr.append(pers->m_token);
72 }
73// Append ClassId
74 tokenStr.append("][CLID=");
75 tokenStr.append(map[pers->m_classIdIdx]);
76// Add Technology and Offsets
77 const unsigned int length = 40;
78 char text[length];
79 snprintf(text, length, "][TECH=%08X][OID=%08X-%08X]", pers->m_technology, pers->m_oid1, pers->m_oid2);
80 tokenStr.append(text);
81 }
82 trans->m_token.fromString(tokenStr);
83}
double length(const pvec &v)
std::vector< std::string > m_alias
unsigned short m_prefixIdx
std::vector< unsigned int > m_clids
unsigned short m_classIdIdx
std::vector< uint64_t > m_hashes
unsigned short m_keyPos
unsigned int m_technology
unsigned short m_dbGuidIdx
CLID m_pClid
primary ClassID.
Definition DataHeader.h:105
std::string m_key
string with StoreGate key.
Definition DataHeader.h:109
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition DataHeader.h:111
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition DataHeader.h:107
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition DataHeader.h:115
Token m_token
Transient address token.
Definition DataHeader.h:113
Token & fromString(const std::string_view from)
Build from the string representation of a token.
Definition Token.cxx:147

◆ transToPers()

void DataHeaderElementCnv_p4::transToPers ( const DataHeaderElement * trans,
DataHeaderElement_p4 * pers,
std::vector< std::string > & map )

Definition at line 85 of file DataHeaderCnv_p4.cxx.

87 {
88// Moved to next _p version
89}

◆ DataHeaderCnv_p4

friend class DataHeaderCnv_p4
friend

Definition at line 28 of file DataHeaderCnv_p4.h.


The documentation for this class was generated from the following files: