18 #ifndef DBDATAOBJECTS_CONDATTRLISTVEC_H
19 #define DBDATAOBJECTS_CONDATTRLISTVEC_H
22 #include "CoralBase/Attribute.h"
23 #include "CoralBase/AttributeList.h"
24 #include "CoralBase/AttributeListSpecification.h"
28 #include "GaudiKernel/DataObject.h"
41 typedef std::map<unsigned int, std::vector<const coral::AttributeList*> >
88 const std::vector<coral::AttributeList>&
data,
89 const unsigned int datastart,
const unsigned int dataend);
95 const std::vector<unsigned int>&
channelIDs()
const;
103 const std::vector<const coral::AttributeList*>&
115 coral::AttributeListSpecification*
m_spec;
124 #include "AthenaKernel/CondCont.h"
130 m_uniqueiov(true),m_runevent(runevent),m_spec(nullptr) {
138 m_uniqueiov(true),m_runevent(runevent),m_spec(nullptr) {
150 DataObject::DataObject(rhs),
151 m_iovmap(rhs.m_iovmap),
152 m_minrange(rhs.m_minrange),
153 m_uniqueiov(rhs.m_uniqueiov),
154 m_runevent(rhs.m_runevent),
159 if (!rhs.
m_data.empty()) {
160 m_spec=
new coral::AttributeListSpecification();
162 for (
const auto& attr : atr1) {
163 const coral::AttributeSpecification& aspec=attr.specification();
164 m_spec->extend(aspec.name(),aspec.typeName());
166 for (
const auto& [
chan, attrList] : rhs.
m_data) {
169 (
m_data.back().second).fastCopyData(attrList);
210 {
return m_data.begin(); }
239 const unsigned int chan,
251 if (!
m_spec && data_begin!=data_end) {
252 m_spec=
new coral::AttributeListSpecification();
253 for (
const auto& attr : *data_begin) {
254 const coral::AttributeSpecification& aspec=attr.specification();
255 m_spec->extend(aspec.name(),aspec.typeName());
261 (
m_data.back().second).fastCopyData(*itr);
268 const unsigned int chan,
269 const std::vector<coral::AttributeList>&
data,
270 const unsigned int datastart,
const unsigned int dataend)
282 if (!
m_spec && datastart!=dataend) {
283 m_spec=
new coral::AttributeListSpecification();
285 for (
const auto& attr : atr0) {
286 const coral::AttributeSpecification& aspec=attr.specification();
287 m_spec->extend(aspec.name(),aspec.typeName());
291 for (
unsigned int i=datastart;
i<dataend;++
i) {
308 return (
m.find(
chan)!=
m.end());
311 inline const std::vector<const coral::AttributeList*>&
315 AttrListCVMap::const_iterator
it =
m.find (
chan);
319 static const std::vector<const coral::AttributeList*> dum;
332 unsigned int chan=
p.first;
334 if (clist==
index.m_indexchanvec.end()) {
336 std::pair<AttrListCVMap::iterator,bool>
res=
337 index.m_indexchanvec.insert(AttrListCVMap::value_type(
chan,
338 std::vector<const coral::AttributeList*>()));
342 clist->second.push_back(&(
p.second));
350 #endif // DBDATAOBJECTS_CONDATTRLISTVEC_H