Flow123d  DF_patch_fe_data_tables-dc3adc1
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Attributes | List of all members
ArenaResource< Resource > Class Template Reference

#include <arena_resource.hh>

Inheritance diagram for ArenaResource< Resource >:
Inheritance graph
[legend]
Collaboration diagram for ArenaResource< Resource >:
Collaboration graph
[legend]

Public Member Functions

 ArenaResource (size_t buffer_size, size_t simd_alignment, std::pmr::memory_resource *upstream=ArenaResource< Resource >::upstream_resource())
 
 ~ArenaResource ()=default
 
Resource & resource ()
 Getter for resource. More...
 
template<class T >
T * allocate_8 (size_t n_items)
 Allocate and return data pointer of n_item array of type T (alignment to length 8 bytes) More...
 
template<class T >
T * allocate_simd (size_t n_items)
 Allocate and return data pointer of n_item array of type T (alignment to length given by simd_alignment constructor argument) More...
 
void reset ()
 
size_t free_space () const
 

Protected Member Functions

void * do_allocate (size_t bytes, size_t alignment) override
 Override do_allocate to handle allocation logic. More...
 
void do_deallocate (FMT_UNUSED void *p, FMT_UNUSED size_t bytes, FMT_UNUSED size_t alignment) override
 Override do_deallocate (no-op for monotonic buffer) More...
 
bool do_is_equal (const std::pmr::memory_resource &other) const noexcept override
 Override do_is_equal for memory resource comparison. More...
 

Static Protected Member Functions

static std::pmr::memory_resource * upstream_resource ()
 Returns different upstream resource in debug / release mode. More...
 

Private Attributes

std::pmr::memory_resource * upstream_
 
void * buffer_
 
size_t buffer_size_
 
size_t used_size_
 
Resource resource_
 
size_t simd_alignment_
 

Detailed Description

template<class Resource>
class ArenaResource< Resource >

Definition at line 18 of file arena_resource.hh.

Constructor & Destructor Documentation

◆ ArenaResource()

template<class Resource >
ArenaResource< Resource >::ArenaResource ( size_t  buffer_size,
size_t  simd_alignment,
std::pmr::memory_resource *  upstream = ArenaResource<Resource>::upstream_resource() 
)
inline

Definition at line 30 of file arena_resource.hh.

◆ ~ArenaResource()

template<class Resource >
ArenaResource< Resource >::~ArenaResource ( )
default

Member Function Documentation

◆ allocate_8()

template<class Resource >
template<class T >
T* ArenaResource< Resource >::allocate_8 ( size_t  n_items)
inline

Allocate and return data pointer of n_item array of type T (alignment to length 8 bytes)

Definition at line 51 of file arena_resource.hh.

◆ allocate_simd()

template<class Resource >
template<class T >
T* ArenaResource< Resource >::allocate_simd ( size_t  n_items)
inline

Allocate and return data pointer of n_item array of type T (alignment to length given by simd_alignment constructor argument)

Definition at line 58 of file arena_resource.hh.

Here is the caller graph for this function:

◆ do_allocate()

template<class Resource >
void* ArenaResource< Resource >::do_allocate ( size_t  bytes,
size_t  alignment 
)
inlineoverrideprotected

Override do_allocate to handle allocation logic.

Definition at line 75 of file arena_resource.hh.

Here is the caller graph for this function:

◆ do_deallocate()

template<class Resource >
void ArenaResource< Resource >::do_deallocate ( FMT_UNUSED void *  p,
FMT_UNUSED size_t  bytes,
FMT_UNUSED size_t  alignment 
)
inlineoverrideprotected

Override do_deallocate (no-op for monotonic buffer)

Definition at line 85 of file arena_resource.hh.

◆ do_is_equal()

template<class Resource >
bool ArenaResource< Resource >::do_is_equal ( const std::pmr::memory_resource &  other) const
inlineoverrideprotectednoexcept

Override do_is_equal for memory resource comparison.

Definition at line 90 of file arena_resource.hh.

◆ free_space()

template<class Resource >
size_t ArenaResource< Resource >::free_space ( ) const
inline

Definition at line 69 of file arena_resource.hh.

◆ reset()

template<class Resource >
void ArenaResource< Resource >::reset ( )
inline

Definition at line 64 of file arena_resource.hh.

◆ resource()

template<class Resource >
Resource& ArenaResource< Resource >::resource ( )
inline

Getter for resource.

Definition at line 45 of file arena_resource.hh.

◆ upstream_resource()

template<class Resource >
static std::pmr::memory_resource* ArenaResource< Resource >::upstream_resource ( )
inlinestaticprotected

Returns different upstream resource in debug / release mode.

Definition at line 21 of file arena_resource.hh.

Member Data Documentation

◆ buffer_

template<class Resource >
void* ArenaResource< Resource >::buffer_
private

Definition at line 96 of file arena_resource.hh.

◆ buffer_size_

template<class Resource >
size_t ArenaResource< Resource >::buffer_size_
private

Definition at line 97 of file arena_resource.hh.

◆ resource_

template<class Resource >
Resource ArenaResource< Resource >::resource_
private

Definition at line 99 of file arena_resource.hh.

◆ simd_alignment_

template<class Resource >
size_t ArenaResource< Resource >::simd_alignment_
private

Definition at line 100 of file arena_resource.hh.

◆ upstream_

template<class Resource >
std::pmr::memory_resource* ArenaResource< Resource >::upstream_
private

Definition at line 95 of file arena_resource.hh.

◆ used_size_

template<class Resource >
size_t ArenaResource< Resource >::used_size_
private

Definition at line 98 of file arena_resource.hh.


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