ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::ExtrUniquePtrHolder< T > Struct Template Reference

#include <ExtrUniquePtrHolder.h>

Collaboration diagram for Trk::ExtrUniquePtrHolder< T >:

Public Member Functions

 ExtrUniquePtrHolder ()=default
 ExtrUniquePtrHolder (size_t capacity)
 ~ExtrUniquePtrHolder ()=default
 ExtrUniquePtrHolder (const ExtrUniquePtrHolder &)=delete
 ExtrUniquePtrHolder (ExtrUniquePtrHolder &&)=delete
ExtrUniquePtrHolderoperator= (const ExtrUniquePtrHolder &)=delete
ExtrUniquePtrHolderoperator= (ExtrUniquePtrHolder &&)=delete
CacheOwnedPtr< T > push (std::unique_ptr< T > input)
 push a new element to the vector and return a ptr to it
std::unique_ptr< T > move (CacheOwnedPtr< T > input)
 Release a cached ptr.

Public Attributes

std::vector< std::unique_ptr< T > > m_elements

Detailed Description

template<typename T>
struct Trk::ExtrUniquePtrHolder< T >

Definition at line 31 of file ExtrUniquePtrHolder.h.

Constructor & Destructor Documentation

◆ ExtrUniquePtrHolder() [1/4]

template<typename T>
Trk::ExtrUniquePtrHolder< T >::ExtrUniquePtrHolder ( )
default

◆ ExtrUniquePtrHolder() [2/4]

template<typename T>
Trk::ExtrUniquePtrHolder< T >::ExtrUniquePtrHolder ( size_t capacity)
inline

Definition at line 35 of file ExtrUniquePtrHolder.h.

35{ m_elements.reserve(capacity); }
std::vector< std::unique_ptr< T > > m_elements

◆ ~ExtrUniquePtrHolder()

template<typename T>
Trk::ExtrUniquePtrHolder< T >::~ExtrUniquePtrHolder ( )
default

◆ ExtrUniquePtrHolder() [3/4]

template<typename T>
Trk::ExtrUniquePtrHolder< T >::ExtrUniquePtrHolder ( const ExtrUniquePtrHolder< T > & )
delete

◆ ExtrUniquePtrHolder() [4/4]

template<typename T>
Trk::ExtrUniquePtrHolder< T >::ExtrUniquePtrHolder ( ExtrUniquePtrHolder< T > && )
delete

Member Function Documentation

◆ move()

template<typename T>
std::unique_ptr< T > Trk::ExtrUniquePtrHolder< T >::move ( CacheOwnedPtr< T > input)
inline

Release a cached ptr.

The entry in the cache will be moved from. The lifetime of the object is now managed by the returned unique_ptr

Definition at line 56 of file ExtrUniquePtrHolder.h.

56 {
57 if (input == nullptr) {
58 return nullptr;
59 }
60 // start from the last as this is more likely
61 auto itr = std::find_if(
62 m_elements.rbegin(), m_elements.rend(),
63 [&input](const std::unique_ptr<T>& x) { return x.get() == input; });
64 if (itr == m_elements.crend()) {
65 return nullptr;
66 }
68 }

◆ operator=() [1/2]

template<typename T>
ExtrUniquePtrHolder & Trk::ExtrUniquePtrHolder< T >::operator= ( const ExtrUniquePtrHolder< T > & )
delete

◆ operator=() [2/2]

template<typename T>
ExtrUniquePtrHolder & Trk::ExtrUniquePtrHolder< T >::operator= ( ExtrUniquePtrHolder< T > && )
delete

◆ push()

template<typename T>
CacheOwnedPtr< T > Trk::ExtrUniquePtrHolder< T >::push ( std::unique_ptr< T > input)
inline

push a new element to the vector and return a ptr to it

Definition at line 44 of file ExtrUniquePtrHolder.h.

44 {
45 if (input == nullptr) {
46 return nullptr;
47 }
48 m_elements.push_back(std::move(input));
49 return m_elements.back().get();
50 }

Member Data Documentation

◆ m_elements

template<typename T>
std::vector<std::unique_ptr<T> > Trk::ExtrUniquePtrHolder< T >::m_elements

Definition at line 70 of file ExtrUniquePtrHolder.h.


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