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