uniq_skiplist add some macro defines

pull/37/head
YuQing 2020-04-22 20:27:21 +08:00
parent 759fd117d8
commit 688fcf4b74
4 changed files with 21 additions and 6 deletions

View File

@ -1,5 +1,5 @@
Version 1.44 2020-03-31 Version 1.44 2020-04-22
* add test file src/tests/test_pthread_lock.c * add test file src/tests/test_pthread_lock.c
* add uniq_skiplist.[hc] * add uniq_skiplist.[hc]
* add function split_string_ex * add function split_string_ex
@ -25,6 +25,7 @@ Version 1.44 2020-03-31
* add functions getIpAndPort and getPeerIpAndPort * add functions getIpAndPort and getPeerIpAndPort
* bugfixed: call fast_mblock_destroy in common_blocked_queue_destroy * bugfixed: call fast_mblock_destroy in common_blocked_queue_destroy
* add function fc_get_file_line_count_ex * add function fc_get_file_line_count_ex
* uniq_skiplist add function find_ge and support bidirection
Version 1.43 2019-12-25 Version 1.43 2019-12-25
* replace function call system to getExecResult, * replace function call system to getExecResult,

View File

@ -42,7 +42,7 @@ static void init_best_element_counts()
} }
} }
int uniq_skiplist_init_ex(UniqSkiplistFactory *factory, int uniq_skiplist_init_ex2(UniqSkiplistFactory *factory,
const int max_level_count, skiplist_compare_func compare_func, const int max_level_count, skiplist_compare_func compare_func,
uniq_skiplist_free_func free_func, const int alloc_skiplist_once, uniq_skiplist_free_func free_func, const int alloc_skiplist_once,
const int min_alloc_elements_once, const int delay_free_seconds, const int min_alloc_elements_once, const int delay_free_seconds,

View File

@ -58,12 +58,19 @@ extern "C" {
#define uniq_skiplist_count(sl) (sl)->element_count #define uniq_skiplist_count(sl) (sl)->element_count
#define uniq_skiplist_init_ex(factory, max_level_count, compare_func, \
free_func, alloc_skiplist_once, min_alloc_elements_once, \
delay_free_seconds) \
uniq_skiplist_init_ex2(factory, max_level_count, compare_func, \
free_func, alloc_skiplist_once, min_alloc_elements_once, \
delay_free_seconds, false) \
#define uniq_skiplist_init(factory, max_level_count, compare_func, free_func) \ #define uniq_skiplist_init(factory, max_level_count, compare_func, free_func) \
uniq_skiplist_init_ex(factory, max_level_count, \ uniq_skiplist_init_ex(factory, max_level_count, \
compare_func, free_func, 64 * 1024, \ compare_func, free_func, 64 * 1024, \
SKIPLIST_DEFAULT_MIN_ALLOC_ELEMENTS_ONCE, 0, false) SKIPLIST_DEFAULT_MIN_ALLOC_ELEMENTS_ONCE, 0)
int uniq_skiplist_init_ex(UniqSkiplistFactory *factory, int uniq_skiplist_init_ex2(UniqSkiplistFactory *factory,
const int max_level_count, skiplist_compare_func compare_func, const int max_level_count, skiplist_compare_func compare_func,
uniq_skiplist_free_func free_func, const int alloc_skiplist_once, uniq_skiplist_free_func free_func, const int alloc_skiplist_once,
const int min_alloc_elements_once, const int delay_free_seconds, const int min_alloc_elements_once, const int delay_free_seconds,
@ -146,9 +153,16 @@ static inline bool uniq_skiplist_empty(UniqSkiplist *sl)
return sl->top->links[0] == sl->factory->tail; return sl->top->links[0] == sl->factory->tail;
} }
#define LEVEL0_DOUBLE_CHAIN_NEXT_LINK(node) node->links[0]
#define LEVEL0_DOUBLE_CHAIN_PREV_LINK(node) node->links[node->level_index + 1] #define LEVEL0_DOUBLE_CHAIN_PREV_LINK(node) node->links[node->level_index + 1]
#define LEVEL0_DOUBLE_CHAIN_TAIL(sl) LEVEL0_DOUBLE_CHAIN_PREV_LINK(sl->top) #define LEVEL0_DOUBLE_CHAIN_TAIL(sl) LEVEL0_DOUBLE_CHAIN_PREV_LINK(sl->top)
#define UNIQ_SKIPLIST_LEVEL0_PREV_NODE(node) ((UniqSkiplistNode *) \
LEVEL0_DOUBLE_CHAIN_PREV_LINK(node))
#define UNIQ_SKIPLIST_LEVEL0_NEXT_NODE(node) ((UniqSkiplistNode *) \
LEVEL0_DOUBLE_CHAIN_NEXT_LINK(node))
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif