1 #ifndef INCLUDED_ALLOCATORS_UNIQUE_RANGE
2 #define INCLUDED_ALLOCATORS_UNIQUE_RANGE
66 Set(p, size, deleter);
122 Set(p, size, deleter);
140 ASSERT(
size_t(deleter) < allocationAlignment);
160 Set(p, size, idxDeleter);
198 #endif // #ifndef INCLUDED_ALLOCATORS_UNIQUE_RANGE
static const size_t pageSize
void Set(pointer p, size_t size, IdxDeleter deleter)
void(* UniqueRangeDeleter)(void *pointer, size_t size)
static void swap(UniqueRange &p1, UniqueRange &p2)
#define ASSERT(expr)
same as ENSURE in debug mode, does nothing in release mode.
UniqueRange(pointer p, size_t size, IdxDeleter deleter)
IdxDeleter get_deleter() const
void RegisterUniqueRangeDeleter(UniqueRangeDeleter deleter, volatile IdxDeleter *idxDeleterOut)
register a deleter, returning its index within the table.
NOTHROW_DEFINE void CallUniqueRangeDeleter(void *pointer, size_t size, IdxDeleter idxDeleter)
#define NOTHROW_DECLARE
indicate a function will not throw any synchronous exceptions, thus hopefully generating smaller and ...
UniqueRange & operator=(RVALUE_REF(UniqueRange) rvalue)
void swap(UniqueRange &rhs)
static Status AllocateAligned(shared_ptr< T > &p, size_t size, size_t alignment=cacheLineSize)
static const IdxDeleter idxDeleterNone
void Pilfer(UniqueRange &victim)
#define RVALUE_REF(T)
expands to the type `rvalue reference to T'; used in function parameter declarations.
void reset(pointer p, size_t size, IdxDeleter deleter)
UniqueRange AllocateVM(size_t size, vm::PageType pageType, int prot)
#define LVALUE(rvalue)
convert an rvalue to an lvalue
static const size_t allocationAlignment