120 {
121
122 if (last == nullptr || comparator(&last, &new_link) < 0) {
123 if (last == nullptr) {
124 new_link->next = new_link;
125 new_link->prev = new_link;
126 } else {
127 new_link->next = last->next;
128 new_link->prev = last;
129 last->next = new_link;
130 new_link->next->prev = new_link;
131 }
132 last = new_link;
133 } else {
134
136 for (it.mark_cycle_pt(); !it.cycled_list(); it.forward()) {
137 ELIST2_LINK *link = it.data();
138 if (comparator(&link, &new_link) > 0) {
139 break;
140 }
141 }
142 if (it.cycled_list()) {
143 it.add_to_end(new_link);
144 } else {
145 it.add_before_then_move(new_link);
146 }
147 }
148}
friend class ELIST2_ITERATOR