Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
EventContainers::IdentifiableContTemp< T > Class Template Referenceabstract

#include <IdentifiableContTemp.h>

Inheritance diagram for EventContainers::IdentifiableContTemp< T >:
Collaboration diagram for EventContainers::IdentifiableContTemp< T >:

Public Member Functions

 IdentifiableContTemp (size_t size)
 
 IdentifiableContTemp (IdentifiableContainerMT< T > *extcache=nullptr)
 
 IdentifiableContTemp ()=delete
 
 IdentifiableContTemp (const IdentifiableContTemp &that)=delete
 
IdentifiableContTempoperator= (const IdentifiableContTemp &)=delete
 
virtual ~IdentifiableContTemp ()
 
virtual const T * indexFindPtr (IdentifierHash hashId) const override
 
virtual std::vector< IdentifierHashGetAllCurrentHashes () const override
 
virtual StatusCode addCollection (const T *coll, IdentifierHash hashId) override
 
virtual StatusCode addOrDelete (std::unique_ptr< T > ptr, IdentifierHash hashId) override
 
virtual StatusCode addOrDelete (std::unique_ptr< const T > ptr, IdentifierHash hashId) override
 
virtual size_t fullSize () const override
 
virtual size_t numberOfCollections () const override
 
virtual bool tryAddFromCache (IdentifierHash hashId) override
 
virtual bool hasExternalCache () const override
 
virtual StatusCode naughtyRetrieve ATLAS_NOT_THREAD_SAFE (IdentifierHash hashId, T *&collToRetrieve) const override
 
StatusCode MergeToRealContainer (IIdentifiableCont< T > *real)
 
virtual void cleanup () override
 
virtual StatusCode naughtyRetrieve (IdentifierHash hashId, T *&collToRetrieve) const =0
 

Private Member Functions

 IdentifiableContTemp (size_t size, IdentifiableContainerMT< T > *extcache)
 

Private Attributes

std::vector< std::pair< IdentifierHash, const T * > > m_usedhashes
 
std::vector< const T * > m_randomcont
 
IdentifiableContainerMT< T > * m_extIDC
 
bool m_hasExternalCache
 

Detailed Description

template<class T>
class EventContainers::IdentifiableContTemp< T >

Definition at line 17 of file IdentifiableContTemp.h.

Constructor & Destructor Documentation

◆ IdentifiableContTemp() [1/5]

template<class T >
EventContainers::IdentifiableContTemp< T >::IdentifiableContTemp ( size_t  size,
IdentifiableContainerMT< T > *  extcache 
)
inlineprivate

Definition at line 24 of file IdentifiableContTemp.h.

24  : m_randomcont(size, nullptr), m_extIDC(extcache) {
25  m_hasExternalCache = m_extIDC && m_extIDC->hasExternalCache();
26  }

◆ IdentifiableContTemp() [2/5]

template<class T >
EventContainers::IdentifiableContTemp< T >::IdentifiableContTemp ( size_t  size)
inline

Definition at line 28 of file IdentifiableContTemp.h.

28 : IdentifiableContTemp(size, nullptr) { }

◆ IdentifiableContTemp() [3/5]

template<class T >
EventContainers::IdentifiableContTemp< T >::IdentifiableContTemp ( IdentifiableContainerMT< T > *  extcache = nullptr)
inline

Definition at line 30 of file IdentifiableContTemp.h.

30 : IdentifiableContTemp(extcache->fullSize(), extcache) { }

◆ IdentifiableContTemp() [4/5]

template<class T >
EventContainers::IdentifiableContTemp< T >::IdentifiableContTemp ( )
delete

◆ IdentifiableContTemp() [5/5]

◆ ~IdentifiableContTemp()

template<class T >
virtual EventContainers::IdentifiableContTemp< T >::~IdentifiableContTemp ( )
inlinevirtual

Definition at line 35 of file IdentifiableContTemp.h.

35  {
36  for(auto &x : m_usedhashes){
37  delete x.second;
38  }
39  }

Member Function Documentation

◆ addCollection()

template<class T >
virtual StatusCode EventContainers::IdentifiableContTemp< T >::addCollection ( const T *  coll,
IdentifierHash  hashId 
)
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 53 of file IdentifiableContTemp.h.

53  {
54  if(hashId >= m_randomcont.size()) return StatusCode::FAILURE;
55  m_usedhashes.emplace_back(hashId, coll);
56  m_randomcont[hashId] = coll;
57  return StatusCode::SUCCESS;
58  }

◆ addOrDelete() [1/2]

template<class T >
virtual StatusCode EventContainers::IdentifiableContTemp< T >::addOrDelete ( std::unique_ptr< const T >  ptr,
IdentifierHash  hashId 
)
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 70 of file IdentifiableContTemp.h.

70  {
71  if(hashId >= m_randomcont.size()) return StatusCode::FAILURE;
72  if(m_randomcont[hashId] == nullptr){
73  return addCollection(ptr.release(), hashId);
74  }
75  ptr.reset();
76  return StatusCode::SUCCESS;
77  }

◆ addOrDelete() [2/2]

template<class T >
virtual StatusCode EventContainers::IdentifiableContTemp< T >::addOrDelete ( std::unique_ptr< T >  ptr,
IdentifierHash  hashId 
)
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 61 of file IdentifiableContTemp.h.

61  {
62  if(hashId >= m_randomcont.size()) return StatusCode::FAILURE;
63  if(m_randomcont[hashId] == nullptr){
64  return addCollection(ptr.release(), hashId);
65  }
66  ptr.reset();
67  return StatusCode::SUCCESS;
68  }

◆ ATLAS_NOT_THREAD_SAFE()

template<class T >
virtual StatusCode naughtyRetrieve EventContainers::IdentifiableContTemp< T >::ATLAS_NOT_THREAD_SAFE ( IdentifierHash  hashId,
T *&  collToRetrieve 
) const
inlineoverridevirtual

Definition at line 98 of file IdentifiableContTemp.h.

98  {
99  if(hashId >= m_randomcont.size()) return StatusCode::FAILURE;
100  collToRetrieve = const_cast<T*>( m_randomcont[hashId]);
101  return StatusCode::SUCCESS;
102  }

◆ cleanup()

template<class T >
virtual void EventContainers::IdentifiableContTemp< T >::cleanup ( )
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 115 of file IdentifiableContTemp.h.

115  {
116  for(auto &x : m_usedhashes){
117  delete x.second;
118  }
119  m_usedhashes.clear();
120  m_randomcont.assign(m_randomcont.size(), nullptr);
121  }

◆ fullSize()

template<class T >
virtual size_t EventContainers::IdentifiableContTemp< T >::fullSize ( ) const
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 79 of file IdentifiableContTemp.h.

79  {
80  return m_randomcont.size();
81  }

◆ GetAllCurrentHashes()

template<class T >
virtual std::vector<IdentifierHash> EventContainers::IdentifiableContTemp< T >::GetAllCurrentHashes ( ) const
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 46 of file IdentifiableContTemp.h.

46  {
47  std::vector<IdentifierHash> out;
48  out.reserve(m_usedhashes.size());
49  for(auto x : m_usedhashes) out.push_back(x.first);
50  return out;
51  }

◆ hasExternalCache()

template<class T >
virtual bool EventContainers::IdentifiableContTemp< T >::hasExternalCache ( ) const
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 94 of file IdentifiableContTemp.h.

94  {
95  return m_hasExternalCache;
96  }

◆ indexFindPtr()

template<class T >
virtual const T* EventContainers::IdentifiableContTemp< T >::indexFindPtr ( IdentifierHash  hashId) const
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 41 of file IdentifiableContTemp.h.

41  {
42  if(hashId >= m_randomcont.size()) return nullptr;
43  return m_randomcont[hashId];
44  }

◆ MergeToRealContainer()

template<class T >
StatusCode EventContainers::IdentifiableContTemp< T >::MergeToRealContainer ( IIdentifiableCont< T > *  real)
inline

Definition at line 104 of file IdentifiableContTemp.h.

104  {
105  for(auto &x : m_usedhashes){
106  auto ptr = std::unique_ptr<const T>(x.second);
107  auto sc = real->addOrDelete(std::move(ptr), x.first);
108  if(sc.isFailure()) { return StatusCode::FAILURE; }
109  m_randomcont[x.first] = nullptr;
110  }
111  m_usedhashes.clear();
112  return StatusCode::SUCCESS;
113  }

◆ naughtyRetrieve()

template<class T >
virtual StatusCode EventContainers::IIdentifiableCont< T >::naughtyRetrieve ( IdentifierHash  hashId,
T *&  collToRetrieve 
) const
pure virtualinherited

◆ numberOfCollections()

template<class T >
virtual size_t EventContainers::IdentifiableContTemp< T >::numberOfCollections ( ) const
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 83 of file IdentifiableContTemp.h.

83  {
84  return m_usedhashes.size();
85  }

◆ operator=()

template<class T >
IdentifiableContTemp& EventContainers::IdentifiableContTemp< T >::operator= ( const IdentifiableContTemp< T > &  )
delete

◆ tryAddFromCache()

template<class T >
virtual bool EventContainers::IdentifiableContTemp< T >::tryAddFromCache ( IdentifierHash  hashId)
inlineoverridevirtual

Implements EventContainers::IIdentifiableCont< T >.

Definition at line 87 of file IdentifiableContTemp.h.

87  {
88  if(m_extIDC){
89  return m_extIDC->tryAddFromCache(hashId);
90  }
91  return false;
92  }

Member Data Documentation

◆ m_extIDC

template<class T >
IdentifiableContainerMT< T >* EventContainers::IdentifiableContTemp< T >::m_extIDC
private

Definition at line 22 of file IdentifiableContTemp.h.

◆ m_hasExternalCache

template<class T >
bool EventContainers::IdentifiableContTemp< T >::m_hasExternalCache
private

Definition at line 23 of file IdentifiableContTemp.h.

◆ m_randomcont

template<class T >
std::vector< const T* > EventContainers::IdentifiableContTemp< T >::m_randomcont
private

Definition at line 20 of file IdentifiableContTemp.h.

◆ m_usedhashes

template<class T >
std::vector< std::pair<IdentifierHash, const T* > > EventContainers::IdentifiableContTemp< T >::m_usedhashes
private

Definition at line 19 of file IdentifiableContTemp.h.


The documentation for this class was generated from the following file:
EventContainers::IdentifiableContTemp::m_usedhashes
std::vector< std::pair< IdentifierHash, const T * > > m_usedhashes
Definition: IdentifiableContTemp.h:19
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
EventContainers::IdentifiableContTemp::m_extIDC
IdentifiableContainerMT< T > * m_extIDC
Definition: IdentifiableContTemp.h:22
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
x
#define x
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
IdentifiableContainerMT::fullSize
virtual size_t fullSize() const override final
return full size of container
Definition: IdentifiableContainerMT.h:201
EventContainers::IdentifiableContTemp::m_hasExternalCache
bool m_hasExternalCache
Definition: IdentifiableContTemp.h:23
EventContainers::IdentifiableContTemp::addCollection
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override
Definition: IdentifiableContTemp.h:53
EventContainers::IdentifiableContTemp::m_randomcont
std::vector< const T * > m_randomcont
Definition: IdentifiableContTemp.h:20
EventContainers::IdentifiableContTemp::IdentifiableContTemp
IdentifiableContTemp()=delete
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35