Lines Matching refs:tbl
98 #define uthash_noexpand_fyi(tbl) /* can be defined to log noexpand */
101 #define uthash_expand_fyi(tbl) /* can be defined to log expands */
110 #define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho)))
112 #define HH_FROM_ELMT(tbl,elp) ((UT_hash_handle *)(((char*)(elp)) + ((tbl)->hho)))
124 HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _hf_bkt); \
125 if (HASH_BLOOM_TEST((head)->hh.tbl, hashval) != 0) { \
126 HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], keyptr, keylen, hashval, out); \
141 #define HASH_BLOOM_MAKE(tbl) \
143 (tbl)->bloom_nbits = HASH_BLOOM; \
144 (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \
145 if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \
146 memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \
147 (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \
150 #define HASH_BLOOM_FREE(tbl) \
152 uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \
158 #define HASH_BLOOM_ADD(tbl,hashv) \
159 HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1U)))
161 #define HASH_BLOOM_TEST(tbl,hashv) \
162 HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1U)))
165 #define HASH_BLOOM_MAKE(tbl)
166 #define HASH_BLOOM_FREE(tbl)
167 #define HASH_BLOOM_ADD(tbl,hashv)
168 #define HASH_BLOOM_TEST(tbl,hashv) (1)
174 (head)->hh.tbl = (UT_hash_table*)uthash_malloc( \
176 if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \
177 memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \
178 (head)->hh.tbl->tail = &((head)->hh); \
179 (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \
180 (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \
181 (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \
182 (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \
184 if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \
185 memset((head)->hh.tbl->buckets, 0, \
187 HASH_BLOOM_MAKE((head)->hh.tbl); \
188 (head)->hh.tbl->signature = HASH_SIGNATURE; \
228 (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
229 (head)->hh.tbl->tail->next = (add); \
230 (head)->hh.tbl->tail = &((add)->hh); \
246 (add)->hh.tbl = (head)->hh.tbl; \
248 if (cmpfcn(DECLTYPE(head) ELMT_FROM_HH((head)->hh.tbl, _hs_iter), add) > 0) \
254 HH_FROM_ELMT((head)->hh.tbl, _hs_iter->prev)->next = (add); \
263 (head)->hh.tbl->num_items++; \
264 HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \
265 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], &(add)->hh); \
266 HASH_BLOOM_ADD((head)->hh.tbl, hashval); \
296 (add)->hh.tbl = (head)->hh.tbl; \
299 (head)->hh.tbl->num_items++; \
300 HASH_TO_BKT(hashval, (head)->hh.tbl->num_buckets, _ha_bkt); \
301 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], &(add)->hh); \
302 HASH_BLOOM_ADD((head)->hh.tbl, hashval); \
341 uthash_free((head)->hh.tbl->buckets, \
342 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
343 HASH_BLOOM_FREE((head)->hh.tbl); \
344 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
349 if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
350 (head)->hh.tbl->tail = \
352 (head)->hh.tbl->hho); \
356 (head)->hh.tbl->hho))->next = (delptr)->hh.next; \
362 (head)->hh.tbl->hho))->prev = \
365 HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \
366 HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \
367 (head)->hh.tbl->num_items--; \
408 for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \
410 _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \
422 if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \
424 (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \
427 if (_count != (head)->hh.tbl->num_items) { \
429 (head)->hh.tbl->num_items, _count ); \
441 _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \
443 (head)->hh.tbl->hho) : NULL ); \
445 if (_count != (head)->hh.tbl->num_items) { \
447 (head)->hh.tbl->num_items, _count ); \
714 #define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,hashval,out) \
717 DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (head).hh_head)); \
728 DECLTYPE_ASSIGN(out, ELMT_FROM_HH(tbl, (out)->hh.hh_next)); \
744 && ((addhh)->tbl->noexpand != 1U)) { \
745 HASH_EXPAND_BUCKETS((addhh)->tbl); \
773 * The calculation of tbl->ideal_chain_maxlen below deserves some
791 #define HASH_EXPAND_BUCKETS(tbl) \
798 2UL * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
801 2UL * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
802 tbl->ideal_chain_maxlen = \
803 (tbl->num_items >> (tbl->log2_num_buckets+1U)) + \
804 (((tbl->num_items & ((tbl->num_buckets*2U)-1U)) != 0U) ? 1U : 0U); \
805 tbl->nonideal_items = 0; \
806 for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++) \
808 _he_thh = tbl->buckets[ _he_bkt_i ].hh_head; \
811 HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2U, _he_bkt); \
813 if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) { \
814 tbl->nonideal_items++; \
816 tbl->ideal_chain_maxlen; \
826 uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
827 tbl->num_buckets *= 2U; \
828 tbl->log2_num_buckets++; \
829 tbl->buckets = _he_new_buckets; \
830 tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ? \
831 (tbl->ineff_expands+1U) : 0U; \
832 if (tbl->ineff_expands > 1U) { \
833 tbl->noexpand=1; \
834 uthash_noexpand_fyi(tbl); \
836 uthash_expand_fyi(tbl); \
866 (head)->hh.tbl->hho)) : NULL); \
875 (head)->hh.tbl->hho)) : NULL); \
882 (head)->hh.tbl->hho)) : NULL); \
886 cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
887 DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
893 (head)->hh.tbl->hho)) : NULL); \
900 (head)->hh.tbl->hho)) : NULL); \
905 ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \
911 ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \
922 (head)->hh.tbl->tail = _hs_tail; \
923 DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \
943 for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \
944 for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \
947 _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \
960 _dst_hh->tbl = (dst)->hh_dst.tbl; \
962 HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \
963 HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh); \
964 (dst)->hh_dst.tbl->num_items++; \
977 uthash_free((head)->hh.tbl->buckets, \
978 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
979 HASH_BLOOM_FREE((head)->hh.tbl); \
980 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
987 (size_t)(((head)->hh.tbl->num_items * sizeof(UT_hash_handle)) + \
988 ((head)->hh.tbl->num_buckets * sizeof(UT_hash_bucket)) + \
1004 #define HASH_CNT(hh,head) ((head != NULL)?((head)->hh.tbl->num_items):0U)
1064 struct UT_hash_table *tbl;