Lines Matching refs:tbl

71 #define uthash_noexpand_fyi(tbl)          /* can be defined to log noexpand  */  argument
72 #define uthash_expand_fyi(tbl) /* can be defined to log expands */ argument
80 #define ELMT_FROM_HH(tbl,hhp) ((void*)(((char*)(hhp)) - ((tbl)->hho))) argument
87 HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \
88 if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \
89 HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \
98 #define HASH_BLOOM_MAKE(tbl) \ argument
100 (tbl)->bloom_nbits = HASH_BLOOM; \
101 (tbl)->bloom_bv = (uint8_t*)uthash_malloc(HASH_BLOOM_BYTELEN); \
102 if (!((tbl)->bloom_bv)) { uthash_fatal( "out of memory"); } \
103 memset((tbl)->bloom_bv, 0, HASH_BLOOM_BYTELEN); \
104 (tbl)->bloom_sig = HASH_BLOOM_SIGNATURE; \
107 #define HASH_BLOOM_FREE(tbl) \ argument
109 uthash_free((tbl)->bloom_bv, HASH_BLOOM_BYTELEN); \
115 #define HASH_BLOOM_ADD(tbl,hashv) \ argument
116 HASH_BLOOM_BITSET((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
118 #define HASH_BLOOM_TEST(tbl,hashv) \ argument
119 HASH_BLOOM_BITTEST((tbl)->bloom_bv, (hashv & (uint32_t)((1ULL << (tbl)->bloom_nbits) - 1)))
122 #define HASH_BLOOM_MAKE(tbl) argument
123 #define HASH_BLOOM_FREE(tbl) argument
124 #define HASH_BLOOM_ADD(tbl,hashv) argument
125 #define HASH_BLOOM_TEST(tbl,hashv) (1) argument
130 (head)->hh.tbl = (UT_hash_table*)uthash_malloc( \
132 if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \
133 memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \
134 (head)->hh.tbl->tail = &((head)->hh); \
135 (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \
136 (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \
137 (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \
138 (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \
140 if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \
141 memset((head)->hh.tbl->buckets, 0, \
143 HASH_BLOOM_MAKE((head)->hh.tbl); \
144 (head)->hh.tbl->signature = HASH_SIGNATURE; \
161 (head)->hh.tbl->tail->next = (add); \
162 (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
163 (head)->hh.tbl->tail = &((add)->hh); \
165 (head)->hh.tbl->num_items++; \
166 (add)->hh.tbl = (head)->hh.tbl; \
167 HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \
169 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \
170 HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \
197 uthash_free((head)->hh.tbl->buckets, \
198 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
199 HASH_BLOOM_FREE((head)->hh.tbl); \
200 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
204 if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
205 (head)->hh.tbl->tail = \
207 (head)->hh.tbl->hho); \
211 (head)->hh.tbl->hho))->next = (delptr)->hh.next; \
217 (head)->hh.tbl->hho))->prev = \
220 HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \
221 HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \
222 (head)->hh.tbl->num_items--; \
257 for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \
259 _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \
271 if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \
273 (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \
276 if (_count != (head)->hh.tbl->num_items) { \
278 (head)->hh.tbl->num_items, _count ); \
290 _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \
292 (head)->hh.tbl->hho) : NULL ); \
294 if (_count != (head)->hh.tbl->num_items) { \
296 (head)->hh.tbl->num_items, _count ); \
636 #define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \ argument
638 if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \
644 if (out->hh.hh_next) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,out->hh.hh_next)); \
658 && (addhh)->tbl->noexpand != 1) { \
659 HASH_EXPAND_BUCKETS((addhh)->tbl); \
705 #define HASH_EXPAND_BUCKETS(tbl) \ argument
712 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
715 2 * tbl->num_buckets * sizeof(struct UT_hash_bucket)); \
716 tbl->ideal_chain_maxlen = \
717 (tbl->num_items >> (tbl->log2_num_buckets+1)) + \
718 ((tbl->num_items & ((tbl->num_buckets*2)-1)) ? 1 : 0); \
719 tbl->nonideal_items = 0; \
720 for(_he_bkt_i = 0; _he_bkt_i < tbl->num_buckets; _he_bkt_i++) \
722 _he_thh = tbl->buckets[ _he_bkt_i ].hh_head; \
725 HASH_TO_BKT( _he_thh->hashv, tbl->num_buckets*2, _he_bkt); \
727 if (++(_he_newbkt->count) > tbl->ideal_chain_maxlen) { \
728 tbl->nonideal_items++; \
730 tbl->ideal_chain_maxlen; \
740 uthash_free( tbl->buckets, tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
741 tbl->num_buckets *= 2; \
742 tbl->log2_num_buckets++; \
743 tbl->buckets = _he_new_buckets; \
744 tbl->ineff_expands = (tbl->nonideal_items > (tbl->num_items >> 1)) ? \
745 (tbl->ineff_expands+1) : 0; \
746 if (tbl->ineff_expands > 1) { \
747 tbl->noexpand=1; \
748 uthash_noexpand_fyi(tbl); \
750 uthash_expand_fyi(tbl); \
780 (head)->hh.tbl->hho)) : NULL); \
789 (head)->hh.tbl->hho)) : NULL); \
795 (head)->hh.tbl->hho)) : NULL); \
798 cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
799 DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
804 (head)->hh.tbl->hho)) : NULL); \
810 (head)->hh.tbl->hho)) : NULL); \
815 ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \
820 ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \
828 (head)->hh.tbl->tail = _hs_tail; \
829 DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \
849 for(_src_bkt=0; _src_bkt < (src)->hh_src.tbl->num_buckets; _src_bkt++) { \
850 for(_src_hh = (src)->hh_src.tbl->buckets[_src_bkt].hh_head; \
853 _elt = ELMT_FROM_HH((src)->hh_src.tbl, _src_hh); \
866 _dst_hh->tbl = (dst)->hh_dst.tbl; \
868 HASH_TO_BKT(_dst_hh->hashv, _dst_hh->tbl->num_buckets, _dst_bkt); \
869 HASH_ADD_TO_BKT(_dst_hh->tbl->buckets[_dst_bkt],_dst_hh); \
870 (dst)->hh_dst.tbl->num_items++; \
883 uthash_free((head)->hh.tbl->buckets, \
884 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
885 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
902 #define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0)
962 struct UT_hash_table *tbl; member