Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
RTT::os::local_allocator< T, Alloc > Class Template Reference

#include <oro_allocator.hpp>

Classes

struct  pool_wrapper_type
 
struct  rebind
 

Public Types

typedef Alloc::const_pointer const_pointer
 
typedef Alloc::const_reference const_reference
 
typedef Alloc::difference_type difference_type
 
typedef Alloc::pointer pointer
 
typedef Alloc::reference reference
 
typedef Alloc::size_type size_type
 
typedef Alloc::value_type value_type
 

Public Member Functions

pointer address (reference x) const
 
const_pointer address (const_reference x) const
 
pointer allocate (size_type n, const_pointer hint=0)
 
void construct (pointer p, const value_type &x)
 
void deallocate (pointer p, size_type n)
 
void destroy (pointer p)
 
void grow (size_type n, const_pointer hint=0)
 
 local_allocator ()
 
 local_allocator (const local_allocator &)
 
template<class U , class A >
 local_allocator (const local_allocator< U, A > &)
 
size_type max_size () const
 
void operator= (const local_allocator &)
 
void shrink (size_type n)
 
 ~local_allocator ()
 

Private Types

typedef pool_type::const_iterator pool_cit
 
typedef pool_type::iterator pool_it
 
typedef std::multimap< size_t, pointerpool_type
 

Private Member Functions

pointer _grow (size_type n, const_pointer hint=0)
 
void _shrink (pointer t, size_type n)
 

Private Attributes

pool_wrapper_type pool
 
Mutex pool_lock
 

Detailed Description

template<class T, class Alloc = std::allocator<T>>
class RTT::os::local_allocator< T, Alloc >

A simple local allocator which keeps a small pool which you can grow manually with grow(). It delegates allocation to the Alloc for each allocation request, also if the pool is empty. The pool works on a per-type basis globally (static !). The pool is thus not per-object. A per-object allocator is not allowed by the standard. The pool is deallocated upon global destruction.

Parameters
Tthe type to allocate memory for
Allocthe allocator to delegate allocation to.

Definition at line 64 of file oro_allocator.hpp.

Member Typedef Documentation

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::const_pointer RTT::os::local_allocator< T, Alloc >::const_pointer

Definition at line 69 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::const_reference RTT::os::local_allocator< T, Alloc >::const_reference

Definition at line 71 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::difference_type RTT::os::local_allocator< T, Alloc >::difference_type

Definition at line 73 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::pointer RTT::os::local_allocator< T, Alloc >::pointer

Definition at line 68 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef pool_type::const_iterator RTT::os::local_allocator< T, Alloc >::pool_cit
private

Definition at line 195 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef pool_type::iterator RTT::os::local_allocator< T, Alloc >::pool_it
private

Definition at line 194 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef std::multimap< size_t, pointer> RTT::os::local_allocator< T, Alloc >::pool_type
private

Definition at line 193 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::reference RTT::os::local_allocator< T, Alloc >::reference

Definition at line 70 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::size_type RTT::os::local_allocator< T, Alloc >::size_type

Definition at line 72 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
typedef Alloc::value_type RTT::os::local_allocator< T, Alloc >::value_type

Definition at line 67 of file oro_allocator.hpp.

Constructor & Destructor Documentation

template<class T, class Alloc = std::allocator<T>>
RTT::os::local_allocator< T, Alloc >::local_allocator ( )
inline

Definition at line 168 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
RTT::os::local_allocator< T, Alloc >::local_allocator ( const local_allocator< T, Alloc > &  )
inline

Definition at line 169 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
RTT::os::local_allocator< T, Alloc >::~local_allocator ( )
inline

Definition at line 170 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
template<class U , class A >
RTT::os::local_allocator< T, Alloc >::local_allocator ( const local_allocator< U, A > &  )
inline

Definition at line 172 of file oro_allocator.hpp.

Member Function Documentation

template<class T, class Alloc = std::allocator<T>>
pointer RTT::os::local_allocator< T, Alloc >::_grow ( size_type  n,
const_pointer  hint = 0 
)
inlineprivate

Allocate for at least n additional items.

Definition at line 184 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::_shrink ( pointer  t,
size_type  n 
)
inlineprivate

Definition at line 188 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
pointer RTT::os::local_allocator< T, Alloc >::address ( reference  x) const
inline

Definition at line 76 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
const_pointer RTT::os::local_allocator< T, Alloc >::address ( const_reference  x) const
inline

Definition at line 80 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
pointer RTT::os::local_allocator< T, Alloc >::allocate ( size_type  n,
const_pointer  hint = 0 
)
inline

Definition at line 84 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::construct ( pointer  p,
const value_type x 
)
inline

Definition at line 132 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::deallocate ( pointer  p,
size_type  n 
)
inline

Definition at line 110 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::destroy ( pointer  p)
inline

Definition at line 136 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::grow ( size_type  n,
const_pointer  hint = 0 
)
inline

Grow local pool with room for at least n additional items.

Definition at line 141 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
size_type RTT::os::local_allocator< T, Alloc >::max_size ( ) const
inline

Definition at line 128 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::operator= ( const local_allocator< T, Alloc > &  )
inline

Definition at line 177 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
void RTT::os::local_allocator< T, Alloc >::shrink ( size_type  n)
inline

Shrink local pool with n items.

Definition at line 151 of file oro_allocator.hpp.

Member Data Documentation

template<class T, class Alloc = std::allocator<T>>
pool_wrapper_type RTT::os::local_allocator< T, Alloc >::pool
private

Definition at line 206 of file oro_allocator.hpp.

template<class T, class Alloc = std::allocator<T>>
Mutex RTT::os::local_allocator< T, Alloc >::pool_lock
private

Definition at line 180 of file oro_allocator.hpp.


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


rtt
Author(s): RTT Developers
autogenerated on Fri Oct 25 2019 03:59:47