distortos  v0.4.0
object-oriented C++ RTOS for microcontrollers
estd::internal::IntrusiveForwardListBase Class Reference

IntrusiveForwardListBase class provides base functionalities for IntrusiveForwardList class, but without any knowledge about types. More...

#include <IntrusiveForwardList.hpp>

Collaboration diagram for estd::internal::IntrusiveForwardListBase:
[legend]

Public Member Functions

constexpr IntrusiveForwardListBase ()
 IntrusiveForwardListBase's constructor. More...
 
 ~IntrusiveForwardListBase ()
 IntrusiveForwardListBase's destructor. More...
 
IntrusiveForwardListNodebefore_begin ()
 
const IntrusiveForwardListNodebefore_begin () const
 
IntrusiveForwardListNodebegin ()
 
const IntrusiveForwardListNodebegin () const
 
const IntrusiveForwardListNodecbefore_begin () const
 
const IntrusiveForwardListNodecbegin () const
 
const IntrusiveForwardListNodecend () const
 
void clear ()
 Unlinks all nodes from the list. More...
 
bool empty () const
 
IntrusiveForwardListNodeend ()
 
const IntrusiveForwardListNodeend () const
 
void pop_front ()
 Unlinks the first node from the list. More...
 
void push_front (IntrusiveForwardListNode &newNode)
 Links the node at the beginning of the list. More...
 
void swap (IntrusiveForwardListBase &other)
 Swaps contents with another list. More...
 
 IntrusiveForwardListBase (const IntrusiveForwardListBase &)=delete
 
 IntrusiveForwardListBase (IntrusiveForwardListBase &&)=default
 
const IntrusiveForwardListBaseoperator= (const IntrusiveForwardListBase &)=delete
 
IntrusiveForwardListBaseoperator= (IntrusiveForwardListBase &&)=delete
 

Static Public Member Functions

static IntrusiveForwardListNodeerase_after (IntrusiveForwardListNode *const position)
 Unlinks the node following position from the list. More...
 
static void insert_after (IntrusiveForwardListNode *const position, IntrusiveForwardListNode &newNode)
 Links the node in the list after position. More...
 
static void splice_after (IntrusiveForwardListNode *const position, IntrusiveForwardListNode *const beforeSplicedNode)
 Transfers the node from one list to another list after position. More...
 

Private Attributes

IntrusiveForwardListNode rootNode_
 root node of the intrusive forward list More...
 

Detailed Description

IntrusiveForwardListBase class provides base functionalities for IntrusiveForwardList class, but without any knowledge about types.

This class tries to provide an interface similar to std::forward_list.

Constructor & Destructor Documentation

◆ IntrusiveForwardListBase()

constexpr estd::internal::IntrusiveForwardListBase::IntrusiveForwardListBase ( )
inline

IntrusiveForwardListBase's constructor.

◆ ~IntrusiveForwardListBase()

estd::internal::IntrusiveForwardListBase::~IntrusiveForwardListBase ( )
inline

IntrusiveForwardListBase's destructor.

Unlinks all nodes from the list.

Member Function Documentation

◆ before_begin() [1/2]

IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::before_begin ( )
inline
Returns
pointer to "one before the first" node on the list

◆ before_begin() [2/2]

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::before_begin ( ) const
inline
Returns
const pointer to "one before the first" node on the list

◆ begin() [1/2]

IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::begin ( )
inline
Returns
pointer to first node on the list
Here is the call graph for this function:

◆ begin() [2/2]

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::begin ( ) const
inline
Returns
const pointer to first node on the list
Here is the call graph for this function:

◆ cbefore_begin()

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::cbefore_begin ( ) const
inline
Returns
const pointer to "one before the first" node on the list

◆ cbegin()

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::cbegin ( ) const
inline
Returns
const pointer to first node on the list

◆ cend()

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::cend ( ) const
inline
Returns
const pointer to "one past the last" node on the list

◆ clear()

void estd::internal::IntrusiveForwardListBase::clear ( )
inline

Unlinks all nodes from the list.

◆ empty()

bool estd::internal::IntrusiveForwardListBase::empty ( ) const
inline
Returns
true is the list is empty, false otherwise

◆ end() [1/2]

IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::end ( )
inline
Returns
pointer to "one past the last" node on the list

◆ end() [2/2]

const IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::end ( ) const
inline
Returns
const pointer to "one past the last" node on the list

◆ erase_after()

static IntrusiveForwardListNode* estd::internal::IntrusiveForwardListBase::erase_after ( IntrusiveForwardListNode *const  position)
inlinestatic

Unlinks the node following position from the list.

Note
No instance of the list is needed for this operation.
Parameters
[in]positionis a pointer to the node preceding the one which will be unlinked from the list
Returns
pointer to the node that was following the node which was unlinked
Here is the call graph for this function:
Here is the caller graph for this function:

◆ insert_after()

static void estd::internal::IntrusiveForwardListBase::insert_after ( IntrusiveForwardListNode *const  position,
IntrusiveForwardListNode newNode 
)
inlinestatic

Links the node in the list after position.

Note
No instance of the list is needed for this operation.
Parameters
[in]positionis a pointer to node after which newNode will be linked
[in]newNodeis a reference to node that will be linked in the list
Here is the call graph for this function:
Here is the caller graph for this function:

◆ pop_front()

void estd::internal::IntrusiveForwardListBase::pop_front ( )
inline

Unlinks the first node from the list.

◆ push_front()

void estd::internal::IntrusiveForwardListBase::push_front ( IntrusiveForwardListNode newNode)
inline

Links the node at the beginning of the list.

Parameters
[in]newNodeis a reference to node that will be linked in the list

◆ splice_after()

static void estd::internal::IntrusiveForwardListBase::splice_after ( IntrusiveForwardListNode *const  position,
IntrusiveForwardListNode *const  beforeSplicedNode 
)
inlinestatic

Transfers the node from one list to another list after position.

Note
No instance of any list is needed for this operation.
Parameters
[in]positionis a pointer to node after which spliced node will be linked
[in]beforeSplicedNodeis a pointer to node preceding the one which will be spliced from one list to another
Here is the call graph for this function:
Here is the caller graph for this function:

◆ swap()

void estd::internal::IntrusiveForwardListBase::swap ( IntrusiveForwardListBase other)
inline

Swaps contents with another list.

Parameters
[in]otheris a reference to IntrusiveForwardListBase with which contents of this list will be swapped
Here is the caller graph for this function:

Member Data Documentation

◆ rootNode_

IntrusiveForwardListNode estd::internal::IntrusiveForwardListBase::rootNode_
private

root node of the intrusive forward list


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