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

Description:

template<typename TElement>
struct alib::lang::BidiListHelper< TElement >

This struct, together with sibling struct lang::BidiNodeBase provide the tools to implement a doubly linked list of TElement instances.

Template type TElement have to extend struct BidiNodeBase<TElement>.

See also
Types lang::SidiNodeBase ,
lang::SidiListHelper and
lang::BidiNodeBase .
Template Parameters
TElementThe "final" custom type that (by contract) is derived from lang::BidiNodeBase .

Definition at line 142 of file bidilist.hpp.

#include <bidilist.hpp>

Public Type Index:

using TFNode = SidiNodeBase<TElement>
 
using TNode = BidiNodeBase<TElement>
 

Public Field Index:

TNode hook
 

Public Method Index:

 BidiListHelper () noexcept
 
 BidiListHelper (BidiListHelper &&move) noexcept
 
 BidiListHelper (const BidiListHelper &)=delete
 
 BidiListHelper (TElement *first)
 
 BidiListHelper (TElement *first, TElement *last)
 
integer count (const TNode *end=nullptr) const
 
TElement * end () const
 
TElement * first () const
 
bool isEmpty () const
 
bool isFirst (const TElement *elem) const
 
bool isLast (const TElement *elem) const
 
TElement * last () const
 
BidiListHelperoperator= (BidiListHelper &&) noexcept=default
 
BidiListHelperoperator= (const BidiListHelper &)=delete
 
TElement * popEnd ()
 
TElement * popFront ()
 
void pushEnd (TElement *elem)
 
void pushEnd (TElement *first, TElement *last)
 
void pushFront (TElement *elem)
 
void pushFront (TElement *first, TElement *last)
 
void reset ()
 

Type Definition Details:

◆ TFNode

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

An alias for the base type of the node type of this list.

Definition at line 145 of file bidilist.hpp.

◆ TNode

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

An alias for the node type of this list.

Definition at line 148 of file bidilist.hpp.

Field Details:

◆ hook

template<typename TElement >
TNode hook

The root node. Points twice to itself when list is empty.

Definition at line 151 of file bidilist.hpp.

Constructor(s) / Destructor Details::

◆ BidiListHelper() [1/5]

template<typename TElement >
BidiListHelper ( )
inlinenoexcept

Default constructor. Initializes this list to be empty.

Definition at line 154 of file bidilist.hpp.

Here is the call graph for this function:

◆ BidiListHelper() [2/5]

template<typename TElement >
BidiListHelper ( const BidiListHelper< TElement > & )
delete

Deleted copy constructor.

◆ BidiListHelper() [3/5]

template<typename TElement >
BidiListHelper ( BidiListHelper< TElement > && move)
inlinenoexcept

Move constructor. Takes elements of move and sets move to empty.

Parameters
moveThe list to move.

Definition at line 166 of file bidilist.hpp.

Here is the call graph for this function:

◆ BidiListHelper() [4/5]

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

Constructor accepting a pointer to the first element.

Parameters
firstThe element to use as the first element of this list.

Definition at line 188 of file bidilist.hpp.

Here is the call graph for this function:

◆ BidiListHelper() [5/5]

template<typename TElement >
BidiListHelper ( TElement * first,
TElement * last )
inline

Constructor accepting a pointer to the first and last element.

Parameters
firstThe element to use as the first element of this list.
lastThe element to use as the last element of this list.

Definition at line 199 of file bidilist.hpp.

Here is the call graph for this function:

Method Details:

◆ count()

template<typename TElement >
integer count ( const TNode * 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 317 of file bidilist.hpp.

Here is the call graph for this function:

◆ end()

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

Returns a pointer to the hook node casted 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 226 of file bidilist.hpp.

◆ first()

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

Returns the first element of this list.

Returns
The first element of this list.

Definition at line 234 of file bidilist.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 209 of file bidilist.hpp.

Here is the call graph for this function:

◆ isFirst()

template<typename TElement >
bool isFirst ( const TElement * elem) const
inline

Tests if given elem is the first element of this list.

Parameters
elemThe element to test for being the first.
Returns
true if elem is the first element of this list, false otherwise.

Definition at line 249 of file bidilist.hpp.

Here is the call graph for this function:

◆ isLast()

template<typename TElement >
bool isLast ( const TElement * elem) const
inline

Tests if given elem is the last element of this list.

Parameters
elemThe element to test for being the last.
Returns
true if elem is the last element of this list, false otherwise.

Definition at line 257 of file bidilist.hpp.

Here is the call graph for this function:

◆ last()

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

Returns the last element of this list.

Returns
The last element of this list.

Definition at line 241 of file bidilist.hpp.

Here is the call graph for this function:

◆ operator=() [1/2]

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

Defaulted move assignment operator.

Returns
A reference to this list object.

◆ operator=() [2/2]

template<typename TElement >
BidiListHelper & operator= ( const BidiListHelper< TElement > & )
delete

Deleted copy assignment operator.

Returns
A reference to this list object.

◆ popEnd()

template<typename TElement >
TElement * popEnd ( )
inline

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 305 of file bidilist.hpp.

Here is the call graph for this function:

◆ popFront()

template<typename TElement >
TElement * popFront ( )
inline

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 295 of file bidilist.hpp.

Here is the call graph for this function:

◆ pushEnd() [1/2]

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

Hooks the given element to the end of this list.

Parameters
elemThe element to insert to at the start.

Definition at line 279 of file bidilist.hpp.

Here is the call graph for this function:

◆ pushEnd() [2/2]

template<typename TElement >
void pushEnd ( TElement * first,
TElement * last )
inline

Hooks the given range of elements to the end of this list.

Parameters
firstThe first element of the range to insert.
lastThe last element of the range to insert.

Definition at line 287 of file bidilist.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 264 of file bidilist.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 272 of file bidilist.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 215 of file bidilist.hpp.

Here is the call graph for this function:

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