23 #include <boost/utility.hpp>
24 #include <raul/Deletable.hpp>
25 #include <raul/AtomicPtr.hpp>
26 #include <raul/AtomicInt.hpp>
50 Node(T elem) : _elem(elem) {}
55 : _elem(copy._elem), _prev(copy._prev), _next(copy._next)
58 Node* prev()
const {
return _prev.get(); }
59 void prev(
Node* ln) { _prev = ln; }
60 Node* next()
const {
return _next.get(); }
61 void next(
Node* ln) { _next = ln; }
62 T& elem() {
return _elem;}
63 const T& elem()
const {
return _elem; }
67 AtomicPtr<Node> _prev;
68 AtomicPtr<Node> _next;
72 List() : _size(0), _end_iter(this), _const_end_iter(this) {
73 _end_iter._listnode = NULL;
74 _const_end_iter._listnode = NULL;
87 unsigned size()
const {
return (
unsigned)_size.get(); }
90 bool empty() {
return (_head.get() == NULL); }
99 : _list(i._list), _listnode(i._listnode) {}
101 inline const T& operator*();
102 inline const T* operator->();
105 inline bool operator!=(
const iterator& iter)
const;
107 inline bool operator==(
const iterator& iter)
const;
109 friend class List<T>;
122 inline T& operator*();
123 inline T* operator->();
125 inline bool operator!=(
const iterator& iter)
const;
127 inline bool operator==(
const iterator& iter)
const;
130 friend class List<T>;
134 const
List<T>* _list;
148 AtomicPtr<Node> _head;
149 AtomicPtr<Node> _tail;
158 #include "ListImpl.hpp"
160 #endif // RAUL_LIST_HPP
Something with a virtual destructor.
Definition: Deletable.hpp:28
void clear()
Clear the list, deleting all Nodes contained (but NOT their contents!)
Definition: ListImpl.hpp:37
Realtime safe iterator for a List.
Definition: List.hpp:118
unsigned size() const
Valid only in the write thread.
Definition: List.hpp:87
A node in a List.
Definition: List.hpp:48
A realtime safe, (partially) thread safe doubly-linked list.
Definition: List.hpp:38
void append(List< T > &list)
Append a list to this list.
Definition: ListImpl.hpp:120
Node * erase(const iterator iter)
Remove an element from the list using an iterator.
Definition: ListImpl.hpp:176
Realtime safe const iterator for a List.
Definition: List.hpp:95
void push_back(Node *elem)
Realtime Safe.
Definition: ListImpl.hpp:61
bool empty()
Valid for any thread.
Definition: List.hpp:90
iterator find(const T &val)
Find an element in the list.
Definition: ListImpl.hpp:157
const_iterator(const List< T > *const list)
const_iterator stuff ///
Definition: ListImpl.hpp:302