| 
   
    MIDI Control Surface library for Arduino 
   | 
 
 
 
 
Go to the documentation of this file.
    9 #include <AH/Debug/Debug.hpp> 
   30     template <
class INode>
 
   49     template <
class INode>
 
   78     template <
class INode>
 
  118         if (
first == 
nullptr)
 
  120         node->previous = 
last;
 
  121         if (node->previous != 
nullptr)
 
  122             node->previous->next = node;
 
  124         node->next = 
nullptr;
 
  146             first = toBeInserted;
 
  148             before->previous->next = toBeInserted;
 
  149         toBeInserted->previous = before->previous;
 
  150         toBeInserted->next = before;
 
  151         before->previous = toBeInserted;
 
  169     template <
class Compare>
 
  174             if (cmp(*node, *it)) {
 
  191         insertSorted(node, [](Node &lhs, Node &rhs) { 
return lhs < rhs; });
 
  201         if (node->previous != 
nullptr)
 
  202             node->previous->next = node->next;
 
  204             last = node->previous;
 
  205         if (node->next != 
nullptr)
 
  206             node->next->previous = node->previous;
 
  209         node->previous = 
nullptr;
 
  210         node->next = 
nullptr;
 
  233         Node *nodeB = node->previous;
 
  234         if (nodeB == 
nullptr) 
 
  236         Node *nodeA = nodeB->previous;
 
  237         Node *nodeD = node->next;
 
  239         if (nodeA != 
nullptr)
 
  244         nodeB->previous = node;
 
  246         node->previous = nodeA;
 
  247         if (nodeD != 
nullptr)
 
  248             nodeD->previous = nodeB;
 
  269         return node && (node == 
first || node->next != 
nullptr ||
 
  270                         node->previous != 
nullptr);
 
  301 template <
class Node>
 
  
reverse_node_iterator< const AH::Updatable< NormalUpdatable > > 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.
 
node_iterator< AH::Updatable< NormalUpdatable > > 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 AH::Updatable< NormalUpdatable > > 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.
 
reverse_node_iterator & operator--()
Prefix decrement operator.
 
void append(Node &node)
Append a node to a linked list.
 
reverse_node_iterator< AH::Updatable< NormalUpdatable > > 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
 
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 couldContain(Node *node)
Check if the linked list could contain the given node.
 
void insertBefore(Node &toBeInserted, Node &before)