54 Root* mylist =
static_cast<Root*
>(root_);
56 if (mylist->first_ ==
this) {
58 mylist->first_ = next_;
63 N* node = mylist->first_;
66 Node* mynode =
static_cast<Node*
>(node);
67 N* next = mynode->next_;
70 mynode->next_ = next_;
90 Node& mynode =
static_cast<Node&
>(node);
91 if (mynode.root_ ==
this) {
106 if (node != 0)
remove(*node);
116 Node& mynode =
static_cast<Node&
>(node);
118 if (mynode.root_ != 0) mynode.
remove();
119 mynode.root_ =
static_cast<R*
>(
this);
120 mynode.next_ = first_;
131 if (node != 0) addFirst(*node);
143 Node& mynode =
static_cast<Node&
>(node);
145 if (mynode.root_ != 0) mynode.
remove();
150 N* scannode = first_;
152 while (nextnode = static_cast<Node*>(scannode)->next_) {
155 static_cast<Node*
>(scannode)->next_ = &node;
157 mynode.root_ =
static_cast<R*
>(
this);
170 if (node != 0) addLast(*node);
196 if (node != 0) add(*node);
205 static_cast<Root&
>(root).addFirst(*static_cast<N*>(
this));
216 static_cast<Root*
>(root)->addFirst(*static_cast<N*>(
this));
228 static_cast<Root&
>(root).addLast(*static_cast<N*>(
this));
240 static_cast<Root*
>(root)->addLast(*static_cast<N*>(
this));
254 Node &mynode =
static_cast<Node&
>(node);
255 N* me =
static_cast<N*
>(
this);
256 if (mynode.root_ && &node != me) {
258 root_ = mynode.root_;
259 next_ = mynode.next_;
312 while (first_)
remove(first_);
323 if (root)
addTo(root);
ListInNode(R &root)
Definition: ListIn.hpp:331
Intrusive Singly Linked List.
void remove(N &node)
Definition: ListIn.hpp:89
void addToFront(R &root)
Definition: ListIn.hpp:204
void addTo(R &root)
Definition: ListIn.hpp:283
void addLast(N &node)
Definition: ListIn.hpp:142
void addAfter(N &node)
Definition: ListIn.hpp:253
ListInRoot()
Definition: ListIn.hpp:303
void remove()
Definition: ListIn.hpp:52
~ListInRoot()
Definition: ListIn.hpp:311
~ListInNode()
Definition: ListIn.hpp:343
void add(N &node)
Definition: ListIn.hpp:182
void addFirst(N &node)
Definition: ListIn.hpp:115
void addToEnd(R &root)
Definition: ListIn.hpp:227