6 #ifndef UAVCAN_UTIL_LINKED_LIST_HPP_INCLUDED
7 #define UAVCAN_UTIL_LINKED_LIST_HPP_INCLUDED
53 T*
get()
const {
return root_; }
59 unsigned getLength()
const;
73 template <
typename Predicate>
74 void insertBefore(T*
node, Predicate predicate);
80 void remove(
const T*
node);
101 template <
typename T>
110 node->setNextListNode(root_);
114 template <
typename T>
115 template <
typename Predicate>
128 node->setNextListNode(root_);
134 while (p->getNextListNode())
136 if (predicate(p->getNextListNode()))
140 p = p->getNextListNode();
142 node->setNextListNode(p->getNextListNode());
143 p->setNextListNode(
node);
147 template <
typename T>
157 root_ = root_->getNextListNode();
162 while (p->getNextListNode())
164 if (p->getNextListNode() ==
node)
166 p->setNextListNode(p->getNextListNode()->getNextListNode());
169 p = p->getNextListNode();
176 #endif // UAVCAN_UTIL_LINKED_LIST_HPP_INCLUDED