mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-29 08:53:34 +08:00
Out of line methods in linked_list.hpp
This commit is contained in:
@@ -49,8 +49,28 @@ public:
|
|||||||
T* get() const { return root_; }
|
T* get() const { return root_; }
|
||||||
bool isEmpty() const { return get() == NULL; }
|
bool isEmpty() const { return get() == NULL; }
|
||||||
|
|
||||||
unsigned getLength() const
|
unsigned getLength() const;
|
||||||
{
|
|
||||||
|
void insert(T* node);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inserts node A immediately before the node B where
|
||||||
|
* predicate(B) -> true.
|
||||||
|
*/
|
||||||
|
template <typename Predicate>
|
||||||
|
void insertBefore(T* node, Predicate predicate);
|
||||||
|
|
||||||
|
bool remove(const T* node);
|
||||||
|
};
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LinkedListRoot<>
|
||||||
|
*/
|
||||||
|
template <typename T>
|
||||||
|
unsigned LinkedListRoot<T>::getLength() const
|
||||||
|
{
|
||||||
T* node = root_;
|
T* node = root_;
|
||||||
unsigned cnt = 0;
|
unsigned cnt = 0;
|
||||||
while (node)
|
while (node)
|
||||||
@@ -59,23 +79,21 @@ public:
|
|||||||
node = node->getNextListNode();
|
node = node->getNextListNode();
|
||||||
}
|
}
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
void insert(T* node)
|
template <typename T>
|
||||||
{
|
void LinkedListRoot<T>::insert(T* node)
|
||||||
|
{
|
||||||
assert(node);
|
assert(node);
|
||||||
remove(node); // Making sure there will be no loops
|
remove(node); // Making sure there will be no loops
|
||||||
node->setNextListNode(root_);
|
node->setNextListNode(root_);
|
||||||
root_ = node;
|
root_ = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
template <typename T>
|
||||||
* Inserts node A immediately before the node B where
|
template <typename Predicate>
|
||||||
* predicate(B) -> true.
|
void LinkedListRoot<T>::insertBefore(T* node, Predicate predicate)
|
||||||
*/
|
{
|
||||||
template <typename Predicate>
|
|
||||||
void insertBefore(T* node, Predicate predicate)
|
|
||||||
{
|
|
||||||
assert(node);
|
assert(node);
|
||||||
remove(node);
|
remove(node);
|
||||||
|
|
||||||
@@ -97,10 +115,11 @@ public:
|
|||||||
node->setNextListNode(p->getNextListNode());
|
node->setNextListNode(p->getNextListNode());
|
||||||
p->setNextListNode(node);
|
p->setNextListNode(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool remove(const T* node)
|
template <typename T>
|
||||||
{
|
bool LinkedListRoot<T>::remove(const T* node)
|
||||||
|
{
|
||||||
if (root_ == NULL || node == NULL)
|
if (root_ == NULL || node == NULL)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -125,7 +144,6 @@ public:
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user