8#ifndef INCLUDED_BSLSTL_BIDIRECTIONALNODEPOOL
9#define INCLUDED_BSLSTL_BIDIRECTIONALNODEPOOL
226#include <bslscm_version.h>
244#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
248#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
252# define COMPILING_BSLSTL_BIDIRECTIONALNODEPOOL_H
254# undef COMPILING_BSLSTL_BIDIRECTIONALNODEPOOL_H
269template <
class VALUE,
class ALLOCATOR>
357#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
363 template <
class... Args>
411template <
class VALUE,
class ALLOCATOR>
427template <
class VALUE,
class ALLOCATOR>
441template <
class VALUE,
class ALLOCATOR>
444 const ALLOCATOR& allocator)
449template <
class VALUE,
class ALLOCATOR>
458template <
class VALUE,
class ALLOCATOR>
464 d_pool.adopt(MoveUtil::move(lvalue.d_pool));
467template <
class VALUE,
class ALLOCATOR>
476template <
class VALUE,
class ALLOCATOR>
482 return emplaceIntoNewNode(
486#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
487template <
class VALUE,
class ALLOCATOR>
488template <
class... Args>
497 AllocatorTraits::construct(
506template <
class VALUE,
class ALLOCATOR>
512 return emplaceIntoNewNode(MoveUtil::move(
516template <
class VALUE,
class ALLOCATOR>
524 AllocatorTraits::destroy(allocator(),
526 d_pool.deallocate(node);
529template <
class VALUE,
class ALLOCATOR>
536template <
class VALUE,
class ALLOCATOR>
542 d_pool.reserve(numNodes);
545template <
class VALUE,
class ALLOCATOR>
552 d_pool.quickSwapRetainAllocators(other.d_pool);
555template <
class VALUE,
class ALLOCATOR>
560 d_pool.quickSwapExchangeAllocators(other.d_pool);
564template <
class VALUE,
class ALLOCATOR>
576template <
class VALUE,
class ALLOCATOR>
Definition bslalg_bidirectionallink.h:346
Definition bslalg_bidirectionalnode.h:357
ValueType & value()
Definition bslalg_bidirectionalnode.h:404
Definition bslma_deallocatorproctor.h:312
void release()
Definition bslma_deallocatorproctor.h:384
Definition bslmf_movableref.h:751
Definition bslstl_bidirectionalnodepool.h:270
void release()
Definition bslstl_bidirectionalnodepool.h:531
bslalg::BidirectionalLink * cloneNode(const bslalg::BidirectionalLink &original)
Definition bslstl_bidirectionalnodepool.h:479
AllocatorType & allocator()
Definition bslstl_bidirectionalnodepool.h:471
void adopt(bslmf::MovableRef< BidirectionalNodePool > pool)
Definition bslstl_bidirectionalnodepool.h:460
void swapRetainAllocators(BidirectionalNodePool &other)
Definition bslstl_bidirectionalnodepool.h:547
bslalg::BidirectionalLink * emplaceIntoNewNode(Args &&... arguments)
Definition bslstl_bidirectionalnodepool.h:491
AllocatorTraits::size_type size_type
Alias for the size_type of the allocator defined by SimplePool.
Definition bslstl_bidirectionalnodepool.h:300
~BidirectionalNodePool()=default
BidirectionalNodePool(const ALLOCATOR &allocator)
Definition bslstl_bidirectionalnodepool.h:443
void swapExchangeAllocators(BidirectionalNodePool &other)
Definition bslstl_bidirectionalnodepool.h:557
BidirectionalNodePool(bslmf::MovableRef< BidirectionalNodePool > original)
Definition bslstl_bidirectionalnodepool.h:451
Pool::AllocatorType AllocatorType
Alias for the allocator type defined by SimplePool.
Definition bslstl_bidirectionalnodepool.h:297
void deleteNode(bslalg::BidirectionalLink *linkNode)
Definition bslstl_bidirectionalnodepool.h:517
bslalg::BidirectionalLink * moveIntoNewNode(bslalg::BidirectionalLink *original)
Definition bslstl_bidirectionalnodepool.h:509
const AllocatorType & allocator() const
Definition bslstl_bidirectionalnodepool.h:569
void reserveNodes(size_type numNodes)
Definition bslstl_bidirectionalnodepool.h:538
Definition bslstl_simplepool.h:292
Types::AllocatorType AllocatorType
Definition bslstl_simplepool.h:341
AllocatorType & allocator()
Definition bslstl_simplepool.h:573
Types::AllocatorTraits AllocatorTraits
Definition bslstl_simplepool.h:345
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1804
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1762
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
Definition bdlbb_blob.h:576
Definition bslstl_algorithm.h:82
void swap(BidirectionalNodePool< VALUE, ALLOCATOR > &a, BidirectionalNodePool< VALUE, ALLOCATOR > &b)
Definition bslmf_integralconstant.h:244
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_movableref.h:791
static TYPE * addressOf(TYPE &obj)
Definition bsls_util.h:305