[#BloombergLP-bslstl-BidirectionalNodePool] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::BidirectionalNodePool :relfileprefix: ../../ :mrdocs: This class provides methods for creating and destroying nodes using the appropriate allocator‐traits of the (template parameter) type `ALLOCATOR`. == Synopsis Declared in `<bslstl_bidirectionalnodepool.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template< class VALUE, class ALLOCATOR> class BidirectionalNodePool; ---- == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/BidirectionalNodePool/AllocatorType.adoc[`AllocatorType`] | Alias for the allocator type defined by `SimplePool`. | xref:BloombergLP/bslstl/BidirectionalNodePool/size_type.adoc[`size_type`] | Alias for the `size_type` of the allocator defined by `SimplePool`. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/BidirectionalNodePool/2constructor-07.adoc[`BidirectionalNodePool`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslstl/BidirectionalNodePool/adopt.adoc[`adopt`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/allocator-01.adoc[`allocator`] | `allocator` overloads | xref:BloombergLP/bslstl/BidirectionalNodePool/cloneNode.adoc[`cloneNode`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/deleteNode.adoc[`deleteNode`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/emplaceIntoNewNode.adoc[`emplaceIntoNewNode`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/moveIntoNewNode.adoc[`moveIntoNewNode`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/release.adoc[`release`] | Relinquish all memory currently allocated with the memory pool maintained by this object. | xref:BloombergLP/bslstl/BidirectionalNodePool/reserveNodes.adoc[`reserveNodes`] | 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`. | xref:BloombergLP/bslstl/BidirectionalNodePool/swapExchangeAllocators.adoc[`swapExchangeAllocators`] | 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. | xref:BloombergLP/bslstl/BidirectionalNodePool/swapRetainAllocators.adoc[`swapRetainAllocators`] | 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()`. |=== == Non-Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/swap-0ee.adoc[`swap`] | Efficiently exchange the nodes of the specified `a` object with those of the specified `b` object. This method provides the no‐throw exception‐safety guarantee. The behavior is undefined unless `a.allocator() == b.allocator()`. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#