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
254# define COMPILING_BSLSTL_BIDIRECTIONALNODEPOOL_H
256# undef COMPILING_BSLSTL_BIDIRECTIONALNODEPOOL_H
273template <
class VALUE,
class ALLOCATOR>
366#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
373 template <
class... Args>
425template <
class VALUE,
class ALLOCATOR>
441template <
class VALUE,
class ALLOCATOR>
455template <
class VALUE,
class ALLOCATOR>
458 const ALLOCATOR& allocator)
463template <
class VALUE,
class ALLOCATOR>
472template <
class VALUE,
class ALLOCATOR>
478 d_pool.adopt(MoveUtil::move(lvalue.d_pool));
481template <
class VALUE,
class ALLOCATOR>
490template <
class VALUE,
class ALLOCATOR>
496 return emplaceIntoNewNode(
500#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
501template <
class VALUE,
class ALLOCATOR>
502template <
class... Args>
511 AllocatorTraits::construct(
520template <
class VALUE,
class ALLOCATOR>
526 return emplaceIntoNewNode(MoveUtil::move(
530template <
class VALUE,
class ALLOCATOR>
538 AllocatorTraits::destroy(allocator(),
540 d_pool.deallocate(node);
543template <
class VALUE,
class ALLOCATOR>
550template <
class VALUE,
class ALLOCATOR>
556 d_pool.reserve(numNodes);
559template <
class VALUE,
class ALLOCATOR>
566 d_pool.quickSwapRetainAllocators(other.d_pool);
569template <
class VALUE,
class ALLOCATOR>
574 d_pool.quickSwapExchangeAllocators(other.d_pool);
578template <
class VALUE,
class ALLOCATOR>
590template <
class VALUE,
class ALLOCATOR>
Definition bslalg_bidirectionallink.h:347
Definition bslalg_bidirectionalnode.h:357
ValueType & value()
Definition bslalg_bidirectionalnode.h:404
Definition bslma_deallocatorproctor.h:312
void release()
Definition bslma_deallocatorproctor.h:389
Definition bslmf_movableref.h:752
Definition bslstl_bidirectionalnodepool.h:274
void release()
Definition bslstl_bidirectionalnodepool.h:545
bslalg::BidirectionalLink * cloneNode(const bslalg::BidirectionalLink &original)
Definition bslstl_bidirectionalnodepool.h:493
AllocatorType & allocator()
Definition bslstl_bidirectionalnodepool.h:485
void adopt(bslmf::MovableRef< BidirectionalNodePool > pool)
Definition bslstl_bidirectionalnodepool.h:474
void swapRetainAllocators(BidirectionalNodePool &other)
Definition bslstl_bidirectionalnodepool.h:561
bslalg::BidirectionalLink * emplaceIntoNewNode(Args &&... arguments)
Definition bslstl_bidirectionalnodepool.h:505
AllocatorTraits::size_type size_type
Alias for the size_type of the allocator defined by SimplePool.
Definition bslstl_bidirectionalnodepool.h:304
~BidirectionalNodePool()=default
BidirectionalNodePool(const ALLOCATOR &allocator)
Definition bslstl_bidirectionalnodepool.h:457
void swapExchangeAllocators(BidirectionalNodePool &other)
Definition bslstl_bidirectionalnodepool.h:571
BidirectionalNodePool(bslmf::MovableRef< BidirectionalNodePool > original)
Definition bslstl_bidirectionalnodepool.h:465
Pool::AllocatorType AllocatorType
Alias for the allocator type defined by SimplePool.
Definition bslstl_bidirectionalnodepool.h:301
void deleteNode(bslalg::BidirectionalLink *linkNode)
Definition bslstl_bidirectionalnodepool.h:531
bslalg::BidirectionalLink * moveIntoNewNode(bslalg::BidirectionalLink *original)
Definition bslstl_bidirectionalnodepool.h:523
const AllocatorType & allocator() const
Definition bslstl_bidirectionalnodepool.h:583
void reserveNodes(size_type numNodes)
Definition bslstl_bidirectionalnodepool.h:552
Definition bslstl_simplepool.h:294
Types::AllocatorType AllocatorType
Definition bslstl_simplepool.h:343
AllocatorType & allocator()
Definition bslstl_simplepool.h:586
Types::AllocatorTraits AllocatorTraits
Definition bslstl_simplepool.h:347
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlbb_blob.h:579
Definition bslstl_algorithm.h:84
void swap(BidirectionalNodePool< VALUE, ALLOCATOR > &a, BidirectionalNodePool< VALUE, ALLOCATOR > &b)
Definition bslmf_integralconstant.h:261
Definition bslmf_isbitwisemoveable.h:718
Definition bslmf_movableref.h:795
static TYPE * addressOf(TYPE &obj)
Definition bsls_util.h:312