ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
CaloRecGPU::Helpers::separate_thread_accessor< T > Struct Template Reference

! More...

#include <Helpers.h>

Collaboration diagram for CaloRecGPU::Helpers::separate_thread_accessor< T >:

Public Member Functions

 separate_thread_accessor (separate_thread_holder< T > &s)
 
T & get_one ()
 
void release_one ()
 
 ~separate_thread_accessor ()
 
 separate_thread_accessor (separate_thread_holder< T > &s, T *&ptr)
 

Private Attributes

separate_thread_holder< T > & m_sth
 
T * m_held
 

Detailed Description

template<class T>
struct CaloRecGPU::Helpers::separate_thread_accessor< T >

!

Utility to access a separate_thread_holder to get a pointer and call release_one at scope exit.

Definition at line 1599 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

Constructor & Destructor Documentation

◆ separate_thread_accessor() [1/2]

Definition at line 1605 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

1605  :
1606  m_sth(s), m_held(nullptr)
1607  {
1608  }

◆ ~separate_thread_accessor()

Definition at line 1625 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

1626  {
1627  if (m_held != nullptr)
1628  {
1629  m_sth.release_one();
1630  }
1631  }

◆ separate_thread_accessor() [2/2]

template<class T >
CaloRecGPU::Helpers::separate_thread_accessor< T >::separate_thread_accessor ( separate_thread_holder< T > &  s,
T *&  ptr 
)
inline

Definition at line 1632 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

1632  :
1634  {
1635  get_one();
1636  ptr = m_held;
1637  }

Member Function Documentation

◆ get_one()

template<class T >
T& CaloRecGPU::Helpers::separate_thread_accessor< T >::get_one ( )
inline

Definition at line 1609 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

1610  {
1611  if (m_held == nullptr)
1612  {
1613  m_held = &(m_sth.get_one());
1614  }
1615  return *m_held;
1616  }

◆ release_one()

template<class T >
void CaloRecGPU::Helpers::separate_thread_accessor< T >::release_one ( )
inline

Definition at line 1617 of file Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h.

1618  {
1619  if (m_held != nullptr)
1620  {
1621  m_sth.release_one();
1622  m_held = nullptr;
1623  }
1624  }

Member Data Documentation

◆ m_held

template<class T >
T* CaloRecGPU::Helpers::separate_thread_accessor< T >::m_held
private

◆ m_sth

template<class T >
separate_thread_holder<T>& CaloRecGPU::Helpers::separate_thread_accessor< T >::m_sth
private

The documentation for this struct was generated from the following file:
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
CaloRecGPU::Helpers::separate_thread_accessor::separate_thread_accessor
separate_thread_accessor(separate_thread_holder< T > &s)
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:1605
CaloRecGPU::Helpers::separate_thread_accessor::m_held
T * m_held
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:1603
CaloRecGPU::Helpers::separate_thread_accessor::m_sth
separate_thread_holder< T > & m_sth
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:1602
CaloRecGPU::Helpers::separate_thread_accessor::get_one
T & get_one()
Definition: Calorimeter/CaloRecGPU/CaloRecGPU/Helpers.h:1609