From de879c15ee2bcef6f59c1796cf221c3a5daa1347 Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Wed, 30 Jun 2021 15:05:31 +0800 Subject: [PATCH] uniq_skiplist.h: add function uniq_skiplist_iterator_at --- HISTORY | 3 ++- src/uniq_skiplist.h | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) 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;