summaryrefslogtreecommitdiff
path: root/src/memory.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/memory.hpp')
-rw-r--r--src/memory.hpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/memory.hpp b/src/memory.hpp
new file mode 100644
index 0000000..43ada0f
--- /dev/null
+++ b/src/memory.hpp
@@ -0,0 +1,34 @@
+#ifndef PKE_MEMORY_HPP
+#define PKE_MEMORY_HPP
+
+#include <cstdint>
+#include <cstdlib>
+#include <cstdio>
+
+#define DEFAULT_BUCKET_SIZE 1UL << 27
+
+namespace pke
+{
+
+struct MemBucket;
+
+void *PkeNew(std::size_t sz);
+void *PkeNew(std::size_t sz, MemBucket *bkt);
+void PkeDelete(void *ptr);
+void PkeDelete(void *ptr, MemBucket *bkt);
+
+MemBucket *BeginTransientBucket(int64_t sz = DEFAULT_BUCKET_SIZE); // 256MB
+void EndTransientBucket(MemBucket *bkt);
+
+template <typename T>
+T *PkeNew() {
+ return reinterpret_cast<T *>(PkeNew(sizeof(T)));
+}
+template <typename T>
+T *PkeNew(std::size_t sz) {
+ return reinterpret_cast<T *>(PkeNew(sz));
+}
+
+} /* pke */
+
+#endif /* PKE_MEMORY_HPP */