Flow123d  DF_patch_fe_mechanics-c13f069
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
PatchArenaResource< Resource > Class Template Reference

#include <arena_resource.hh>

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

Public Member Functions

 DECLARE_EXCEPTION (ExcArenaAllocation,<< "Allocation of ArenaResource failed. Please check if correct type of upstream is used.")
 
 PatchArenaResource (void *buffer, size_t buffer_size, size_t simd_alignment, std::pmr::memory_resource *upstream=PatchArenaResource< Resource >::upstream_resource())
 Same as previous but doesn't construct buffer implicitly. More...
 
 ~PatchArenaResource ()=default
 
void print_space ()
 Compute and print free space and used space of arena buffer. Development method. More...
 
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 ()
 

Protected Member Functions

void * raw_allocate (size_t bytes, size_t alignment)
 
void * do_allocate (size_t bytes, size_t alignment) override
 Override do_allocate to handle allocation logic. More...
 
void do_deallocate (void *p, size_t bytes, 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...
 

Protected Attributes

std::pmr::memory_resource * upstream_
 Pointer to upstream. More...
 
void * buffer_
 Pointer to buffer. More...
 
size_t buffer_size_
 Size of buffer. More...
 
Resource resource_
 Resource of arena. More...
 
size_t simd_alignment_
 Size of SIMD alignment. More...
 
bool full_data_
 Flag signs full data (child arena is created) More...
 

Detailed Description

template<class Resource>
class PatchArenaResource< Resource >

Definition at line 32 of file arena_resource.hh.

Constructor & Destructor Documentation

◆ PatchArenaResource()

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

Same as previous but doesn't construct buffer implicitly.

Definition at line 48 of file arena_resource.hh.

◆ ~PatchArenaResource()

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

Member Function Documentation

◆ allocate_8()

template<class Resource >
template<class T >
T* PatchArenaResource< 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 78 of file arena_resource.hh.

◆ allocate_simd()

template<class Resource >
template<class T >
T* PatchArenaResource< 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 85 of file arena_resource.hh.

Here is the caller graph for this function:

◆ DECLARE_EXCEPTION()

template<class Resource >
PatchArenaResource< Resource >::DECLARE_EXCEPTION ( ExcArenaAllocation  ,
<< "Allocation of ArenaResource failed. Please check if correct type of upstream is used."   
)

◆ do_allocate()

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

Override do_allocate to handle allocation logic.

Definition at line 116 of file arena_resource.hh.

◆ do_deallocate()

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

Override do_deallocate (no-op for monotonic buffer)

Definition at line 121 of file arena_resource.hh.

Here is the caller graph for this function:

◆ do_is_equal()

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

Override do_is_equal for memory resource comparison.

Definition at line 126 of file arena_resource.hh.

◆ print_space()

template<class Resource >
void PatchArenaResource< Resource >::print_space ( )
inline

Compute and print free space and used space of arena buffer. Development method.

Definition at line 63 of file arena_resource.hh.

◆ raw_allocate()

template<class Resource >
void* PatchArenaResource< Resource >::raw_allocate ( size_t  bytes,
size_t  alignment 
)
inlineprotected

Definition at line 102 of file arena_resource.hh.

Here is the caller graph for this function:

◆ reset()

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

Definition at line 91 of file arena_resource.hh.

◆ resource()

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

Getter for resource.

Definition at line 72 of file arena_resource.hh.

◆ upstream_resource()

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

Returns different upstream resource in debug / release mode.

Definition at line 35 of file arena_resource.hh.

Member Data Documentation

◆ buffer_

template<class Resource >
void* PatchArenaResource< Resource >::buffer_
protected

Pointer to buffer.

Definition at line 131 of file arena_resource.hh.

◆ buffer_size_

template<class Resource >
size_t PatchArenaResource< Resource >::buffer_size_
protected

Size of buffer.

Definition at line 132 of file arena_resource.hh.

◆ full_data_

template<class Resource >
bool PatchArenaResource< Resource >::full_data_
protected

Flag signs full data (child arena is created)

Definition at line 135 of file arena_resource.hh.

◆ resource_

template<class Resource >
Resource PatchArenaResource< Resource >::resource_
protected

Resource of arena.

Definition at line 133 of file arena_resource.hh.

◆ simd_alignment_

template<class Resource >
size_t PatchArenaResource< Resource >::simd_alignment_
protected

Size of SIMD alignment.

Definition at line 134 of file arena_resource.hh.

◆ upstream_

template<class Resource >
std::pmr::memory_resource* PatchArenaResource< Resource >::upstream_
protected

Pointer to upstream.

Definition at line 130 of file arena_resource.hh.


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