#ifndef PKE_MEMORY_HPP #define PKE_MEMORY_HPP #include "macros.hpp" #include #include #include #include #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(const void *ptr, std::size_t sz); void PkeDelete(const void *ptr, std::size_t sz, MemBucket *bkt); MemBucket *BeginTransientBucket(int64_t sz = DEFAULT_BUCKET_SIZE); // 256MB void EndTransientBucket(MemBucket *bkt); void Flush(); template inline T *PkeNew() { return reinterpret_cast(PkeNew(sizeof(T))); } template inline T *PkeNew(long count) { return reinterpret_cast(PkeNew(sizeof(T) * count)); } template inline void PkeDelete(const void *ptr) { return PkeDelete(ptr, sizeof(T)); } template inline void PkeDelete(const void *ptr, long count) { return PkeDelete(ptr, sizeof(T) * count); } } /* pke */ #endif /* PKE_MEMORY_HPP */