]> rtime.felk.cvut.cz Git - ulut.git/commitdiff
uLUt: adjust hash table size even for delete_key.
authorPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 31 Dec 2009 10:49:30 +0000 (11:49 +0100)
committerPavel Pisa <pisa@cmp.felk.cvut.cz>
Thu, 31 Dec 2009 10:49:30 +0000 (11:49 +0100)
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
ulut/ul_hashtabcust.h
ulut/ul_hashtabprim.c

index 21125f835464488f68f5c15cfd09b1ad33cd3a5e..c6c00b0d5ce594b653a5e0731fd3835e340c1e50 100644 (file)
@@ -121,6 +121,14 @@ cust_item_t *cust_prefix##_delete_key(cust_table_t *table, cust_key_t const *key
     return NULL; \
   cust_prefix##_privtree_delete_node((ul_hashtab_treeroot_t *)treeroot, node); \
   table->cust_table_field.count--; \
+  if(((cust_sizestep)!=ul_hashtab_sizestep_null)&&table->cust_table_field.sizestep) {\
+    if(table->cust_table_field.sizestep>ul_hashtab_sizestep_max(cust_sizestep)) \
+      table->cust_table_field.sizestep=ul_hashtab_sizestep_max(cust_sizestep); \
+    if(table->cust_table_field.count<=(cust_sizestep)[table->cust_table_field.sizestep].toshrink) {\
+      table->cust_table_field.sizestep--; \
+      cust_prefix##_resize_table(table, (cust_sizestep)[table->cust_table_field.sizestep].size);\
+    } \
+  } \
   return cust_prefix##_privtree_node2item(NULL,node); \
 } \
 \
index 3ba8452b3ba5d7b47e14239dbd4abba6784cd666..9d363ecf2e41c3cb606ae09dff842d76ca52ca84 100644 (file)
@@ -131,7 +131,7 @@ gavl_node_t *ul_hashtab_next_it_primitive(const ul_hashtab_cust_table_field_t *t
 static const ul_hashtab_sizestep_t ul_hashtab_sizestep_default_table[]={
   { ((ul_hashtab_hashval_t)~0l)<(1l<<8)?2:
     ((ul_hashtab_hashval_t)~0l)<(1l<<16)?5:8,
-               TABENT( 1), TABENT( 0)},
+               TABENT( 2), TABENT( 0)},
   {TABENT( 0), TABENT( 4), TABENT( 4)},
   {TABENT( 3), TABENT( 6), TABENT( 6)},
   {TABENT( 5), TABENT( 8), TABENT( 8)},
@@ -139,7 +139,7 @@ static const ul_hashtab_sizestep_t ul_hashtab_sizestep_default_table[]={
   {TABENT(10), TABENT(14), TABENT(12)},
   {TABENT(13), TABENT(18), TABENT(14)},
   {TABENT(17), TABENT(21), TABENT(16)},
-  {TABENT(16),          0,  TABENT(18)},
+  {TABENT(16),         0,  TABENT(18)},
 };
 
 const ul_hashtab_sizestep_t * const ul_hashtab_sizestep_default=ul_hashtab_sizestep_default_table;