template<typename TElement>
struct alib::lang::SidiListHook< TElement >
This class, together with sibling class lang::SidiNodeBase provide the tools to implement a single linked list of TElement instances.
- See also
- Types lang::SidiNodeBase,
lang::BidiNodeBase, and
lang::BidiListHook.
- Template Parameters
-
Definition at line 191 of file sidilist.hpp.
#include <sidilist.hpp>
◆ TNode
template<typename TElement >
◆ SidiListHook() [1/3]
template<typename TElement >
Default constructor. Initializes this list to be empty.
Definition at line 197 of file sidilist.hpp.
◆ SidiListHook() [2/3]
template<typename TElement >
Deleted copy constructor.
- Note
- Copy construction is a duty of derived usable types.
◆ SidiListHook() [3/3]
template<typename TElement >
Move constructor. Copies the link from move and sets the link of move to nullptr
.
◆ count()
template<typename TElement >
integer count |
( |
TElement * | end = nullptr | ) |
const |
|
inlinenodiscardnoexcept |
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 322 of file sidilist.hpp.
◆ findAndRemove()
template<typename TElement >
TNode * findAndRemove |
( |
TElement * | elem | ) |
|
|
inlinenoexcept |
Searches the predecessor of the given element using findLastBefore and unhooks the element from the list.
- Attention
- It is not checked whether a predecessor was found, aka whether elem is an element of this list. If not, the behavior is undefined (
nullptr access
).
Furthermore, the successor of given elem is not changed, although it is removed from the list.
- Parameters
-
elem | The element to remove. |
- Returns
- The node (this object) or element that pointed to given elem before the invocation and now points to the successor of elem.
Definition at line 309 of file sidilist.hpp.
◆ findLast() [1/2]
template<typename TElement >
TElement * findLast |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Searches and returns the last element.
- Note
- This method must only be invoked on non-empty lists (isEmpty returns
false
). Otherwise, this method has undefined behavior (dereference of a nullptr
). To find the pointer to the last element, use findLastBefore providing nullptr
.
- Returns
- The last element of this list.
Definition at line 265 of file sidilist.hpp.
◆ findLast() [2/2]
template<typename TElement >
TElement * findLast |
( |
TElement * | hint | ) |
const |
|
inlinenodiscardnoexcept |
Searches and returns the last element.
- Parameters
-
hint | An element of this list used to start the search. |
- Returns
- The last element of this list.
Definition at line 277 of file sidilist.hpp.
◆ findLastBefore()
template<typename TElement >
TElement * findLastBefore |
( |
TElement * | elem | ) |
|
|
inlinenodiscardnoexcept |
Searches the node or element that points to the given element.
- Attention
- The element has to exist. Otherwise, a
nullptr
exception will occur!
- Parameters
-
elem | The element to search for. |
- Returns
- The node (this object) or element pointing to elem.
Definition at line 290 of file sidilist.hpp.
◆ first()
template<typename TElement >
TElement * first |
( |
| ) |
const |
|
inlinenodiscardnoexcept |
Returns the start element of this list.
- Returns
- The first element of this list, respectively
nullptr
if this list is empty.
Definition at line 229 of file sidilist.hpp.
◆ isEmpty()
template<typename TElement >
Tests if this list is empty.
- Returns
false
if the list is empty, true
otherwise.
Definition at line 221 of file sidilist.hpp.
◆ operator=() [1/2]
template<typename TElement >
Deleted copy assignment operator.
- Returns
- Not applicable
◆ operator=() [2/2]
template<typename TElement >
Move assignment operator. Copies the link to the first element from move and sets the link in move to nullptr
.
- Returns
- A reference to this list object.
◆ popFront()
template<typename TElement >
Removes and returns the first element from this list.
- Returns
- A pointer to the element, respectively
nullptr
if the list was empty.
Definition at line 250 of file sidilist.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 233 of file sidilist.hpp.
◆ pushFront() [2/2]
template<typename TElement >
void pushFront |
( |
TElement * | first, |
|
|
TElement * | last ) |
|
inline |
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 242 of file sidilist.hpp.
◆ reset()
template<typename TElement >
Resets this list to zero elements.
Definition at line 224 of file sidilist.hpp.
The documentation for this struct was generated from the following file: