std.experimental.allocator.common

Utility and ancillary artifacts of std.experimental.allocator. This module shouldn't be used directly; its functionality will be migrated into more appropriate parts of std.

Members

Enums

isAllocator
eponymoustemplate isAllocator(A)

Is true iff A is an allocator.

Functions

alignedReallocate
bool alignedReallocate(Allocator alloc, void[] b, size_t s, uint a)

The default alignedReallocate function first attempts to use expand. If Allocator.expand is not defined or returns false, alignedReallocate allocates a new block of memory of appropriate size and copies data from the old block to the new block. Finally, if Allocator defines deallocate, alignedReallocate uses it to free the old memory block.

forwardToMember
string forwardToMember(string member, string[] funs)

Forwards each of the methods in funs (if defined) to member.

goodAllocSize
size_t goodAllocSize(A a, size_t n)

The default good size allocation is deduced as n rounded up to the allocator's alignment.

reallocate
bool reallocate(Allocator a, void[] b, size_t s)

The default reallocate function first attempts to use expand. If Allocator.expand is not defined or returns false, reallocate allocates a new block of memory of appropriate size and copies data from the old block to the new block. Finally, if Allocator defines deallocate, reallocate uses it to free the old memory block.

Manifest constants

chooseAtRuntime
enum chooseAtRuntime;

chooseAtRuntime is a compile-time constant of type size_t that several parameterized structures in this module recognize to mean deferral to runtime of the exact value. For example, BitmappedBlock!(Allocator, 4096) (described in detail below) defines a block allocator with block size of 4096 bytes, whereas BitmappedBlock!(Allocator, chooseAtRuntime) defines a block allocator that has a field storing the block size, initialized by the user.

unbounded
enum unbounded;

unbounded is a compile-time constant of type size_t that several parameterized structures in this module recognize to mean "infinite" bounds for the parameter. For example, Freelist (described in detail below) accepts a maxNodes parameter limiting the number of freelist items. If unbounded is passed for maxNodes, then there is no limit and no checking for the number of nodes.

Templates

hasStaticallyKnownAlignment
template hasStaticallyKnownAlignment(Allocator)

Returns true if the Allocator has the alignment known at compile time; otherwise it returns false.

stateSize
template stateSize(T)

Returns the size in bytes of the state that needs to be allocated to hold an object of type T. stateSize!T is zero for structs that are not nested and have no nonstatic member variables.

Variables

platformAlignment
enum uint platformAlignment;

The alignment that is guaranteed to accommodate any D object allocation on the current platform.

Meta

Authors

Andrei Alexandrescu, Timon Gehr (Ternary)