Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# 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.
Authors:
Andrei Alexandrescu, Timon Gehr (Ternary)

Source std/experimental/allocator/common.d

enum auto `isAllocator`(A);
  Is true iff A is an allocator.
  Examples:

      import std.experimental.allocator.building_blocks.null_allocator : NullAllocator;
      import std.experimental.allocator.mallocator : Mallocator;
      import std.experimental.allocator.gc_allocator : GCAllocator;
      import std.experimental.allocator.mmap_allocator : MmapAllocator;
      static assert(isAllocator!NullAllocator);
      static assert(isAllocator!Mallocator);
      static assert(isAllocator!GCAllocator);
      static assert(isAllocator!MmapAllocator);
      static assert(!isAllocator!int);

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.
enum auto `hasStaticallyKnownAlignment`(Allocator);
  Returns true if the Allocator has the alignment known at compile time; otherwise it returns false.
enum ulong `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.
enum ulong `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.
enum uint `platformAlignment`;
  The alignment that is guaranteed to accommodate any D object allocation on the current platform.
size_t `goodAllocSize`(A)(auto ref A `a`, size_t `n`);
  The default good size allocation is deduced as `n` rounded up to the allocator's alignment.
bool `reallocate`(Allocator)(ref Allocator `a`, ref 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.
  `reallocate` does not attempt to use Allocator.`reallocate` even if defined. This is deliberate so allocators may use it internally within their own implementation of `reallocate`.
bool `alignedReallocate`(Allocator)(ref Allocator `alloc`, ref void[] `b`, size_t `s`, uint `a`)
if (hasMember!(Allocator, "alignedAllocate"));
  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.
  `alignedReallocate` does not attempt to use Allocator.reallocate even if defined. This is deliberate so allocators may use it internally within their own implementation of reallocate.
string `forwardToMember`(string `member`, string[] `funs`...);
  Forwards each of the methods in `funs` (if defined) to `member`.

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Wed Feb 15 22:44:09 2023