| 
   
    MIDI Control Surface library for Arduino 
   | 
 
 
 
 
Go to the documentation of this file.
    9 #include <AH/Debug/Debug.hpp> 
   13 #include <AH/STL/iterator> 
   28     template <
class INode>
 
   38             return !(*
this != rhs);
 
   51     template <
class INode>
 
   78     template <
class INode>
 
  116         if (
first == 
nullptr)
 
  118         node->previous = 
last;
 
  119         if (node->previous != 
nullptr)
 
  120             node->previous->next = node;
 
  122         node->next = 
nullptr;
 
  144             first = toBeInserted;
 
  146             before->previous->next = toBeInserted;
 
  147         toBeInserted->previous = before->previous;
 
  148         toBeInserted->next = before;
 
  149         before->previous = toBeInserted;
 
  167     template <
class Compare>
 
  172             if (cmp(*node, *it)) {
 
  189         insertSorted(node, [](Node &lhs, Node &rhs) { 
return lhs < rhs; });
 
  199         if (node->previous != 
nullptr)
 
  200             node->previous->next = node->next;
 
  202             last = node->previous;
 
  203         if (node->next != 
nullptr)
 
  204             node->next->previous = node->previous;
 
  207         node->previous = 
nullptr;
 
  208         node->next = 
nullptr;
 
  231         Node *nodeB = node->previous;
 
  232         if (nodeB == 
nullptr) 
 
  234         Node *nodeA = nodeB->previous;
 
  235         Node *nodeD = node->next;
 
  237         if (nodeA != 
nullptr)
 
  242         nodeB->previous = node;
 
  244         node->previous = nodeA;
 
  245         if (nodeD != 
nullptr)
 
  246             nodeD->previous = nodeB;
 
  282         return node && (node == 
first || node->next != 
nullptr ||
 
  283                         node->previous != 
nullptr);
 
  319 template <
class Node>
 
  
reverse_node_iterator< const DisplayInterface > const_reverse_iterator
 
Node * getFirst() const
Get a pointer to the first node.
 
const_reverse_iterator rbegin() const
 
Reverse bidirectional doubly linked list iterator.
 
reverse_node_iterator & operator++()
Prefix increment operator.
 
node_iterator & operator++()
Prefix increment operator.
 
void insertBefore(Node *toBeInserted, Node *before)
Insert a node before another node.
 
void remove(Node &node)
Remove a node from the linked list.
 
reverse_iterator rbegin()
 
node_iterator_base(INode *node)
 
node_iterator(INode *node)
 
bool operator!=(const node_iterator_base &rhs) const
 
#define AH_DIAGNOSTIC_POP()
 
node_iterator & operator--()
Prefix decrement operator.
 
bool couldContain(const Node *node) const
Check if the linked list could contain the given node.
 
node_iterator< DisplayInterface > iterator
 
void insertSorted(Node *node)
Insert a new node at the correct location into a sorted list, using operator<.
 
void append(Node *node)
Append a node to a linked list.
 
Node * getLast() const
Get a pointer to the last node.
 
INode & operator*() const
 
const_iterator end() const
 
node_iterator< const DisplayInterface > const_iterator
 
Base class for doubly linked list iterators.
 
void moveDown(Node *node)
Move down the given node in the linked list.
 
void remove(Node *node)
Remove a node from the linked list.
 
Forward bidirectional doubly linked list iterator.
 
void moveDown(Node &node)
Move down the given node in the linked list.
 
reverse_node_iterator & operator--()
Prefix decrement operator.
 
void append(Node &node)
Append a node to a linked list.
 
reverse_node_iterator< DisplayInterface > reverse_iterator
 
A class for doubly linked lists.
 
virtual ~DoublyLinkable()=default
 
A class that can be inherited from to allow inserting into a DoublyLinkedList.
 
#define AH_DIAGNOSTIC_WERROR()
 
std::bidirectional_iterator_tag iterator_category
 
std::bidirectional_iterator_tag iterator_category
 
bool couldContain(const Node &node) const
Check if the linked list could contain the given node.
 
reverse_node_iterator(INode *node)
 
const_iterator begin() const
 
void insertSorted(Node *node, Compare cmp)
Insert a new node at the correct location into a sorted list.
 
const_reverse_iterator rend() const
 
bool operator==(const node_iterator_base &rhs) const
 
void insertBefore(Node &toBeInserted, Node &before)