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 uniq_skiplist.[hc]
* add function split_string_ex
@ -25,6 +25,7 @@ Version 1.44 2020-03-31
* add functions getIpAndPort and getPeerIpAndPort
* bugfixed: call fast_mblock_destroy in common_blocked_queue_destroy
* add function fc_get_file_line_count_ex
* uniq_skiplist add function find_ge and support bidirection
Version 1.43 2019-12-25
* replace function call system to getExecResult,

View File

@ -1300,7 +1300,7 @@ int calc_hashnr1_ex(const void* key, const int key_len, \
\
h = init_value; \
pEnd = (unsigned char *)key + key_len; \
for (p = (unsigned char *)key; p!= pEnd; p++) \
for (p = (unsigned char *)key; p != pEnd; p++) \
{ \
h = 31 * h + *p; \
} \

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,
uniq_skiplist_free_func free_func, const int alloc_skiplist_once,
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_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) \
uniq_skiplist_init_ex(factory, max_level_count, \
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,
uniq_skiplist_free_func free_func, const int alloc_skiplist_once,
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;
}
#define LEVEL0_DOUBLE_CHAIN_PREV_LINK(node) node->links[node->level_index + 1]
#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_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
}
#endif