The Gaudi Framework  v30r3 (a5ef0a68)
Tuples::ItemStore< VALUE > Class Template Referencefinal

Simple class, which represents the local storage of N-tuple items of the given type. More...

#include <GaudiAlg/TuplePut.h>

Collaboration diagram for Tuples::ItemStore< VALUE >:

Public Member Functions

 ItemStore ()=default
 constructor : create empty map More...
 

Private Types

typedef GaudiUtils::HashMap< std::string, std::unique_ptr< NTuple::Item< VALUE > > > Store
 

Private Member Functions

NTuple::Item< VALUE > * getItem (const std::string &key, Tuples::TupleObj *tuple)
 the only one method: More...
 
 ItemStore (const ItemStore &)=delete
 
ItemStoreoperator= (const ItemStore &)=delete
 

Private Attributes

Store m_map
 the underlying map More...
 

Friends

class TupleObj
 

Detailed Description

template<class VALUE>
class Tuples::ItemStore< VALUE >

Simple class, which represents the local storage of N-tuple items of the given type.

Essentially it is a restricted GaudiUtils::HashMap with the ownership of the newly created entries

Author
Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u
Date
2007-04-08

Definition at line 38 of file TuplePut.h.

Member Typedef Documentation

template<class VALUE>
typedef GaudiUtils::HashMap<std::string, std::unique_ptr<NTuple::Item<VALUE> > > Tuples::ItemStore< VALUE >::Store
private

Definition at line 43 of file TuplePut.h.

Constructor & Destructor Documentation

template<class VALUE>
Tuples::ItemStore< VALUE >::ItemStore ( )
default

constructor : create empty map

template<class VALUE>
Tuples::ItemStore< VALUE >::ItemStore ( const ItemStore< VALUE > &  )
privatedelete

Member Function Documentation

template<class VALUE>
NTuple::Item<VALUE>* Tuples::ItemStore< VALUE >::getItem ( const std::string key,
Tuples::TupleObj tuple 
)
inlineprivate

the only one method:

Definition at line 51 of file TuplePut.h.

52  {
53  // find the item by name
54  auto ifound = m_map.find( key );
55  // existing item?
56  if ( m_map.end() != ifound ) return ifound->second.get(); // RETURN
57  // check the tuple for booking:
58  if ( !tuple ) return nullptr;
59  // check the existence of the name
60  if ( !tuple->goodItem( key ) ) {
61  tuple->Error( "ItemStore::getItem('" + key + "') item name is not unique" ).ignore();
62  return nullptr; // RETURN
63  }
64  // get the underlying object
65  NTuple::Tuple* tup = tuple->tuple();
66  if ( !tup ) {
67  tuple->Error( "ItemStore::getItem('" + key + "') invalid NTuple::Tuple*" ).ignore();
68  return nullptr; // RETURN
69  }
70  // create new item:
71  // add the newly created item into the store:
72  auto stored = m_map.emplace( key, std::make_unique<NTuple::Item<VALUE>>() );
73  if ( !stored.second ) {
74  tuple->Warning( "ItemStore::getItem('" + key + "') item already exists, new one not inserted!" ).ignore();
75  return nullptr;
76  }
77  auto& item = stored.first->second;
78  // add it into N-tuple
79  StatusCode sc = tup->addItem( key, *item ); // ATTENTION!
80  if ( sc.isFailure() ) {
81  tuple->Error( "ItemStore::getItem('" + key + "') cannot addItem", sc ).ignore();
82  m_map.erase( stored.first );
83  return nullptr; // RETURN
84  }
85  // check the name again
86  if ( !tuple->addItem( key, System::typeinfoName( typeid( VALUE ) ) ) ) {
87  tuple->Warning( "ItemStore::getItem('" + key + "') the item not unique " ).ignore();
88  m_map.erase( stored.first );
89  return nullptr;
90  }
91  //
92  return item.get(); // RETURN
93  }
const NTuple::Tuple * tuple() const
provide the access to underlying Gaudi N-tuple
Definition: TupleObj.h:1891
bool goodItem(const std::string &name) const
check the uniqueness of the name
Definition: TupleObj.h:1935
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:332
bool isFailure() const
Definition: StatusCode.h:139
virtual StatusCode Warning(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
bool addItem(std::string name, std::string type)
add the item name into the list of known items
Definition: TupleObj.h:1926
iterator end()
Definition: Map.h:134
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:51
Store m_map
the underlying map
Definition: TuplePut.h:101
iterator find(const key_type &key)
Definition: Map.h:151
std::pair< iterator, bool > emplace(Args &&...args)
Definition: Map.h:169
Abstract base class which allows the user to interact with the actual N tuple implementation.
Definition: NTuple.h:407
iterator erase(const_iterator pos)
Definition: Map.h:192
virtual StatusCode Error(const std::string &msg, const StatusCode sc=StatusCode::FAILURE) const =0
const StatusCode & ignore() const
Ignore/check StatusCode.
Definition: StatusCode.h:165
StatusCode addItem(const std::string &name, Item< TYPE > &itm)
Add a scalar data item a N tuple.
Definition: NTuple.h:564
template<class VALUE>
ItemStore& Tuples::ItemStore< VALUE >::operator= ( const ItemStore< VALUE > &  )
privatedelete

Friends And Related Function Documentation

template<class VALUE>
friend class TupleObj
friend

Definition at line 40 of file TuplePut.h.

Member Data Documentation

template<class VALUE>
Store Tuples::ItemStore< VALUE >::m_map
private

the underlying map

the underlying map

Definition at line 101 of file TuplePut.h.


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