X-Git-Url: https://rtime.felk.cvut.cz/gitweb/ulut.git/blobdiff_plain/d95b18cdb17a66e972ff986d517e9356a119fd00..a2195e5741eaa102449b75eb4d2a836225870b57:/ulut/ul_hashtab.h diff --git a/ulut/ul_hashtab.h b/ulut/ul_hashtab.h index 7121fc6..95ac2b8 100644 --- a/ulut/ul_hashtab.h +++ b/ulut/ul_hashtab.h @@ -70,10 +70,27 @@ typedef struct ul_hashtab_cust_table_field { } treeroots; long count; ul_hashtab_hashval_t hashmask; + unsigned char sizestep; } ul_hashtab_cust_table_field_t; typedef int (ul_hashtab_resize_insert_fnc_t)(ul_hashtab_cust_table_field_t *table_field, gavl_node_t *treenode) UL_ATTR_REENTRANT; +typedef struct ul_hashtab_sizestep { + ul_hashtab_hashval_t toshrink; + ul_hashtab_hashval_t toexpand; + ul_hashtab_hashval_t size; +} ul_hashtab_sizestep_t; + +static inline int ul_hashtab_sizestep_max(const ul_hashtab_sizestep_t *steptab) +{ + return steptab[0].toshrink; +} + +const ul_hashtab_sizestep_t *ul_hashtab_sizestep_global; +const ul_hashtab_sizestep_t * const ul_hashtab_sizestep_default; + +#define ul_hashtab_sizestep_null ((ul_hashtab_sizestep_t *)0) + void ul_hashtab_init_table_field_primitive(ul_hashtab_cust_table_field_t *table_field); int ul_hashtab_delete_all_primitive(ul_hashtab_cust_table_field_t *table_field); int ul_hashtab_resize_primitive(ul_hashtab_cust_table_field_t *table_field,