mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-28 13:53:33 +08:00
Out of line methods in linked_list.hpp
This commit is contained in:
@@ -49,7 +49,27 @@ 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;
|
||||||
@@ -61,7 +81,8 @@ public:
|
|||||||
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
|
||||||
@@ -69,12 +90,9 @@ public:
|
|||||||
root_ = node;
|
root_ = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
template <typename T>
|
||||||
* Inserts node A immediately before the node B where
|
|
||||||
* predicate(B) -> true.
|
|
||||||
*/
|
|
||||||
template <typename Predicate>
|
template <typename Predicate>
|
||||||
void insertBefore(T* node, Predicate predicate)
|
void LinkedListRoot<T>::insertBefore(T* node, Predicate predicate)
|
||||||
{
|
{
|
||||||
assert(node);
|
assert(node);
|
||||||
remove(node);
|
remove(node);
|
||||||
@@ -99,7 +117,8 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
{
|
{
|
||||||
@@ -126,6 +145,5 @@ public:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user