Iridescence 1.00
Embedded Graphic Framework
Loading...
Searching...
No Matches
list< T > Class Template Referenceabstract

list is the base class implementing a double linked list. It cannot be instantiated on it's own since it's missing the mechanism for allocating / freeing nodes. The list also maintains an internal pointer that can be used for walking through the list or removing elements. More...

#include <ds_types_list.h>

Inheritance diagram for list< T >:
[legend]

Classes

struct  Node
 

Public Member Functions

 list ()
 Creates a list object and initializes it to an empty linked list.
 
 list (const list &rhs)=delete
 
void clear (void)
 Clears all the elements of a list and frees them.
 
size_t size (void) const
 Returns the number of elements in the list.
 
bool insertAtPos (const T &value, size_t pos)
 Inserts an element at a specified position.
 
bool insertFront (const T &value)
 Inserts an element at the front of the list.
 
bool append (const T &value)
 Inserts an element at the end of the list.
 
bool insertOrdered (const T &value, const lambda< bool(const T &left, const T &right)> &compare_fn)
 Performs an ordered inserts of an element in the list.
 
void removeCurrent (bool move_to_next)
 Removes the element pointer to by the internal pointer.
 
void removeAtPos (size_t pos)
 Removes the element at the specified position.
 
bool remove (const T &value)
 Removes the first matched element.
 
T & operator[] (size_t pos)
 Access operator [].
 
T * findElement (const T &value)
 Searches for the first element matching the specified value.
 
int32_t findIndex (const T &value)
 Searches for the first element matching the specified value.
 
int32_t findIndex (const lambda< bool(const T &item)> &equals)
 Searches for the first element matching the specified value. Uses a lambda to perform the matching.
 
void startFirst (void)
 Initializes the internal element pointer to the first one in the list.
 
void startLast (void)
 Initializes the internal element pointer to the last one in the list.
 
void goNext (void)
 Advances the internal element pointer to the next one (going forward).
 
void goPrevious (void)
 Advances the internal element pointer to the previous one (going backward).
 
bool valid (void) const
 Is the internal element pointer valid?
 
T & current (void)
 Returns the element pointed by the internal pointer. If the internal pointer is not valid it will likely cause a crash.
 

Protected Member Functions

virtual void resetNodes (void)=0
 
virtual NodeallocNode (void)=0
 
virtual void freeNode (Node *node)=0
 

Detailed Description

template<typename T>
class list< T >

list is the base class implementing a double linked list. It cannot be instantiated on it's own since it's missing the mechanism for allocating / freeing nodes. The list also maintains an internal pointer that can be used for walking through the list or removing elements.

Member Function Documentation

◆ append()

template<typename T >
bool list< T >::append ( const T &  value)
inline

Inserts an element at the end of the list.

Parameters
valueElement to insert
Returns
True if the insertion was successfull. False if there is no more memory available to allocate the new node.

◆ current()

template<typename T >
T & list< T >::current ( void  )
inline

Returns the element pointed by the internal pointer. If the internal pointer is not valid it will likely cause a crash.

Returns
Elemented pointed by the internal element pointer

◆ findElement()

template<typename T >
T * list< T >::findElement ( const T &  value)
inline

Searches for the first element matching the specified value.

Parameters
valueElement to search for
Returns
Reference T& to the element if found or reference to a nullptr if it does not exist

◆ findIndex() [1/2]

template<typename T >
int32_t list< T >::findIndex ( const lambda< bool(const T &item)> &  equals)
inline

Searches for the first element matching the specified value. Uses a lambda to perform the matching.

Parameters
equalsLambda that returns true if the element "item" is the one looking for
Returns
Index of the element if found or -1 if the element was not found

◆ findIndex() [2/2]

template<typename T >
int32_t list< T >::findIndex ( const T &  value)
inline

Searches for the first element matching the specified value.

Parameters
valueElement to search for
Returns
Index of the element if found or -1 if the element was not found

◆ insertAtPos()

template<typename T >
bool list< T >::insertAtPos ( const T &  value,
size_t  pos 
)
inline

Inserts an element at a specified position.

Parameters
valueElement to insert
posPosition in the list
Returns
True if the insertion was successfull. False if there is no more memory available to allocate the new node.

◆ insertFront()

template<typename T >
bool list< T >::insertFront ( const T &  value)
inline

Inserts an element at the front of the list.

Parameters
valueElement to insert
Returns
True if the insertion was successfull. False if there is no more memory available to allocate the new node.

◆ insertOrdered()

template<typename T >
bool list< T >::insertOrdered ( const T &  value,
const lambda< bool(const T &left, const T &right)> &  compare_fn 
)
inline

Performs an ordered inserts of an element in the list.

Parameters
valueElement to insert
compare_fnA lambda that will return true if the elements (left, right) are in the correct order, or false if not
Returns
True if the insertion was successfull. False if there is no more memory available to allocate the new node.

◆ operator[]()

template<typename T >
T & list< T >::operator[] ( size_t  pos)
inline

Access operator [].

Parameters
posIndex of the element to access
Returns
Reference T& to the element at position "pos" or reference to a nullptr if the element does not exist

◆ remove()

template<typename T >
bool list< T >::remove ( const T &  value)
inline

Removes the first matched element.

The T type is required to have the operator==().

Parameters
valueElement to remove
Returns
True if the element was found and removed, false otherwise

◆ removeAtPos()

template<typename T >
void list< T >::removeAtPos ( size_t  pos)
inline

Removes the element at the specified position.

Parameters
posPosition of the element to remove

◆ removeCurrent()

template<typename T >
void list< T >::removeCurrent ( bool  move_to_next)
inline

Removes the element pointer to by the internal pointer.

Parameters
move_to_nextTrue if the pointer should be moved to the next element after the removal. False if the pointer should be moved to the previous element after the removal.

◆ size()

template<typename T >
size_t list< T >::size ( void  ) const
inline

Returns the number of elements in the list.

Returns
Number of elements in the list

◆ valid()

template<typename T >
bool list< T >::valid ( void  ) const
inline

Is the internal element pointer valid?

Returns
True if the internal pointer is pointing to an element in the list

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