Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_DataAllocator.H
Go to the documentation of this file.
1#ifndef AMREX_DATA_ALLOCATOR_H_
2#define AMREX_DATA_ALLOCATOR_H_
3#include <AMReX_Config.H>
4
10#include <AMReX_Arena.H>
11
12namespace amrex {
13
22 Arena* m_arena = nullptr;
23
25 DataAllocator () noexcept = default;
26
28 DataAllocator (Arena* ar) noexcept : m_arena(ar) {}
29
31 [[nodiscard]] void* alloc (std::size_t sz) const noexcept {
32 return arena()->alloc(sz);
33 }
34
36 void free (void* pt) const noexcept {
37 arena()->free(pt);
38 }
39
41 [[nodiscard]] Arena* arena () const noexcept {
42 return (m_arena) ? m_arena : The_Arena();
43 }
44};
45
54 Arena* m_arena = nullptr;
56 DataDeleter () noexcept = default;
58 DataDeleter (Arena* ar) noexcept : m_arena(ar) {}
60 [[nodiscard]] Arena* arena () const noexcept { return (m_arena) ? m_arena : The_Arena(); }
62 void operator() (void* pt) const noexcept { arena()->free(pt); }
63};
64
65}
66
67#endif
Memory arena base class and global arena accessors.
Abstract base class for memory arenas.
Definition AMReX_Arena.H:153
virtual void free(void *pt)=0
Free a previously allocated block pointed to by pt.
virtual void * alloc(std::size_t sz)=0
Allocate sz bytes from this arena.
Arena * The_Arena()
Definition AMReX_Arena.cpp:820
Definition AMReX_Amr.cpp:50
Lightweight allocator/deallocator backed by an Arena.
Definition AMReX_DataAllocator.H:21
void * alloc(std::size_t sz) const noexcept
Allocate sz bytes from the arena.
Definition AMReX_DataAllocator.H:31
DataAllocator() noexcept=default
Default-construct; alloc/free will use The_Arena().
Arena * arena() const noexcept
Return the stored arena, or The_Arena() if none was set.
Definition AMReX_DataAllocator.H:41
void free(void *pt) const noexcept
Return the allocation at pt to the arena.
Definition AMReX_DataAllocator.H:36
Arena * m_arena
Stored arena pointer (may be null).
Definition AMReX_DataAllocator.H:22
Custom deleter that returns memory to an Arena.
Definition AMReX_DataAllocator.H:53
DataDeleter() noexcept=default
Default-construct; operator() will use The_Arena().
void operator()(void *pt) const noexcept
Return the allocation at pt to the arena.
Definition AMReX_DataAllocator.H:62
Arena * m_arena
Definition AMReX_DataAllocator.H:54
Arena * arena() const noexcept
Return the stored arena, or The_Arena() if none was set.
Definition AMReX_DataAllocator.H:60