FastLED 3.9.15
Loading...
Searching...
No Matches

◆ splice() [2/3]

template<typename T>
void fl::list< T >::splice ( iterator pos,
list< T > & other,
iterator first,
iterator last )
inline

Definition at line 571 of file list.h.

571 {
572 if (first == last) {
573 return;
574 }
575
576 // Count elements being moved
577 fl::size count = 0;
578 for (iterator it = first; it != last; ++it) {
579 ++count;
580 }
581
582 // Unlink range from other list
583 Node* first_node = first.mNode;
584 Node* last_node = last.mNode;
588
589 // Connect the gap in other list
590 before_first->next = after_last;
591 after_last->prev = before_first;
592
593 // Insert range before pos
594 Node* pos_node = pos.mNode;
595 Node* before_pos = pos_node->prev;
596
597 before_pos->next = first_node;
598 first_node->prev = before_pos;
599 last_in_range->next = pos_node;
600 pos_node->prev = last_in_range;
601
602 // Update sizes
603 mSize += count;
604 other.mSize -= count;
605 }
fl::size mSize
Definition list.h:33
A doubly-linked list container.
Definition list.h:21

References list(), fl::list< T >::iterator::mNode, mSize, fl::list< T >::Node::next, pos, and fl::list< T >::Node::prev.

+ Here is the call graph for this function: