Vowpal Wabbit
Public Member Functions | Private Attributes | List of all members
VW::value_object_pool< T, TAllocator, TDeleter > Struct Template Reference

#include <object_pool.h>

Public Member Functions

 value_object_pool ()=default
 
 ~value_object_pool ()
 
void return_object (T obj)
 
get_object ()
 
bool empty () const
 
size_t size () const
 

Private Attributes

std::stack< T > m_pool
 
TAllocator m_allocator
 
TDeleter m_deleter
 

Detailed Description

template<typename T, typename TAllocator, typename TDeleter>
struct VW::value_object_pool< T, TAllocator, TDeleter >

Definition at line 127 of file object_pool.h.

Constructor & Destructor Documentation

◆ value_object_pool()

template<typename T, typename TAllocator, typename TDeleter>
VW::value_object_pool< T, TAllocator, TDeleter >::value_object_pool ( )
default

◆ ~value_object_pool()

template<typename T, typename TAllocator, typename TDeleter>
VW::value_object_pool< T, TAllocator, TDeleter >::~value_object_pool ( )
inline

Definition at line 131 of file object_pool.h.

132  {
133  while (!m_pool.empty())
134  {
135  auto& item = m_pool.top();
136  m_deleter(item);
137  m_pool.pop();
138  }
139  }
std::stack< T > m_pool
Definition: object_pool.h:160

Member Function Documentation

◆ empty()

template<typename T, typename TAllocator, typename TDeleter>
bool VW::value_object_pool< T, TAllocator, TDeleter >::empty ( ) const
inline

Definition at line 155 of file object_pool.h.

155 { return m_pool.empty(); }
std::stack< T > m_pool
Definition: object_pool.h:160

◆ get_object()

template<typename T, typename TAllocator, typename TDeleter>
T VW::value_object_pool< T, TAllocator, TDeleter >::get_object ( )
inline

Definition at line 143 of file object_pool.h.

144  {
145  if (m_pool.empty())
146  {
147  return m_allocator();
148  }
149 
150  auto obj = m_pool.top();
151  m_pool.pop();
152  return obj;
153  }
TAllocator m_allocator
Definition: object_pool.h:161
std::stack< T > m_pool
Definition: object_pool.h:160

◆ return_object()

template<typename T, typename TAllocator, typename TDeleter>
void VW::value_object_pool< T, TAllocator, TDeleter >::return_object ( obj)
inline

Definition at line 141 of file object_pool.h.

Referenced by return_v_array().

141 { m_pool.push(obj); }
std::stack< T > m_pool
Definition: object_pool.h:160

◆ size()

template<typename T, typename TAllocator, typename TDeleter>
size_t VW::value_object_pool< T, TAllocator, TDeleter >::size ( ) const
inline

Definition at line 157 of file object_pool.h.

157 { return m_pool.size(); }
std::stack< T > m_pool
Definition: object_pool.h:160

Member Data Documentation

◆ m_allocator

template<typename T, typename TAllocator, typename TDeleter>
TAllocator VW::value_object_pool< T, TAllocator, TDeleter >::m_allocator
private

Definition at line 161 of file object_pool.h.

◆ m_deleter

template<typename T, typename TAllocator, typename TDeleter>
TDeleter VW::value_object_pool< T, TAllocator, TDeleter >::m_deleter
private

Definition at line 162 of file object_pool.h.

◆ m_pool

template<typename T, typename TAllocator, typename TDeleter>
std::stack<T> VW::value_object_pool< T, TAllocator, TDeleter >::m_pool
private

Definition at line 160 of file object_pool.h.


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