memory
Classes | Functions
joint_allocator.hpp File Reference

Detailed Description

Class template foonathan::memory::joint_ptr, foonathan::memory::joint_allocator and related.

Classes

class  joint_ptr< T, RawAllocator >
 A pointer to an object where all allocations are joint. More...
 
class  joint_type< T >
 CRTP base class for all objects that want to use joint memory. More...
 
class  joint
 Tag type that can't be created. More...
 
struct  joint_size
 Tag type to make the joint size more explicit. More...
 
class  joint_type< T >
 CRTP base class for all objects that want to use joint memory. More...
 
class  joint_ptr< T, RawAllocator >
 A pointer to an object where all allocations are joint. More...
 
class  joint_allocator
 A RawAllocator that uses the additional joint memory for its allocation. More...
 
struct  is_shared_allocator< joint_allocator >
 Specialization of is_shared_allocator to mark joint_allocator as shared. More...
 
struct  is_thread_safe_allocator< joint_allocator >
 Specialization of is_thread_safe_allocator to mark joint_allocator as thread safe. More...
 
struct  propagation_traits< joint_allocator >
 Specialization of the propagation_traits for the joint_allocator. More...
 
class  joint_array< T >
 A zero overhead dynamic array using joint memory. More...
 

Functions

template<typename T >
detail::joint_stack & get_stack (joint_type< T > &obj) noexcept
 
template<typename T >
const detail::joint_stack & get_stack (const joint_type< T > &obj) noexcept
 
template<typename T >
char * get_memory (joint_type< T > &obj) noexcept
 
template<typename T >
const char * get_memory (const joint_type< T > &obj) noexcept
 
template<typename T , class RawAllocator >
bool operator== (std::nullptr_t, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator== (T *p, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator!= (std::nullptr_t, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator!= (T *p, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator , typename... Args>
auto allocate_joint (RawAllocator &alloc, joint_size additional_size, Args &&... args) -> joint_ptr< T, RawAllocator >
 
template<typename T , class RawAllocator , typename... Args>
auto allocate_joint (const RawAllocator &alloc, joint_size additional_size, Args &&... args) -> joint_ptr< T, RawAllocator >
 
template<class RawAllocator , typename T >
auto clone_joint (RawAllocator &alloc, const joint_type< T > &joint) -> joint_ptr< T, RawAllocator >
 
template<class RawAllocator , typename T >
auto clone_joint (const RawAllocator &alloc, const joint_type< T > &joint) -> joint_ptr< T, RawAllocator >
 
bool operator!= (const joint_allocator &lhs, const joint_allocator &rhs) noexcept
 
template<typename T , class RawAllocator >
bool operator== (std::nullptr_t, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator== (T *p, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator!= (std::nullptr_t, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator >
bool operator!= (T *p, const joint_ptr< T, RawAllocator > &ptr)
 
template<typename T , class RawAllocator , typename... Args>
auto allocate_joint (RawAllocator &alloc, joint_size additional_size, Args &&... args) -> joint_ptr< T, RawAllocator >
 
template<typename T , class RawAllocator , typename... Args>
auto allocate_joint (const RawAllocator &alloc, joint_size additional_size, Args &&... args) -> joint_ptr< T, RawAllocator >
 
template<class RawAllocator , typename T >
auto clone_joint (RawAllocator &alloc, const joint_type< T > &joint) -> joint_ptr< T, RawAllocator >
 
template<class RawAllocator , typename T >
auto clone_joint (const RawAllocator &alloc, const joint_type< T > &joint) -> joint_ptr< T, RawAllocator >
 
bool operator!= (const joint_allocator &lhs, const joint_allocator &rhs) noexcept