aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorfschildt <florian.schildt@protonmail.com>2026-01-21 03:52:50 +0100
committerfschildt <florian.schildt@protonmail.com>2026-01-21 03:52:50 +0100
commit930c477f3781a25b19037569e9927000d6c82b06 (patch)
tree1dddb20fb65476042670f9119d6a5f6db37b1fe1 /src/common
parente62fd87d463e877e93701801095f9882956d165d (diff)
remove common/Arena.hpp
Diffstat (limited to 'src/common')
-rw-r--r--src/common/Arena.hpp52
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;
-};
-