This is an old version of the documentation. View the latest version
here.
Control Surface
1.0.0
MIDI Control Surface library for Arduino
|
Go to the documentation of this file.
26 template <
class INode>
45 template <
class INode>
74 template <
class INode>
114 if (
first ==
nullptr)
116 node->previous =
last;
117 if (node->previous !=
nullptr)
118 node->previous->next = node;
120 node->next =
nullptr;
142 first = toBeInserted;
144 before->previous->next = toBeInserted;
145 toBeInserted->previous = before->previous;
146 toBeInserted->next = before;
147 before->previous = toBeInserted;
165 template <
class Compare>
170 if (cmp(*node, *it)) {
187 insertSorted(node, [](Node &lhs, Node &rhs) {
return lhs < rhs; });
197 if (node->previous !=
nullptr)
198 node->previous->next = node->next;
200 last = node->previous;
201 if (node->next !=
nullptr)
202 node->next->previous = node->previous;
205 node->previous =
nullptr;
206 node->next =
nullptr;
229 Node *nodeB = node->previous;
230 if (nodeB ==
nullptr)
232 Node *nodeA = nodeB->previous;
233 Node *nodeD = node->next;
235 if (nodeA !=
nullptr)
240 nodeB->previous = node;
242 node->previous = nodeA;
243 if (nodeD !=
nullptr)
244 nodeD->previous = nodeB;
265 return node && (node ==
first || node->next !=
nullptr ||
266 node->previous !=
nullptr);
297 template <
class Node>
Reverse bidirectional doubly linked list iterator.
const_reverse_iterator rend() const
virtual ~DoublyLinkable()=default
const_reverse_iterator rbegin() const
reverse_node_iterator & operator--()
Prefix decrement operator.
void insertSorted(Node *node, Compare cmp)
Insert a new node at the correct location into a sorted list.
reverse_node_iterator< const DisplayInterface > const_reverse_iterator
void append(Node *node)
Append a node to a linked list.
bool operator!=(const node_iterator_base &rhs) const
std::bidirectional_iterator_tag iterator_category
node_iterator< const DisplayInterface > const_iterator
const_iterator end() const
void insertBefore(Node *toBeInserted, Node *before)
Insert a node before another node.
node_iterator & operator--()
Prefix decrement operator.
INode & operator*() const
void remove(Node *node)
Remove a node from the linked list.
node_iterator< DisplayInterface > iterator
void append(Node &node)
Append a node to a linked list.
node_iterator(INode *node)
reverse_node_iterator< DisplayInterface > reverse_iterator
bool couldContain(Node *node)
Check if the linked list could contain the given node.
Base class for doubly linked list iterators.
node_iterator & operator++()
Prefix increment operator.
Forward bidirectional doubly linked list iterator.
void insertBefore(Node &toBeInserted, Node &before)
reverse_iterator rbegin()
Node * getLast() const
Get a pointer to the last node.
reverse_node_iterator(INode *node)
std::bidirectional_iterator_tag iterator_category
void insertSorted(Node *node)
Insert a new node at the correct location into a sorted list, using operator<.
const_iterator begin() const
A class for doubly linked lists.
A class that can be inherited from to allow inserting into a DoublyLinkedList.
reverse_node_iterator & operator++()
Prefix increment operator.
void remove(Node &node)
Remove a node from the linked list.
void moveDown(Node *node)
Move down the given node in the linked list.
node_iterator_base(INode *node)
Node * getFirst() const
Get a pointer to the first node.