27 # ifndef TPL_NODEPOOL_H 28 # define TPL_NODEPOOL_H 30 # include <tpl_arrayStack.H> 53 Node_Pool(
size_t __n = 100) noexcept : node_pool(__n), n(__n) { }
58 return node_pool.
is_empty() ?
new Node : node_pool.
pop();
74 Node *
allocate(
const typename Node::key_type & key)
79 Node *
allocate(
typename Node::key_type && key)
81 return new (
allocate()) Node (std::forward<typename Node::key_type>(key));
104 if (node_pool.
size() == n)
113 delete node_pool.
pop();
117 # endif // TPL_NODEPOOL_H Definition: tpl_nodePool.H:45
void deallocate(Node *p) noexcept
Definition: tpl_nodePool.H:102
T pop() noexcept
Pop by moving the top of stack.
Definition: tpl_arrayStack.H:430
size_t size() const noexcept
Return the number of elements stored in the stack.
Definition: tpl_arrayStack.H:483
Definition: tpl_arrayStack.H:302
Node * allocate(const typename Node::key_type &key)
Definition: tpl_nodePool.H:74
bool is_empty() const noexcept
Return true if stack is empty.
Definition: tpl_arrayStack.H:477
T & push(const T &data) noexcept
Definition: tpl_arrayStack.H:385
Node * allocate()
Definition: tpl_nodePool.H:56