ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
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 More...
 
std::unique_ptr< T > move (CacheOwnedPtr< T > input)
 Release a cached ptr. More...
 

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); }

◆ ~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  }
67  return std::unique_ptr<T>(std::move(*itr));
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:
Trk::ExtrUniquePtrHolder::m_elements
std::vector< std::unique_ptr< T > > m_elements
Definition: ExtrUniquePtrHolder.h:70
Trk::x
@ x
Definition: ParamDefs.h:55