16 #ifndef ROOT7_RPageAllocator
17 #define ROOT7_RPageAllocator
26 namespace Experimental {
42 std::function<void(const RPage &page, void *userData)> fFnDelete;
49 RPageDeleter() : fFnDelete(), fUserData(nullptr) {}
50 explicit RPageDeleter(decltype(fFnDelete) fnDelete) : fFnDelete(fnDelete), fUserData(nullptr) {}
51 RPageDeleter(decltype(fFnDelete) fnDelete,
void *userData) : fFnDelete(fnDelete), fUserData(userData) {}
52 RPageDeleter(
const RPageDeleter &other) =
default;
53 RPageDeleter &operator =(
const RPageDeleter &other) =
default;
54 ~RPageDeleter() =
default;
56 void operator()(
const RPage &page) { fFnDelete(page, fUserData); }
71 class RPageAllocatorHeap {
75 static RPage NewPage(ColumnId_t columnId, std::size_t elementSize, std::size_t nElements);
77 static void DeletePage(
const RPage &page);