diff --git a/src/vnode/common/inc/skiplist.c b/src/vnode/common/inc/skiplist.c deleted file mode 100644 index f2384bcbae688abd0bb718ccb73ac9e98a23c45a..0000000000000000000000000000000000000000 --- a/src/vnode/common/inc/skiplist.c +++ /dev/null @@ -1,73 +0,0 @@ -#include - -#include "skiplist.h" - -#define IS_VALID_SKIPLIST_DUPLICATE_KEY_STRATEGY(strategy) \ - (((strategy) >= SKIPLIST_ALLOW_DUPLICATE_KEY) && ((strategy) <= SKIPLIST_DISCARD_DUPLICATE_KEY)) - -SSkipListNode *tdCreateSkiplistNode(int32_t nlevels) { - SSkipListNode *pNode = (SSkipListNode *)malloc(sizeof(SSkipListNode)); - if (pNode == NULL) return NULL; - - pNode->nexts = (struct _skiplist_node **)cmalloc(nlevels, sizeof(struct _skiplist_node *)); - if (pNode->nexts == NULL) { - free(pNode); - return NULL; - } - - pNode->prevs = (struct _skiplist_node **)cmalloc(nlevels, sizeof(struct _skiplist_node *)); - if (pNode->nexts == NULL) { - free(pNode->nexts); - free(pNode); - return NULL; - } - - return pNode; -} - -int32_t tdFreeSkiplistNode(SSkipListNode *pNode) { - if (pNode == NULL) return 0; - // TODO: free key and free value - - // Free the skip list - free(pNode->nexts); - free(pNode->prevs); - free(pNode); - return 0; -} - -SSkipList *tdCreateSkiplist(int16_t nMaxLevels, SKIPLIST_DUPLICATE_KEY_STATEGY strategy) { - // Check parameters - if (!IS_VALID_SKIPLIST_DUPLICATE_KEY_STRATEGY(strategy)) return NULL; - - SSkipList *pSkipList = (SSkipList *)malloc(sizeof(SSkipList)); - if (pSkipList == NULL) { - return NULL; - } - - pSkipList->strategy = strategy; - pSkipList->nMaxLevels = nMaxLevels; - - pSkipList->head = tdCreateSkiplistNode(nMaxLevels); - if (pSkipList->head == NULL) { - free(pSkipList); - return NULL; - } - - return pSkipList; -} - -int32_t tdFreeSkipList(SSkipList *pSkipList) { - if (pSkipList == NULL) return 0; - - SSkipListNode *pNode = pSkipList->head->nexts[0]; - while (pNode) { - SSkipListNode *pTemp = pNode->nexts[0]; - tdFreeSkiplistNode(pNode); - pNode = pTemp; - } - - free(pSkipList); - - return 0; -} \ No newline at end of file diff --git a/src/vnode/common/inc/skiplist.h b/src/vnode/common/inc/skiplist.h deleted file mode 100644 index 5c395d289a604375395d5686f7391b030425a93b..0000000000000000000000000000000000000000 --- a/src/vnode/common/inc/skiplist.h +++ /dev/null @@ -1,38 +0,0 @@ -#if !defined(_TD_SKIPLIST_H) -#define _TD_SKIPLIST_H - -#include - -typedef enum { - SKIPLIST_ALLOW_DUPLICATE_KEY, - SKIPLIST_REPLACE_DUPLICATE_KEY, - SKIPLIST_DISCARD_DUPLICATE_KEY -} SKIPLIST_DUPLICATE_KEY_STATEGY; - -typedef struct _skiplist_node { - void * key; - void * value; - struct _skiplist_node **nexts; - struct _skiplist_node **prevs; -} SSkipListNode; - -// To implement a general skip list -typedef struct _skiplist { - SKIPLIST_DUPLICATE_KEY_STATEGY strategy; - SSkipListNode * head; - SSkipListNode * tail; - int32_t nMaxLevels; - int32_t count; -} SSkipList; - -// -- Operations on SSkipListNode -SSkipListNode *tdCreateSkiplistNode(int32_t nlevels); -int32_t tdFreeSkiplistNode(SSkipListNode *pNode); - -// -- Operations on SSkipList -SSkipList *tdCreateSkiplist(int16_t nMaxLevels, SKIPLIST_DUPLICATE_KEY_STATEGY strategy); -int32_t tdFreeSkipList(SSkipList *pSkipList); -// int32_t tdAddItemToSkiplist(SSkipList *slist, void *key, void *value); -// int32_t tdAddNodeToSkiplist(SSkipList *slist, SSkipListNode *node); - -#endif // _TD_SKIPLIST_H