|
BDE 4.39.x Production Release
|
#include <bslstl_bidirectionalnodepool.h>
This class provides methods for creating and destroying nodes using the appropriate allocator-traits of the (template parameter) type ALLOCATOR.
Public Types | |
| typedef Pool::AllocatorType | AllocatorType |
| typedef AllocatorTraits::size_type | size_type |
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 |
| typedef Pool::AllocatorType bslstl::BidirectionalNodePool< VALUE, ALLOCATOR >::AllocatorType |
Alias for the allocator type defined by SimplePool.
| typedef AllocatorTraits::size_type bslstl::BidirectionalNodePool< VALUE, ALLOCATOR >::size_type |
Alias for the size_type of the allocator defined by SimplePool.
|
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) typeVALUEwill be leaked unless the nodes are explicitly destroyed via thedestroyNode` method.
|
inline |
Adopt all outstanding memory allocations associated with the specified node pool.
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.
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.
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.
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.
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.
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.
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.
allocator() == other.allocator().