From c8b8af36b280b7b615531369d72da3d06eeae1e3 Mon Sep 17 00:00:00 2001 From: Max Neunhoeffer Date: Mon, 18 Nov 2013 16:46:56 +0100 Subject: [PATCH] Follow coding style guidelines a bit more. Add nrUsed count. --- lib/BasicsC/skip-list.c | 55 ++++++++++++++++++++++------------------- lib/BasicsC/skip-list.h | 23 ++++++++--------- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/lib/BasicsC/skip-list.c b/lib/BasicsC/skip-list.c index 0178c47ab5..ad366c1219 100644 --- a/lib/BasicsC/skip-list.c +++ b/lib/BasicsC/skip-list.c @@ -45,7 +45,7 @@ /// @brief Select a node height randomly //////////////////////////////////////////////////////////////////////////////// -static int TRI_random_height(void) +static int TRI_random_height (void) { uint32_t r; int height = 1; @@ -65,8 +65,8 @@ static int TRI_random_height(void) /// random height is taken. //////////////////////////////////////////////////////////////////////////////// -static TRI_skiplist_node_t* TRI_SkipListAllocNode(TRI_skiplist_t* sl, - int height) { +static TRI_skiplist_node_t* TRI_SkipListAllocNode (TRI_skiplist_t* sl, + int height) { TRI_skiplist_node_t* new; new = (TRI_skiplist_node_t*) malloc(sizeof(TRI_skiplist_node_t)); if (NULL == new) return new; @@ -96,7 +96,7 @@ static TRI_skiplist_node_t* TRI_SkipListAllocNode(TRI_skiplist_t* sl, /// @brief Free function for a node. //////////////////////////////////////////////////////////////////////////////// -static void TRI_SkipListFreeNode(TRI_skiplist_node_t* node) { +static void TRI_SkipListFreeNode (TRI_skiplist_node_t* node) { TRI_Free(TRI_UNKNOWN_MEM_ZONE,node->next); TRI_Free(TRI_UNKNOWN_MEM_ZONE,node); } @@ -117,11 +117,11 @@ static void TRI_SkipListFreeNode(TRI_skiplist_node_t* node) { // lev. // -static int LookupLess(TRI_skiplist_t *sl, - void *doc, - TRI_skiplist_node_t* (*pos)[TRI_SKIPLIST_MAX_HEIGHT], - TRI_skiplist_node_t** next, - TRI_cmp_type_e cmptype) { +static int LookupLess (TRI_skiplist_t *sl, + void *doc, + TRI_skiplist_node_t* (*pos)[TRI_SKIPLIST_MAX_HEIGHT], + TRI_skiplist_node_t** next, + TRI_cmp_type_e cmptype) { int lev; int cmp = 0; // just in case to avoid undefined values TRI_skiplist_node_t *cur; @@ -160,11 +160,11 @@ static int LookupLess(TRI_skiplist_t *sl, // that have height > lev. // -static int LookupLessOrEq(TRI_skiplist_t *sl, - void *doc, - TRI_skiplist_node_t* (*pos)[TRI_SKIPLIST_MAX_HEIGHT], - TRI_skiplist_node_t** next, - TRI_cmp_type_e cmptype) { +static int LookupLessOrEq (TRI_skiplist_t *sl, + void *doc, + TRI_skiplist_node_t* (*pos)[TRI_SKIPLIST_MAX_HEIGHT], + TRI_skiplist_node_t** next, + TRI_cmp_type_e cmptype) { int lev; int cmp = 0; // just in case to avoid undefined values TRI_skiplist_node_t *cur; @@ -211,9 +211,9 @@ static int LookupLessOrEq(TRI_skiplist_t *sl, /// otherwise. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_t* TRI_InitSkipList(TRI_skiplist_compare_func_t cmpfunc, - TRI_skiplist_free_func_t freefunc, - bool unique) { +TRI_skiplist_t* TRI_InitSkipList (TRI_skiplist_compare_func_t cmpfunc, + TRI_skiplist_free_func_t freefunc, + bool unique) { TRI_skiplist_t* sl; sl = (TRI_skiplist_t*) TRI_Allocate(TRI_UNKNOWN_MEM_ZONE, @@ -233,6 +233,7 @@ TRI_skiplist_t* TRI_InitSkipList(TRI_skiplist_compare_func_t cmpfunc, sl->compare = cmpfunc; sl->free = freefunc; sl->unique = unique; + sl->nrUsed = 0; return sl; } @@ -242,7 +243,7 @@ TRI_skiplist_t* TRI_InitSkipList(TRI_skiplist_compare_func_t cmpfunc, /// @brief frees a skiplist and all its documents //////////////////////////////////////////////////////////////////////////////// -void TRI_FreeSkipList(TRI_skiplist_t* sl) { +void TRI_FreeSkipList (TRI_skiplist_t* sl) { TRI_skiplist_node_t* p; TRI_skiplist_node_t* next; @@ -264,7 +265,7 @@ void TRI_FreeSkipList(TRI_skiplist_t* sl) { /// @brief return the start node //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListStartNode(TRI_skiplist_t* sl) { +TRI_skiplist_node_t* TRI_SkipListStartNode (TRI_skiplist_t* sl) { return sl->start; } @@ -272,7 +273,7 @@ TRI_skiplist_node_t* TRI_SkipListStartNode(TRI_skiplist_t* sl) { /// @brief return the successor node or NULL if last node //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListNextNode(TRI_skiplist_node_t* node) { +TRI_skiplist_node_t* TRI_SkipListNextNode (TRI_skiplist_node_t* node) { return node->next[0]; } @@ -289,7 +290,7 @@ TRI_skiplist_node_t* TRI_SkipListNextNode(TRI_skiplist_node_t* node) { /// total order. In the latter two cases nothing is inserted. //////////////////////////////////////////////////////////////////////////////// -int TRI_SkipListInsert(TRI_skiplist_t *sl, void *doc) { +int TRI_SkipListInsert (TRI_skiplist_t *sl, void *doc) { int lev; TRI_skiplist_node_t* pos[TRI_SKIPLIST_MAX_HEIGHT]; TRI_skiplist_node_t* next = NULL; // to please the compiler @@ -341,6 +342,8 @@ int TRI_SkipListInsert(TRI_skiplist_t *sl, void *doc) { pos[lev]->next[lev] = new; } + sl->nrUsed++; + return TRI_ERROR_NO_ERROR; } @@ -354,7 +357,7 @@ int TRI_SkipListInsert(TRI_skiplist_t *sl, void *doc) { /// In the latter two cases nothing is removed. //////////////////////////////////////////////////////////////////////////////// -int TRI_SkipListRemove(TRI_skiplist_t *sl, void *doc) { +int TRI_SkipListRemove (TRI_skiplist_t *sl, void *doc) { int lev; TRI_skiplist_node_t* pos[TRI_SKIPLIST_MAX_HEIGHT]; TRI_skiplist_node_t* next = NULL; // to please the compiler @@ -385,6 +388,8 @@ int TRI_SkipListRemove(TRI_skiplist_t *sl, void *doc) { TRI_SkipListFreeNode(next); + sl->nrUsed--; + return TRI_ERROR_NO_ERROR; } @@ -396,7 +401,7 @@ int TRI_SkipListRemove(TRI_skiplist_t *sl, void *doc) { /// Only comparisons using the preorder are done. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListLeftLookup(TRI_skiplist_t *sl, void *doc) { +TRI_skiplist_node_t* TRI_SkipListLeftLookup (TRI_skiplist_t *sl, void *doc) { TRI_skiplist_node_t* pos[TRI_SKIPLIST_MAX_HEIGHT]; TRI_skiplist_node_t* next; @@ -415,7 +420,7 @@ TRI_skiplist_node_t* TRI_SkipListLeftLookup(TRI_skiplist_t *sl, void *doc) { /// Only comparisons using the preorder are done. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListRightLookup(TRI_skiplist_t *sl, void *doc) { +TRI_skiplist_node_t* TRI_SkipListRightLookup (TRI_skiplist_t *sl, void *doc) { TRI_skiplist_node_t* pos[TRI_SKIPLIST_MAX_HEIGHT]; TRI_skiplist_node_t* next; @@ -436,7 +441,7 @@ TRI_skiplist_node_t* TRI_SkipListRightLookup(TRI_skiplist_t *sl, void *doc) { /// if doc is not in the skiplist. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListLookup(TRI_skiplist_t *sl, void *doc) { +TRI_skiplist_node_t* TRI_SkipListLookup (TRI_skiplist_t *sl, void *doc) { TRI_skiplist_node_t* pos[TRI_SKIPLIST_MAX_HEIGHT]; TRI_skiplist_node_t* next = NULL; // to please the compiler int cmp; diff --git a/lib/BasicsC/skip-list.h b/lib/BasicsC/skip-list.h index 993ec03b86..8affeced26 100644 --- a/lib/BasicsC/skip-list.h +++ b/lib/BasicsC/skip-list.h @@ -100,6 +100,7 @@ typedef struct TRI_skiplist_s { TRI_skiplist_free_func_t free; bool unique; // indicates whether multiple entries that // are equal in the preorder are allowed in + uint64_t nrUsed; } TRI_skiplist_t; @@ -124,15 +125,15 @@ typedef struct TRI_skiplist_s { /// otherwise. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_t* TRI_InitSkipList(TRI_skiplist_compare_func_t cmpfunc, - TRI_skiplist_free_func_t freefunc, - bool unique); +TRI_skiplist_t* TRI_InitSkipList (TRI_skiplist_compare_func_t cmpfunc, + TRI_skiplist_free_func_t freefunc, + bool unique); //////////////////////////////////////////////////////////////////////////////// /// @brief frees a skiplist and all its documents //////////////////////////////////////////////////////////////////////////////// -void TRI_FreeSkipList(TRI_skiplist_t* sl); +void TRI_FreeSkipList (TRI_skiplist_t* sl); //////////////////////////////////////////////////////////////////////////////// @@ -152,13 +153,13 @@ void TRI_FreeSkipList(TRI_skiplist_t* sl); /// @brief return the start node //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListStartNode(TRI_skiplist_t* sl); +TRI_skiplist_node_t* TRI_SkipListStartNode (TRI_skiplist_t* sl); //////////////////////////////////////////////////////////////////////////////// /// @brief return the successor node or NULL if last node //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListNextNode(TRI_skiplist_node_t* node); +TRI_skiplist_node_t* TRI_SkipListNextNode (TRI_skiplist_node_t* node); //////////////////////////////////////////////////////////////////////////////// /// @brief inserts a new document into a skiplist @@ -170,7 +171,7 @@ TRI_skiplist_node_t* TRI_SkipListNextNode(TRI_skiplist_node_t* node); /// insert. In the latter two cases nothing is inserted. //////////////////////////////////////////////////////////////////////////////// -int TRI_SkipListInsert(TRI_skiplist_t *sl, void *doc); +int TRI_SkipListInsert (TRI_skiplist_t *sl, void *doc); //////////////////////////////////////////////////////////////////////////////// /// @brief removes a document from a skiplist @@ -180,7 +181,7 @@ int TRI_SkipListInsert(TRI_skiplist_t *sl, void *doc); /// cases nothing is inserted. //////////////////////////////////////////////////////////////////////////////// -int TRI_SkipListRemove(TRI_skiplist_t *sl, void *doc); +int TRI_SkipListRemove (TRI_skiplist_t *sl, void *doc); //////////////////////////////////////////////////////////////////////////////// /// @brief finds the last document that is less to doc in the preorder @@ -189,7 +190,7 @@ int TRI_SkipListRemove(TRI_skiplist_t *sl, void *doc); /// Only comparisons using the preorder are done. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListLeftLookup(TRI_skiplist_t *sl, void *doc); +TRI_skiplist_node_t* TRI_SkipListLeftLookup (TRI_skiplist_t *sl, void *doc); //////////////////////////////////////////////////////////////////////////////// /// @brief finds the last document that is less or equal to doc in @@ -198,7 +199,7 @@ TRI_skiplist_node_t* TRI_SkipListLeftLookup(TRI_skiplist_t *sl, void *doc); /// Only comparisons using the preorder are done. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListRightLookup(TRI_skiplist_t *sl, void *doc); +TRI_skiplist_node_t* TRI_SkipListRightLookup (TRI_skiplist_t *sl, void *doc); //////////////////////////////////////////////////////////////////////////////// /// @brief looks up doc in the skiplist using the proper order @@ -208,7 +209,7 @@ TRI_skiplist_node_t* TRI_SkipListRightLookup(TRI_skiplist_t *sl, void *doc); /// if doc is not in the skiplist. //////////////////////////////////////////////////////////////////////////////// -TRI_skiplist_node_t* TRI_SkipListLookup(TRI_skiplist_t *sl, void *doc); +TRI_skiplist_node_t* TRI_SkipListLookup (TRI_skiplist_t *sl, void *doc); //////////////////////////////////////////////////////////////////////////////// /// @}