This is a generic base type that represents a node of a doubly (bidirectional) linked list. The effective (instantiated) nodes of the list are to be derived from this type by specifying their very own type name as template parameter TElement. For more information on this design, see explanations of parent type lang::SidiNodeBase.
By being derived from the aforementioned type, instances of TElement may also be added to single-linked lists of type lang::SidiListHook). This is, for example, used by types List and HashTable to collect erased list elements for recycling.
TElement | The "final" node type, containing custom data fields, that is to be derived from this struct. |
Definition at line 35 of file bidilist.hpp.
#include <bidilist.hpp>
Public Type Index: | |
using | FWDNode = SidiNodeBase<TElement> |
Alias name for an instantiation of the base template. | |
Public Field Index: | |
TElement * | p |
Public Field Index: inherited from SidiNodeBase< TElement > | |
TElement * | n |
Public Method Index: | |
BidiNodeBase () noexcept=default | |
Default constructor. (Does not initialize the pointer!) | |
BidiNodeBase (BidiNodeBase &&) noexcept=default | |
Defaulted move constructor. | |
BidiNodeBase (const BidiNodeBase &)=delete | |
BidiNodeBase (TElement *next, TElement *prev) noexcept | |
void | addBefore (TElement *elem) noexcept |
void | addBehind (TElement *elem) noexcept |
BidiNodeBase & | operator= (BidiNodeBase &&) noexcept=default |
BidiNodeBase & | operator= (const BidiNodeBase &)=delete |
TElement * | prev () const noexcept |
void | prev (BidiNodeBase *previous) noexcept |
void | remove () noexcept |
Unhooks this node from a list. | |
void | remove (TElement *last) noexcept |
Public Method Index: inherited from SidiNodeBase< TElement > | |
SidiNodeBase () noexcept=default | |
Default constructor. (Does not initialize the pointer.) | |
SidiNodeBase (const SidiNodeBase &)=delete | |
SidiNodeBase (SidiNodeBase &&) noexcept=default | |
Defaulted move constructor. | |
SidiNodeBase (TElement *next) noexcept | |
TElement * | addBehind (TElement *elem) noexcept |
integer | count (SidiNodeBase *end=nullptr) const noexcept |
bool | hasNext () const |
TElement * | next () const |
void | next (SidiNodeBase *p) |
SidiNodeBase & | operator= (const SidiNodeBase &)=delete |
SidiNodeBase & | operator= (SidiNodeBase &&) noexcept=default |
bool | pointsTo (const SidiNodeBase *elem) const |
TElement * | removeNext () noexcept |
TElement * | removeRangeBehind (TElement *last) noexcept |
using FWDNode = SidiNodeBase<TElement> |
Alias name for an instantiation of the base template.
Definition at line 38 of file bidilist.hpp.
TElement* p |
A pointer to the previous element in the list.
Definition at line 44 of file bidilist.hpp.
|
delete |
Deleted copy constructor. This is deleted because it is dangerous, respectively often not possible and also mostly not wanted to be able to create copies of derived type TElement
|
inlinenoexcept |
Constructor accepting a pointer to the next and previous elements.
next | Pointer to the next element. Assigned to the inherited field lang::SidiNodeBase::n. |
prev | Pointer to the next element. Assigned to the field p. |
Definition at line 71 of file bidilist.hpp.
|
inlinenoexcept |
Hooks the given element before this node.
elem | The element to add. |
Definition at line 86 of file bidilist.hpp.
|
inlinenoexcept |
Hooks the given element behind this node.
elem | The element to add. |
Definition at line 96 of file bidilist.hpp.
|
defaultnoexcept |
Defaulted move assignment operator.
|
delete |
Deleted copy assignment operator. This is deleted because it is dangerous, respectively often not possible and also mostly not wanted to create copies of derived type TElement.
|
inlinenodiscardnoexcept |
Returns the backward pointer of this node.
Definition at line 78 of file bidilist.hpp.
|
inlinenoexcept |
Sets the backward pointer of this node.
previous | Pointer to the previous element. |
Definition at line 82 of file bidilist.hpp.
|
inlinenoexcept |
Unhooks this node from a list.
Definition at line 105 of file bidilist.hpp.
|
inlinenoexcept |
Unhooks the range of nodes starting with this node and ending with last a list.
last | The last element of the range to remove. |
Definition at line 113 of file bidilist.hpp.