template<typename TElement>
struct alib::lang::BidiListHook< TElement >
This struct, together with sibling struct lang::BidiNodeBase provide the tools to implement a doubly linked list of TElement instances.
Template type TElement has to extend struct BidiNodeBase<TElement>.
- See also
- Types lang::SidiNodeBase,
lang::SidiListHook, and
lang::BidiNodeBase.
- Template Parameters
-
Definition at line 135 of file bidilist.hpp.
#include <bidilist.hpp>
|
TNode | hook |
| The root node. Points twice to itself when the list is empty.
|
|
◆ TFNode
template<typename TElement >
An alias for the base type of the node type of this list.
Definition at line 138 of file bidilist.hpp.
◆ TNode
template<typename TElement >
An alias for the node type of this list.
Definition at line 141 of file bidilist.hpp.
◆ hook
template<typename TElement >
The root node. Points twice to itself when the list is empty.
Definition at line 144 of file bidilist.hpp.
◆ BidiListHook() [1/4]
template<typename TElement >
Default constructor. Initializes this list to be empty.
Definition at line 147 of file bidilist.hpp.
◆ BidiListHook() [2/4]
template<typename TElement >
Move constructor. Takes elements of move
and sets move
to empty.
- Parameters
-
Definition at line 158 of file bidilist.hpp.
◆ BidiListHook() [3/4]
template<typename TElement >
Constructor accepting a pointer to the first element.
- Parameters
-
first | The element to use as the first element of this list. |
Definition at line 180 of file bidilist.hpp.
◆ BidiListHook() [4/4]
template<typename TElement >
Constructor accepting a pointer to the first and last element.
- Parameters
-
first | The element to use as the first element of this list. |
last | The element to use as the last element of this list. |
Definition at line 191 of file bidilist.hpp.
◆ count()
template<typename TElement >
Counts the number of elements found in the range starting with this list's first element and ending with the element before end.
- Parameters
-
end | The element after the last one to count. Defaults to a nullptr marking the end of the list. |
- Returns
- The number of elements in the range.
Definition at line 277 of file bidilist.hpp.
◆ end()
template<typename TElement >
Returns a pointer to the hook node cast to a pointer to a mutable element. This method must only be used in cases where such conversion is allowed i.e., with iterator types that use this pointer exclusively for pointer value comparison but do not allow (by contract) to dereference or otherwise use this pointer.
- Returns
- The first element of this list.
Definition at line 212 of file bidilist.hpp.
◆ first()
template<typename TElement >
TElement * first |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Returns the first element of this list.
- Returns
- The first element of this list.
Definition at line 219 of file bidilist.hpp.
◆ isEmpty()
template<typename TElement >
Tests if this list is empty.
- Returns
false
if the list is empty, true
otherwise.
Definition at line 202 of file bidilist.hpp.
◆ isFirst()
template<typename TElement >
bool isFirst |
( |
const TElement * | elem | ) |
const |
|
inlinenodiscardnoexcept |
Tests if given elem is the first element of this list.
- Parameters
-
elem | The element to test for being the first. |
- Returns
true
if elem is the first element of this list, false
otherwise.
Definition at line 230 of file bidilist.hpp.
◆ isLast()
template<typename TElement >
bool isLast |
( |
const TElement * | elem | ) |
const |
|
inlinenodiscardnoexcept |
Tests if given elem is the last element of this list.
- Parameters
-
elem | The element to test for being the last. |
- Returns
true
if elem is the last element of this list, false
otherwise.
Definition at line 236 of file bidilist.hpp.
◆ last()
template<typename TElement >
TElement * last |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Returns the last element of this list.
- Returns
- The last element of this list.
Definition at line 224 of file bidilist.hpp.
◆ operator=() [1/2]
template<typename TElement >
Defaulted move assignment operator.
- Returns
- A reference to this list object.
◆ operator=() [2/2]
template<typename TElement >
Deleted copy assignment operator.
- Returns
- A reference to this list object.
◆ popEnd()
template<typename TElement >
Removes and returns the last element from this list. Must not be invoked on empty lists.
- Returns
- A pointer to the last element (which was removed).
Definition at line 264 of file bidilist.hpp.
◆ popFront()
template<typename TElement >
Removes and returns the first element from this list. Must not be invoked on empty lists.
- Returns
- A pointer to the first element (which was removed).
Definition at line 259 of file bidilist.hpp.
◆ pushEnd() [1/2]
template<typename TElement >
void pushEnd |
( |
TElement * | elem | ) |
|
|
inlinenoexcept |
Hooks the given element to the end of this list.
- Parameters
-
elem | The element to insert to at the start. |
Definition at line 249 of file bidilist.hpp.
◆ pushEnd() [2/2]
template<typename TElement >
void pushEnd |
( |
TElement * | first, |
|
|
TElement * | last ) |
|
inlinenoexcept |
Hooks the given range of elements to the end of this list.
- Parameters
-
first | The first element of the range to insert. |
last | The last element of the range to insert. |
Definition at line 254 of file bidilist.hpp.
◆ pushFront() [1/2]
template<typename TElement >
void pushFront |
( |
TElement * | elem | ) |
|
|
inlinenoexcept |
Hooks the given element to the beginning of this list.
- Parameters
-
elem | The element to insert to at the start. |
Definition at line 240 of file bidilist.hpp.
◆ pushFront() [2/2]
template<typename TElement >
void pushFront |
( |
TElement * | first, |
|
|
TElement * | last ) |
|
inlinenoexcept |
Hooks the given range of elements to the front of this list.
- Parameters
-
first | The first element of the range to insert. |
last | The last element of the range to insert. |
Definition at line 245 of file bidilist.hpp.
◆ reset()
template<typename TElement >
Resets this list to zero elements.
Definition at line 205 of file bidilist.hpp.
The documentation for this struct was generated from the following file: