diff options
| author | fschildt <florian.schildt@protonmail.com> | 2026-01-21 03:52:50 +0100 |
|---|---|---|
| committer | fschildt <florian.schildt@protonmail.com> | 2026-01-21 03:52:50 +0100 |
| commit | 930c477f3781a25b19037569e9927000d6c82b06 (patch) | |
| tree | 1dddb20fb65476042670f9119d6a5f6db37b1fe1 /src | |
| parent | e62fd87d463e877e93701801095f9882956d165d (diff) | |
remove common/Arena.hpp
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/Arena.hpp | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/src/common/Arena.hpp b/src/common/Arena.hpp deleted file mode 100644 index 0f2273a..0000000 --- a/src/common/Arena.hpp +++ /dev/null @@ -1,52 +0,0 @@ -#pragma once - -#include <vector> -#include <cstddef> -#include <cstdint> -#include <cassert> - - -class Arena { -public: - Arena(size_t size) : buffer(size) - { - } - - template<typename T> - size_t - Align() const - { - size_t alignment = alignof(T); - return (offset + alignment - 1) & ~(alignment - 1); - } - - template<typename T, typename... Args> - T& - Allocate(Args&&... args) - { - offset = Align<T>(); - assert(offset + sizeof(T) <= buffer.size() && "Arena out of memory"); - - T* ptr = new (&buffer[offset]) T(std::forward<Args>(args)...); - objects.emplace_back(ptr, [](void* p) { static_cast<T*>(p)->~T(); }); - - offset += sizeof(T); - return *ptr; - } - - void - Reset() - { - for (auto& [ptr, dtor] : objects) { - dtor(ptr); - } - objects.clear(); - offset = 0; - } - - - size_t offset = 0; - std::vector<uint8_t> buffer; - std::vector<std::pair<void*, void (*)(void*)>> objects; -}; - |
