Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
DataHeader_p6.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 #include "CxxUtils/MD5.h"
9 
10 #include <uuid/uuid.h>
11 
13  m_dbRecords(rhs.m_dbRecords), m_objRecords(rhs.m_objRecords),
14  m_objAlias(rhs.m_objAlias), m_objSymLinks(rhs.m_objSymLinks),
15  m_objHashes(rhs.m_objHashes), m_version(rhs.m_version),
16  m_modified(rhs.m_modified), m_token()
17 {
18  setToken(rhs.m_token);
19 }
20 
22 {
23  if (&rhs != this) {
26  m_objAlias = rhs.m_objAlias;
29  m_version = rhs.m_version;
30  m_modified = rhs.m_modified;
31  setToken(rhs.m_token);
32  }
33  return *this;
34 }
35 
37 { }
38 
39 
40 unsigned int DataHeaderForm_p6::insertDb(const DbRecord& rec) {
41  unsigned int index = 0U;
42  for (std::vector<DbRecord>::const_iterator iter = m_dbRecords.begin(), last = m_dbRecords.end();
43  iter != last; ++iter, ++index) {
44  if (*iter == rec) break;
45  }
46  if (index == m_dbRecords.size()) {
47  m_dbRecords.push_back(rec);
48  m_modified = true;
49  }
50  return(index);
51 }
52 
53 std::size_t DataHeaderForm_p6::sizeDb() const {
54  return(m_dbRecords.size());
55 }
56 
58  return m_dbRecords[index].fid;
59 }
60 
61 unsigned int DataHeaderForm_p6::getDbTech(unsigned int index) const {
62  return m_dbRecords[index].tech;
63 }
64 
65 unsigned int DataHeaderForm_p6::insertObj(const ObjRecord& rec,
66  const std::vector<std::string>& aliases, bool doAliasFiltering,
67  const std::vector<unsigned int>& symLinks,
68  const std::vector<sgkey_t>& hashes)
69 {
70  unsigned int index = 0U;
71  for (std::vector<ObjRecord>::const_iterator iter = m_objRecords.begin(), last = m_objRecords.end();
72  iter != last; ++iter, ++index) {
73  if (*iter == rec) break;
74  }
75  if (index != m_objRecords.size()) {
76  // found matching object record, check if all the info is the same
77  if( m_objSymLinks[index] != symLinks ) {
78  m_objSymLinks[index] = symLinks;
79  m_modified = true;
80  }
81  if( m_objHashes[index] != hashes ) {
83  m_modified = true;
84  }
85  if( (!doAliasFiltering or m_modified) and m_objAlias[index] != aliases ) {
86  m_objAlias[index] = aliases;
87  m_modified = true;
88  }
89  return index;
90  }
91  // enter a new record
92  m_objRecords.push_back( rec );
93  m_objAlias.push_back( aliases );
94  m_objSymLinks.push_back( symLinks );
95  m_objHashes.push_back( hashes );
96  m_modified = true;
97  return m_objRecords.size() - 1;
98 }
99 
100 std::size_t DataHeaderForm_p6::sizeObj() const {
101  return(m_objRecords.size());
102 }
103 
104 const std::string& DataHeaderForm_p6::getObjContainer(unsigned int index) const {
105  return m_objRecords[index].cont;
106 }
107 
108 const std::string& DataHeaderForm_p6::getObjKey(unsigned int index) const {
109  return m_objRecords[index].key;
110 }
111 
112 unsigned int DataHeaderForm_p6::getObjType(unsigned int index) const {
113  return m_objRecords[index].clid;
114 }
115 
116 const Guid& DataHeaderForm_p6::getObjClassId(unsigned int index) const {
117  return m_objRecords[index].guid;
118 }
119 
120 const std::vector<std::string>& DataHeaderForm_p6::getObjAlias(unsigned int index) const {
121  return m_objAlias[index];
122 }
123 
124 const std::vector<unsigned int>&
126  return m_objSymLinks[index];
127 }
128 
129 const std::vector<DataHeaderForm_p6::sgkey_t>&
131  return(m_objHashes[index]);
132 }
133 
135  return m_modified;
136 }
137 
139  m_modified = false;
140 }
141 
142 void DataHeaderForm_p6::setToken( const std::string& tok )
143 {
144  m_token = tok;
145 }
146 
147 const std::string& DataHeaderForm_p6::getToken() const {
148  return m_token;
149 }
150 
151 void DataHeaderForm_p6::resize(unsigned int size) {
152  m_objRecords.reserve( size );
153  m_objAlias.reserve( size );
154  m_objSymLinks.reserve( size );
155  m_objHashes.reserve( size );
156 }
157 
158 
159 
160 //---------------------------------------------------------------------
161 
162 const std::string& DataHeader_p6::dhFormToken() const {
163  return(m_dhFormToken);
164 }
165 
166 void DataHeader_p6::setDhFormToken(const std::string& formToken) {
167  m_dhFormToken = formToken;
168 }
169 
python.root_lsr_rank.hashes
hashes
Definition: root_lsr_rank.py:34
DataHeaderForm_p6
This class provides storage for the constant fields of the persistent DataHeader class.
Definition: DataHeader_p6.h:27
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:56
DataHeaderForm_p6::isModified
bool isModified() const
Definition: DataHeader_p6.cxx:134
DataHeaderForm_p6::m_objHashes
std::vector< std::vector< sgkey_t > > m_objHashes
Definition: DataHeader_p6.h:94
DataHeaderForm_p6::operator=
DataHeaderForm_p6 & operator=(const DataHeaderForm_p6 &rhs)
Definition: DataHeader_p6.cxx:21
index
Definition: index.py:1
DataHeader_p6::m_dhFormToken
std::string m_dhFormToken
Definition: DataHeader_p6.h:140
DataHeaderForm_p6::getObjKey
const std::string & getObjKey(unsigned int index) const
Definition: DataHeader_p6.cxx:108
DataHeaderForm_p6::DbRecord
Definition: DataHeader_p6.h:33
DataHeaderForm_p6::DataHeaderForm_p6
DataHeaderForm_p6()
Definition: DataHeader_p6.h:55
DataHeaderForm_p6::m_dbRecords
std::vector< DbRecord > m_dbRecords
Definition: DataHeader_p6.h:90
DataHeaderForm_p6::insertObj
unsigned int insertObj(const ObjRecord &rec, const std::vector< std::string > &alias=std::vector< std::string >(), bool doAliasFiletering=true, const std::vector< unsigned int > &symLinks=std::vector< unsigned int >(), const std::vector< sgkey_t > &hashes=std::vector< sgkey_t >())
Definition: DataHeader_p6.cxx:65
DataHeader_p6::setDhFormToken
void setDhFormToken(const std::string &formToken)
Definition: DataHeader_p6.cxx:166
MD5.h
solar's public-domain MD5, wrapped for C++.
DataHeaderForm_p6::m_token
std::string m_token
Reference to self in the persistent storage.
Definition: DataHeader_p6.h:105
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
DataHeaderForm_p6::getObjSymLinks
const std::vector< unsigned int > & getObjSymLinks(unsigned int index) const
Definition: DataHeader_p6.cxx:125
DataHeaderForm_p6::getObjType
unsigned int getObjType(unsigned int index) const
Definition: DataHeader_p6.cxx:112
DataHeaderForm_p6::m_objRecords
std::vector< ObjRecord > m_objRecords
Definition: DataHeader_p6.h:91
DataHeaderForm_p6::getObjHashes
const std::vector< sgkey_t > & getObjHashes(unsigned int index) const
Definition: DataHeader_p6.cxx:130
DataHeaderForm_p6::getToken
const std::string & getToken() const
Definition: DataHeader_p6.cxx:147
DataHeader_p6::dhFormToken
const std::string & dhFormToken() const
Definition: DataHeader_p6.cxx:162
DataHeaderForm_p6::getDbGuid
Guid getDbGuid(unsigned int index) const
Definition: DataHeader_p6.cxx:57
DataHeader_p6.h
This file contains the class definitions for the DataHeader_p6 and DataHeaderForm_p6.
DataHeaderForm_p6::~DataHeaderForm_p6
~DataHeaderForm_p6()
Definition: DataHeader_p6.cxx:36
DataHeaderForm_p6::getObjAlias
const std::vector< std::string > & getObjAlias(unsigned int index) const
Definition: DataHeader_p6.cxx:120
DataHeaderForm_p6::clearModified
void clearModified()
Definition: DataHeader_p6.cxx:138
DataHeaderForm_p6::sizeDb
std::size_t sizeDb() const
Definition: DataHeader_p6.cxx:53
DataHeaderForm_p6::m_objAlias
std::vector< std::vector< std::string > > m_objAlias
Definition: DataHeader_p6.h:92
DataHeaderForm_p6::setToken
void setToken(const std::string &tok)
Definition: DataHeader_p6.cxx:142
DataHeaderForm_p6::sizeObj
std::size_t sizeObj() const
Definition: DataHeader_p6.cxx:100
DataHeaderForm_p6::getObjClassId
const Guid & getObjClassId(unsigned int index) const
Definition: DataHeader_p6.cxx:116
DeMoScan.index
string index
Definition: DeMoScan.py:364
DataHeaderForm_p6::m_modified
bool m_modified
indicates that the last event was somehow different and a new DHForm needs to be written
Definition: DataHeader_p6.h:103
Guid
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition: Guid.h:20
DataHeaderForm_p6::resize
void resize(unsigned int size)
Definition: DataHeader_p6.cxx:151
DataHeaderForm_p6::m_objSymLinks
std::vector< std::vector< unsigned int > > m_objSymLinks
Definition: DataHeader_p6.h:93
DataHeaderForm_p6::getDbTech
unsigned int getDbTech(unsigned int index) const
Definition: DataHeader_p6.cxx:61
DataHeaderForm_p6::insertDb
unsigned int insertDb(const DbRecord &rec)
Definition: DataHeader_p6.cxx:40
DataHeaderForm_p6::m_version
unsigned m_version
Subversion of DHForm_p6 for small changes of data encoding.
Definition: DataHeader_p6.h:97
Token.h
This file contains the class definition for the Token class (migrated from POOL).
DataHeaderForm_p6::ObjRecord
Definition: DataHeader_p6.h:39
DataHeaderForm_p6::getObjContainer
const std::string & getObjContainer(unsigned int index) const
Definition: DataHeader_p6.cxx:104