BDE 4.14.0 Production release
|
#include <bslstl_bidirectionalnodepool.h>
Public Types | |
typedef Pool::AllocatorType | AllocatorType |
Alias for the allocator type defined by SimplePool . | |
typedef AllocatorTraits::size_type | size_type |
Alias for the size_type of the allocator defined by SimplePool . | |
Public Member Functions | |
BidirectionalNodePool (const ALLOCATOR &allocator) | |
BidirectionalNodePool (bslmf::MovableRef< BidirectionalNodePool > original) | |
~BidirectionalNodePool ()=default | |
void | adopt (bslmf::MovableRef< BidirectionalNodePool > pool) |
AllocatorType & | allocator () |
bslalg::BidirectionalLink * | cloneNode (const bslalg::BidirectionalLink &original) |
void | deleteNode (bslalg::BidirectionalLink *linkNode) |
template<class... Args> | |
bslalg::BidirectionalLink * | emplaceIntoNewNode (Args &&... arguments) |
bslalg::BidirectionalLink * | moveIntoNewNode (bslalg::BidirectionalLink *original) |
void | release () |
void | reserveNodes (size_type numNodes) |
void | swapRetainAllocators (BidirectionalNodePool &other) |
void | swapExchangeAllocators (BidirectionalNodePool &other) |
const AllocatorType & | allocator () const |
This class provides methods for creating and destroying nodes using the appropriate allocator-traits of the (template parameter) type ALLOCATOR
.
typedef Pool::AllocatorType bslstl::BidirectionalNodePool< VALUE, ALLOCATOR >::AllocatorType |
typedef AllocatorTraits::size_type bslstl::BidirectionalNodePool< VALUE, ALLOCATOR >::size_type |
|
inlineexplicit |
Create a BidirectionalNodePool
object that will use the specified allocator
to supply memory for allocated node objects. If the (template parameter) ALLOCATOR
is bsl::allocator
, then allocator
shall be convertible to bslma::Allocator *
.
|
inline |
Create a bidirectional node-pool, adopting all outstanding memory allocations associated with the specified original
node-pool, that will use the allocator associated with original
to supply memory for allocated node objects. original
is left in a valid but unspecified state.
|
default |
Destroy the memory pool maintained by this object, releasing all memory used by the nodes of the type BidirectionalNode<VALUE>
in the pool. Any memory allocated for the nodesvalueattribute of the (template parameter) type
VALUEwill be leaked unless the nodes are explicitly destroyed via the
destroyNode` method.
|
inline |
Adopt all outstanding memory allocations associated with the specified node pool
. The behavior is undefined unless this pool uses the same allocator as that associated with pool
. The behavior is also undefined unless this pool is in the default-constructed state.
|
inline |
Return a reference providing modifiable access to the allocator supplying memory for the memory pool maintained by this object. The behavior is undefined if the allocator used by this object is changed with this method. Note that this method provides modifiable access to enable a client to call non-const
methods on the allocator.
|
inline |
Return a reference providing non-modifiable access to the allocator supplying memory for the memory pool maintained by this object.
|
inline |
Allocate a node of the type BidirectionalNode<VALUE>
, and copy-construct an object of the (template parameter) type VALUE
having the same value as the specified original
at the value
attribute of the node. Return the address of the node. Note that the next
and prev
attributes of the returned node will be uninitialized.
void bslstl::BidirectionalNodePool< VALUE, ALLOCATOR >::deleteNode | ( | bslalg::BidirectionalLink * | linkNode | ) |
Destroy the VALUE
attribute of the specified linkNode
and return the memory footprint of linkNode
to this pool for potential reuse. The behavior is undefined unless node
refers to a bslalg::BidirectionalNode<VALUE>
that was allocated by this pool.
|
inline |
Allocate a node of the type BidirectionalNode<VALUE>
, and construct in-place an object of the (template parameter) type VALUE
with the specified constructor arguments
. Return the address of the node. Note that the next
and prev
attributes of the returned node will be uninitialized.
|
inline |
Allocate a node of the type BidirectionalNode<VALUE>
, and move-construct an object of the (template parameter) type VALUE
with the (explicitly moved) value indicated by the value
attribute of the specified original
link. Return the address of the node. Note that the next
and prev
attributes of the returned node will be uninitialized. Also note that the value
attribute of original
is left in a valid but unspecified state.
|
inline |
Relinquish all memory currently allocated with the memory pool maintained by this object.
|
inline |
Add to this pool sufficient memory to satisfy memory requests for at least the specified numNodes
before the pool replenishes. The additional memory is added irrespective of the amount of free memory when called. The behavior is undefined unless 0 < numNodes
.
|
inline |
Efficiently exchange the nodes and the allocator of this object with those of the specified other
object. This method provides the no-throw exception-safety guarantee.
|
inline |
Efficiently exchange the nodes of this object with those of the specified other
object. This method provides the no-throw exception-safety guarantee. The behavior is undefined unless allocator() == other.allocator()
.