diff --git a/HISTORY b/HISTORY index f6d8239..6c89b46 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,7 @@ -Version 1.53 2021-06-26 +Version 1.53 2021-06-30 * process_action support action status + * uniq_skiplist.h: add function uniq_skiplist_iterator_at Version 1.52 2021-06-08 * process_stop more gracefully (kill -9 on timeout) diff --git a/src/uniq_skiplist.h b/src/uniq_skiplist.h index c388598..d14ecc0 100644 --- a/src/uniq_skiplist.h +++ b/src/uniq_skiplist.h @@ -192,6 +192,20 @@ static inline void *uniq_skiplist_next(UniqSkiplistIterator *iterator) return data; } +static inline void uniq_skiplist_iterator_at(UniqSkiplist *sl, + const int offset, UniqSkiplistIterator *iterator) +{ + int i; + + iterator->current = sl->top->links[0]; + iterator->tail = sl->factory->tail; + + i = 0; + while (i++ < offset && iterator->current != iterator->tail) { + iterator->current = iterator->current->links[0]; + } +} + static inline int uniq_skiplist_iterator_count(UniqSkiplistIterator *iterator) { volatile UniqSkiplistNode *current;