ALib C++ Library
Library Version: 2402 R1
Documentation generated by doxygen
Loading...
Searching...
No Matches
SidiListHelper< TElement > Struct Template Reference

Description:

template<typename TElement>
struct alib::lang::SidiListHelper< 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::BidiListHelper .
Template Parameters
TElementThe "final" custom type that (by contract) is derived from lang::SidiNodeBase .

Definition at line 194 of file sidilist.hpp.

#include <sidilist.hpp>

Public Type Index:

using TNode = SidiNodeBase<TElement>
 

Public Field Index:

TNode hook
 

Public Method Index:

 SidiListHelper () noexcept
 
 SidiListHelper (const SidiListHelper &copy)=delete
 
 SidiListHelper (SidiListHelper &&) noexcept=default
 
integer count (TElement *end=nullptr) const
 
TNodefindAndRemove (TElement *elem)
 
TElement * findLast () const
 
TElement * findLast (TElement *hint) const
 
TElement * findLastBefore (TElement *elem)
 
TElement * first () const
 
bool isEmpty () const
 
SidiListHelperoperator= (const SidiListHelper &) noexcept=delete
 
SidiListHelperoperator= (SidiListHelper &&) noexcept=default
 
TElement * popFront ()
 
void pushFront (TElement *elem)
 
void pushFront (TElement *first, TElement *last)
 
void reset ()
 

Type Definition Details:

◆ TNode

template<typename TElement >
using TNode = SidiNodeBase<TElement>

An alias for the node type.

Definition at line 197 of file sidilist.hpp.

Field Details:

◆ hook

template<typename TElement >
TNode hook

Pointer to the first node.

Definition at line 200 of file sidilist.hpp.

Constructor(s) / Destructor Details::

◆ SidiListHelper() [1/3]

template<typename TElement >
SidiListHelper ( )
inlinenoexcept

Default constructor. Initializes this list to be empty.

Definition at line 203 of file sidilist.hpp.

◆ SidiListHelper() [2/3]

template<typename TElement >
SidiListHelper ( const SidiListHelper< TElement > & copy)
delete

Deleted copy constructor.

Note
Copy construction is a duty of derived useable types.

◆ SidiListHelper() [3/3]

template<typename TElement >
SidiListHelper ( SidiListHelper< TElement > && )
defaultnoexcept

Move constructor. Copies the link from move and sets the link of move to nullptr.

Method Details:

◆ count()

template<typename TElement >
integer count ( TElement * end = nullptr) const
inline

Counts the number of elements found in the range starting with this list's first element and ending with the element before end .

Parameters
endThe 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 332 of file sidilist.hpp.

Here is the call graph for this function:

◆ findAndRemove()

template<typename TElement >
TNode * findAndRemove ( TElement * elem)
inline

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, behavior is undefined (nullptr access).
Furthermore, the successor of given elem is not changed, although it is removed from the list.
Parameters
elemThe 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 320 of file sidilist.hpp.

Here is the call graph for this function:

◆ findLast() [1/2]

template<typename TElement >
TElement * findLast ( ) const
inline

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 278 of file sidilist.hpp.

Here is the call graph for this function:

◆ findLast() [2/2]

template<typename TElement >
TElement * findLast ( TElement * hint) const
inline

Searches and returns the last element.

Parameters
hintAn element of this list used to start the search.
Returns
The last element of this list.

Definition at line 289 of file sidilist.hpp.

◆ findLastBefore()

template<typename TElement >
TElement * findLastBefore ( TElement * elem)
inline

Searches the node or element that points to the given element.

Attention
The element has to exist. Otherwise a nullptr exception will occur!
Parameters
elemThe element to search for.
Returns
The node (this object) or element pointing to elem .

Definition at line 301 of file sidilist.hpp.

Here is the call graph for this function:

◆ first()

template<typename TElement >
TElement * first ( ) const
inline

Returns the start element of this list.

Returns
The first element of this list, respectively nullptr if this list is empty.

Definition at line 240 of file sidilist.hpp.

Here is the call graph for this function:

◆ isEmpty()

template<typename TElement >
bool isEmpty ( ) const
inline

Tests if this list is empty.

Returns
false if the list is empty, true otherwise.

Definition at line 227 of file sidilist.hpp.

Here is the call graph for this function:

◆ operator=() [1/2]

template<typename TElement >
SidiListHelper & operator= ( const SidiListHelper< TElement > & )
deletenoexcept

Deleted copy assignment operator.

Returns
Not applicable

◆ operator=() [2/2]

template<typename TElement >
SidiListHelper & operator= ( SidiListHelper< TElement > && )
defaultnoexcept

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 >
TElement * popFront ( )
inline

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 264 of file sidilist.hpp.

Here is the call graph for this function:

◆ pushFront() [1/2]

template<typename TElement >
void pushFront ( TElement * elem)
inline

Hooks the given element to the beginning of this list.

Parameters
elemThe element to insert to at the start.

Definition at line 247 of file sidilist.hpp.

Here is the call graph for this function:

◆ 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
firstThe first element of the range to insert.
lastThe last element of the range to insert.

Definition at line 256 of file sidilist.hpp.

Here is the call graph for this function:

◆ reset()

template<typename TElement >
void reset ( )
inline

Resets this list to zero elements.

Definition at line 233 of file sidilist.hpp.

Here is the call graph for this function:

The documentation for this struct was generated from the following file: