DataObjectDescriptorCollection Class Reference

#include </tmp/marcocle/lhcb-release/1122/GAUDI/GAUDI_v27r0/InstallArea/x86_64-slc6-gcc49-opt/include/GaudiKernel/DataObjectDescriptor.h>

Collaboration diagram for DataObjectDescriptorCollection:

Classes

struct  get_key
 

Public Types

using map_type = std::map< std::string, MinimalDataObjectHandle * >
 
using iterator = boost::transform_iterator< get_key, map_type::iterator >
 
using const_iterator = boost::transform_iterator< get_key, map_type::const_iterator >
 
using map_type = std::map< std::string, MinimalDataObjectHandle * >
 
using iterator = boost::transform_iterator< get_key, map_type::iterator >
 
using const_iterator = boost::transform_iterator< get_key, map_type::const_iterator >
 

Public Member Functions

 DataObjectDescriptorCollection ()
 
 DataObjectDescriptorCollection (const DataObjectDescriptorCollection &other)
 
DataObjectDescriptorCollectionoperator= (const DataObjectDescriptorCollection &other)
 
bool contains (const std::string &o) const
 
bool contains (const MinimalDataObjectHandle *o) const
 
bool insert (const std::string &tag, MinimalDataObjectHandle *descriptor)
 
bool insert (MinimalDataObjectHandle *item)
 
bool update (MinimalDataObjectHandle *item)
 
bool update (const std::string &item)
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
const MinimalDataObjectHandleoperator[] (const std::string &tag) const
 
MinimalDataObjectHandleoperator[] (const std::string &tag)
 
const std::string toString () const
 
const std::string pythonRepr () const
 
 DataObjectDescriptorCollection ()
 
 DataObjectDescriptorCollection (const DataObjectDescriptorCollection &other)
 
DataObjectDescriptorCollectionoperator= (const DataObjectDescriptorCollection &other)
 
bool contains (const std::string &o) const
 
bool contains (const MinimalDataObjectHandle *o) const
 
bool insert (const std::string &tag, MinimalDataObjectHandle *descriptor)
 
bool insert (MinimalDataObjectHandle *item)
 
bool update (MinimalDataObjectHandle *item)
 
bool update (const std::string &item)
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
const MinimalDataObjectHandleoperator[] (const std::string &tag) const
 
MinimalDataObjectHandleoperator[] (const std::string &tag)
 
const std::string toString () const
 
const std::string pythonRepr () const
 

Private Attributes

map_type m_dataItems
 

Detailed Description

Definition at line 90 of file DataObjectDescriptor.h.

Member Typedef Documentation

using DataObjectDescriptorCollection::const_iterator = boost::transform_iterator<get_key, map_type::const_iterator>

Definition at line 101 of file DataObjectDescriptor.h.

using DataObjectDescriptorCollection::const_iterator = boost::transform_iterator<get_key, map_type::const_iterator>

Definition at line 101 of file DataObjectDescriptor.h.

using DataObjectDescriptorCollection::iterator = boost::transform_iterator<get_key, map_type::iterator>

Definition at line 100 of file DataObjectDescriptor.h.

using DataObjectDescriptorCollection::iterator = boost::transform_iterator<get_key, map_type::iterator>

Definition at line 100 of file DataObjectDescriptor.h.

Definition at line 92 of file DataObjectDescriptor.h.

Definition at line 92 of file DataObjectDescriptor.h.

Constructor & Destructor Documentation

DataObjectDescriptorCollection::DataObjectDescriptorCollection ( )
inline

Definition at line 103 of file DataObjectDescriptor.h.

103 { }
DataObjectDescriptorCollection::DataObjectDescriptorCollection ( const DataObjectDescriptorCollection other)

Definition at line 149 of file DataObjectDescriptor.cpp.

149  {
150  m_dataItems.insert(other.m_dataItems.begin(), other.m_dataItems.end());
151 }
DataObjectDescriptorCollection::DataObjectDescriptorCollection ( )
inline

Definition at line 103 of file DataObjectDescriptor.h.

103 { }
DataObjectDescriptorCollection::DataObjectDescriptorCollection ( const DataObjectDescriptorCollection other)

Member Function Documentation

iterator DataObjectDescriptorCollection::begin ( )
inline

Definition at line 117 of file DataObjectDescriptor.h.

117  {
118  return iterator(m_dataItems.begin(), get_key());
119  }
boost::transform_iterator< get_key, map_type::iterator > iterator
iterator DataObjectDescriptorCollection::begin ( )
inline

Definition at line 117 of file DataObjectDescriptor.h.

117  {
118  return iterator(m_dataItems.begin(), get_key());
119  }
boost::transform_iterator< get_key, map_type::iterator > iterator
const_iterator DataObjectDescriptorCollection::begin ( ) const
inline

Definition at line 125 of file DataObjectDescriptor.h.

125  {
126  return const_iterator(m_dataItems.begin(), get_key());
127  }
boost::transform_iterator< get_key, map_type::const_iterator > const_iterator
const_iterator DataObjectDescriptorCollection::begin ( ) const
inline

Definition at line 125 of file DataObjectDescriptor.h.

125  {
126  return const_iterator(m_dataItems.begin(), get_key());
127  }
boost::transform_iterator< get_key, map_type::const_iterator > const_iterator
bool DataObjectDescriptorCollection::contains ( const std::string &  o) const
bool DataObjectDescriptorCollection::contains ( const std::string &  o) const

Definition at line 164 of file DataObjectDescriptor.cpp.

164  {
165  return s != "" && m_dataItems.find(s) != m_dataItems.end();
166 }
string s
Definition: gaudirun.py:245
bool DataObjectDescriptorCollection::contains ( const MinimalDataObjectHandle o) const
bool DataObjectDescriptorCollection::contains ( const MinimalDataObjectHandle o) const

Definition at line 168 of file DataObjectDescriptor.cpp.

168  {
169  std::string productName = o->dataProductName();
170 
171  std::vector<std::string> locations;
172 
173  locations.emplace_back(productName);
174  locations.insert(locations.end(), o->alternativeDataProductNames().begin(), o->alternativeDataProductNames().end());
175  std::sort(locations.begin(), locations.end());
176 
177  for(auto & item : m_dataItems){
178  //do deep search
179 
180  //make the common case fast
181  if(item.second->dataProductName() == productName)
182  return true;
183 
184  //otherwise we have to do a set intersection
185  std::vector<std::string> iLocations;
186  iLocations.emplace_back(item.second->dataProductName());
187  iLocations.insert(iLocations.end(), item.second->alternativeDataProductNames().begin(), item.second->alternativeDataProductNames().end());
188  std::sort(iLocations.begin(), iLocations.end());
189 
190  auto it=std::set_intersection (iLocations.begin(), iLocations.end(), locations.begin(), locations.end(), iLocations.begin());
191 
192  //check if we have a non-zero intersection size
193  if(std::distance(iLocations.begin(), it) > 0)
194  return true;
195 
196  }
197 
198  return false;
199 }
const std::vector< std::string > & alternativeDataProductNames() const
const std::string & dataProductName() const
Return the product name.
tuple item
print s1,s2
Definition: ana.py:146
iterator DataObjectDescriptorCollection::end ( )
inline

Definition at line 121 of file DataObjectDescriptor.h.

121  {
122  return iterator(m_dataItems.end(), get_key());
123  }
boost::transform_iterator< get_key, map_type::iterator > iterator
iterator DataObjectDescriptorCollection::end ( )
inline

Definition at line 121 of file DataObjectDescriptor.h.

121  {
122  return iterator(m_dataItems.end(), get_key());
123  }
boost::transform_iterator< get_key, map_type::iterator > iterator
const_iterator DataObjectDescriptorCollection::end ( ) const
inline

Definition at line 129 of file DataObjectDescriptor.h.

129  {
130  return const_iterator(m_dataItems.end(), get_key());
131  }
boost::transform_iterator< get_key, map_type::const_iterator > const_iterator
const_iterator DataObjectDescriptorCollection::end ( ) const
inline

Definition at line 129 of file DataObjectDescriptor.h.

129  {
130  return const_iterator(m_dataItems.end(), get_key());
131  }
boost::transform_iterator< get_key, map_type::const_iterator > const_iterator
bool DataObjectDescriptorCollection::insert ( const std::string &  tag,
MinimalDataObjectHandle descriptor 
)

Definition at line 201 of file DataObjectDescriptor.cpp.

202  {
203 
204  if(!contains(tag)){
205  auto res = m_dataItems.insert(std::make_pair(tag, descriptor));
206 
207  return res.second;
208  }
209 
210  return false;
211 }
bool contains(const std::string &o) const
bool DataObjectDescriptorCollection::insert ( const std::string &  tag,
MinimalDataObjectHandle descriptor 
)
bool DataObjectDescriptorCollection::insert ( MinimalDataObjectHandle item)

Definition at line 213 of file DataObjectDescriptor.cpp.

213  {
214 
215  if(!contains(item->descriptor()->tag())){
216  auto res = m_dataItems.insert(std::make_pair(item->descriptor()->tag(), item));
217 
218  return res.second;
219  }
220 
221  return false;
222 }
DataObjectDescriptor * descriptor()
const std::string & tag() const
bool contains(const std::string &o) const
tuple item
print s1,s2
Definition: ana.py:146
bool DataObjectDescriptorCollection::insert ( MinimalDataObjectHandle item)
DataObjectDescriptorCollection& DataObjectDescriptorCollection::operator= ( const DataObjectDescriptorCollection other)
DataObjectDescriptorCollection & DataObjectDescriptorCollection::operator= ( const DataObjectDescriptorCollection other)

Definition at line 153 of file DataObjectDescriptor.cpp.

153  {
154  m_dataItems.clear();
155  m_dataItems.insert(other.m_dataItems.begin(), other.m_dataItems.end());
156 
157  return *this;
158 }
const MinimalDataObjectHandle& DataObjectDescriptorCollection::operator[] ( const std::string &  tag) const
const MinimalDataObjectHandle & DataObjectDescriptorCollection::operator[] ( const std::string &  tag) const

Definition at line 247 of file DataObjectDescriptor.cpp.

247  {
248  return *m_dataItems.at(tag);
249 }
MinimalDataObjectHandle & DataObjectDescriptorCollection::operator[] ( const std::string &  tag)

Definition at line 251 of file DataObjectDescriptor.cpp.

251  {
252  return *m_dataItems.at(tag);
253 }
MinimalDataObjectHandle& DataObjectDescriptorCollection::operator[] ( const std::string &  tag)
const std::string DataObjectDescriptorCollection::pythonRepr ( ) const
const std::string DataObjectDescriptorCollection::pythonRepr ( ) const

Definition at line 160 of file DataObjectDescriptor.cpp.

160  {
161  return "DataObjectDescriptorCollection(\"" + toString() + "\")";
162 }
const std::string toString() const
const std::string DataObjectDescriptorCollection::toString ( ) const
const std::string DataObjectDescriptorCollection::toString ( ) const

Definition at line 137 of file DataObjectDescriptor.cpp.

137  {
138  std::stringstream out;
139 
140  for(auto it = m_dataItems.begin(); it != m_dataItems.end(); ++it){
141  out << it->second->descriptor()->toString() << ITEM_SEP;
142  }
143 
144  std::string sOut = out.str();
145 
146  return sOut.substr(0, sOut.length()-1);
147 }
const char ITEM_SEP
bool DataObjectDescriptorCollection::update ( MinimalDataObjectHandle item)

Definition at line 224 of file DataObjectDescriptor.cpp.

224  {
225 
226  if(contains(item->descriptor()->tag())){
227  m_dataItems.at(item->descriptor()->tag()) = item;
228 
229  return true;
230  }
231 
232  return false;
233 }
DataObjectDescriptor * descriptor()
const std::string & tag() const
bool contains(const std::string &o) const
bool DataObjectDescriptorCollection::update ( MinimalDataObjectHandle item)
bool DataObjectDescriptorCollection::update ( const std::string &  item)
bool DataObjectDescriptorCollection::update ( const std::string &  item)

Definition at line 235 of file DataObjectDescriptor.cpp.

235  {
236  std::string tag = DataObjectDescriptor::tag(item);
237 
238  if(tag != "" && contains(tag)){
239  m_dataItems.at(tag)->descriptor()->fromString(item);
240 
241  return true;
242  }
243 
244  return false;
245 }
const std::string & tag() const
bool contains(const std::string &o) const
tuple item
print s1,s2
Definition: ana.py:146

Member Data Documentation

map_type DataObjectDescriptorCollection::m_dataItems
private

Definition at line 140 of file DataObjectDescriptor.h.


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