add function uniq_skiplist_find_node_ex

storage_pool
YuQing 2020-12-24 16:03:53 +08:00
parent 3e192fae09
commit 7190fad3d0
4 changed files with 17 additions and 1 deletions

View File

@ -1,4 +1,7 @@
Version 1.45 2020-12-24
* add function uniq_skiplist_find_node_ex
Version 1.44 2020-12-06
* add test file src/tests/test_pthread_lock.c
* add uniq_skiplist.[hc]

View File

@ -108,4 +108,3 @@ static inline int fast_buffer_append_buffer(FastBuffer *buffer, FastBuffer *src)
#endif
#endif

View File

@ -531,6 +531,16 @@ int uniq_skiplist_replace_ex(UniqSkiplist *sl, void *data,
return 0;
}
UniqSkiplistNode *uniq_skiplist_find_node_ex(UniqSkiplist *sl, void *data,
UniqSkiplistNode **previous)
{
int level_index;
*previous = uniq_skiplist_get_equal_previous(sl, data, &level_index);
return (*previous != NULL) ? (UniqSkiplistNode *)
(*previous)->links[level_index] : NULL;
}
UniqSkiplistNode *uniq_skiplist_find_node(UniqSkiplist *sl, void *data)
{
int level_index;

View File

@ -112,6 +112,10 @@ int uniq_skiplist_find_range(UniqSkiplist *sl, void *start_data,
void *end_data, UniqSkiplistIterator *iterator);
UniqSkiplistNode *uniq_skiplist_find_node(UniqSkiplist *sl, void *data);
UniqSkiplistNode *uniq_skiplist_find_node_ex(UniqSkiplist *sl, void *data,
UniqSkiplistNode **previous);
void uniq_skiplist_delete_node_ex(UniqSkiplist *sl,
UniqSkiplistNode *previous, UniqSkiplistNode *deleted,
const bool need_free);