ATLAS Offline Software
Loading...
Searching...
No Matches
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

◆ IdentifiableContTemp() [2/5]

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

Definition at line 28 of file IdentifiableContTemp.h.

◆ IdentifiableContTemp() [3/5]

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

Definition at line 30 of file IdentifiableContTemp.h.

◆ IdentifiableContTemp() [4/5]

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

◆ IdentifiableContTemp() [5/5]

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

◆ ~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 }
std::vector< std::pair< IdentifierHash, const T * > > m_usedhashes

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);
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();
77 }
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override

◆ 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();
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 {
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 }
virtual StatusCode addOrDelete(std::unique_ptr< T > ptr, IdentifierHash hashId) override

◆ 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: