equal
deleted
inserted
replaced
46 T* clear(bool return_tail = false); |
46 T* clear(bool return_tail = false); |
47 T* remove(T* const node); |
47 T* remove(T* const node); |
48 void prepend(T* const node); |
48 void prepend(T* const node); |
49 void append(T* const node); |
49 void append(T* const node); |
50 void append_list(T* const head_node, T* const tail_node, size_t count); |
50 void append_list(T* const head_node, T* const tail_node, size_t count); |
51 debug_only(bool in_list(const T* const target_node) const;) |
51 bool in_list(const T* const target_node) const; |
52 debug_only(bool locate(const T* start_node, const T* const target_node) const;) |
52 bool locate(const T* start_node, const T* const target_node) const; |
53 }; |
53 }; |
54 |
54 |
55 template <typename T> |
55 template <typename T> |
56 inline void JfrDoublyLinkedList<T>::prepend(T* const node) { |
56 inline void JfrDoublyLinkedList<T>::prepend(T* const node) { |
57 assert(node != NULL, "invariant"); |
57 assert(node != NULL, "invariant"); |
151 assert(head() == NULL, "invariant"); |
151 assert(head() == NULL, "invariant"); |
152 assert(tail() == NULL, "invariant"); |
152 assert(tail() == NULL, "invariant"); |
153 return node; |
153 return node; |
154 } |
154 } |
155 |
155 |
156 #ifdef ASSERT |
|
157 template <typename T> |
156 template <typename T> |
158 bool JfrDoublyLinkedList<T>::locate(const T* node, const T* const target) const { |
157 bool JfrDoublyLinkedList<T>::locate(const T* node, const T* const target) const { |
159 assert(target != NULL, "invariant"); |
158 assert(target != NULL, "invariant"); |
160 while (node != NULL) { |
159 while (node != NULL) { |
161 if (node == target) { |
160 if (node == target) { |
180 ++count; |
179 ++count; |
181 node = (T*)node->next(); |
180 node = (T*)node->next(); |
182 } |
181 } |
183 assert(count_param == count, "invariant"); |
182 assert(count_param == count, "invariant"); |
184 } |
183 } |
185 #endif // ASSERT |
|
186 |
184 |
187 template <typename T> |
185 template <typename T> |
188 void JfrDoublyLinkedList<T>::append_list(T* const head_node, T* const tail_node, size_t count) { |
186 void JfrDoublyLinkedList<T>::append_list(T* const head_node, T* const tail_node, size_t count) { |
189 assert(head_node != NULL, "invariant"); |
187 assert(head_node != NULL, "invariant"); |
190 assert(!in_list(head_node), "already in list error"); |
188 assert(!in_list(head_node), "already in list error"); |