vecmem 1.18.0
Loading...
Searching...
No Matches
binary_page_memory_resource.hpp
1/*
2 * VecMem project, part of the ACTS project (R&D line)
3 *
4 * (c) 2021-2025 CERN for the benefit of the ACTS project
5 *
6 * Mozilla Public License Version 2.0
7 */
8
9#pragma once
10
11// Local include(s).
12#include "vecmem/memory/details/memory_resource_base.hpp"
13#include "vecmem/memory/memory_resource.hpp"
14#include "vecmem/vecmem_core_export.hpp"
15
16// System include(s).
17#include <memory>
18
19namespace vecmem {
20
21// Forward declaration(s).
22namespace details {
23struct binary_page_memory_resource_impl;
24}
25
38
39public:
45 explicit binary_page_memory_resource(memory_resource&);
51
62
69 delete;
70
71private:
74
77 void* do_allocate(std::size_t, std::size_t) override;
80 void do_deallocate(void* p, std::size_t, std::size_t) override;
81
83
85 std::unique_ptr<details::binary_page_memory_resource_impl> m_impl;
86
87}; // class binary_page_memory_resource
88
89} // namespace vecmem
An allocator class that wraps a memory resource.
Definition allocator.hpp:37
A memory manager using power-of-two pages that can be split to deal with allocation requests of vario...
Definition binary_page_memory_resource.hpp:37
VECMEM_CORE_EXPORT binary_page_memory_resource(binary_page_memory_resource &&parent) noexcept
Move constructor.
VECMEM_CORE_EXPORT ~binary_page_memory_resource() override
Deconstruct a binary page memory manager, freeing all allocated blocks upstream.
binary_page_memory_resource & operator=(const binary_page_memory_resource &)=delete
Disallow copying the memory resource.
VECMEM_CORE_EXPORT void do_deallocate(void *p, std::size_t, std::size_t) override
De-allocate a previously allocated memory blob.
VECMEM_CORE_EXPORT binary_page_memory_resource & operator=(binary_page_memory_resource &&rhs) noexcept
Move assignment operator.
binary_page_memory_resource(const binary_page_memory_resource &)=delete
Disallow copying the memory resource.
VECMEM_CORE_EXPORT void * do_allocate(std::size_t, std::size_t) override
Allocate a blob of memory.
Base class for implementations of the vecmem::memory_resource interface.
Definition memory_resource_base.hpp:25
Main namespace for the vecmem classes/functions.
Definition atomic_ref.hpp:16