From: Pavel Pisa Date: Thu, 31 Dec 2009 10:49:30 +0000 (+0100) Subject: uLUt: adjust hash table size even for delete_key. X-Git-Tag: ul_drv-0.8.1-release~3 X-Git-Url: https://rtime.felk.cvut.cz/gitweb/ulut.git/commitdiff_plain/c8bcd949e9b07ab4f024c10d111abbe19c6a23c4 uLUt: adjust hash table size even for delete_key. Signed-off-by: Pavel Pisa --- diff --git a/ulut/ul_hashtabcust.h b/ulut/ul_hashtabcust.h index 21125f8..c6c00b0 100644 --- a/ulut/ul_hashtabcust.h +++ b/ulut/ul_hashtabcust.h @@ -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); \ } \ \ diff --git a/ulut/ul_hashtabprim.c b/ulut/ul_hashtabprim.c index 3ba8452..9d363ec 100644 --- a/ulut/ul_hashtabprim.c +++ b/ulut/ul_hashtabprim.c @@ -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;