Lines Matching refs:head

96 #define HASH_FIND(hh,head,keyptr,keylen,out)                                     \  argument
100 if (head) { \
101 HASH_FCN(keyptr,keylen, (head)->hh.tbl->num_buckets, _hf_hashv, _hf_bkt); \
102 if (HASH_BLOOM_TEST((head)->hh.tbl, _hf_hashv)) { \
103 HASH_FIND_IN_BKT((head)->hh.tbl, hh, (head)->hh.tbl->buckets[ _hf_bkt ], \
142 #define HASH_MAKE_TABLE(hh,head) \ argument
144 (head)->hh.tbl = (UT_hash_table*)uthash_malloc( \
146 if (!((head)->hh.tbl)) { uthash_fatal( "out of memory"); } \
147 memset((head)->hh.tbl, 0, sizeof(UT_hash_table)); \
148 (head)->hh.tbl->tail = &((head)->hh); \
149 (head)->hh.tbl->num_buckets = HASH_INITIAL_NUM_BUCKETS; \
150 (head)->hh.tbl->log2_num_buckets = HASH_INITIAL_NUM_BUCKETS_LOG2; \
151 (head)->hh.tbl->hho = (char*)(&(head)->hh) - (char*)(head); \
152 (head)->hh.tbl->buckets = (UT_hash_bucket*)uthash_malloc( \
154 if (! (head)->hh.tbl->buckets) { uthash_fatal( "out of memory"); } \
155 memset((head)->hh.tbl->buckets, 0, \
157 HASH_BLOOM_MAKE((head)->hh.tbl); \
158 (head)->hh.tbl->signature = HASH_SIGNATURE; \
161 #define HASH_ADD(hh,head,fieldname,keylen_in,add) \ argument
162 HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
164 #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \ argument
170 if (!(head)) { \
171 head = (add); \
172 (head)->hh.prev = NULL; \
173 HASH_MAKE_TABLE(hh,head); \
175 (head)->hh.tbl->tail->next = (add); \
176 (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
177 (head)->hh.tbl->tail = &((add)->hh); \
179 (head)->hh.tbl->num_items++; \
180 (add)->hh.tbl = (head)->hh.tbl; \
181 HASH_FCN(keyptr,keylen_in, (head)->hh.tbl->num_buckets, \
183 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt],&(add)->hh); \
184 HASH_BLOOM_ADD((head)->hh.tbl,(add)->hh.hashv); \
185 HASH_EMIT_KEY(hh,head,keyptr,keylen_in); \
186 HASH_FSCK(hh,head); \
206 #define HASH_DELETE(hh,head,delptr) \ argument
211 uthash_free((head)->hh.tbl->buckets, \
212 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket) ); \
213 HASH_BLOOM_FREE((head)->hh.tbl); \
214 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
215 head = NULL; \
218 if ((delptr) == ELMT_FROM_HH((head)->hh.tbl,(head)->hh.tbl->tail)) { \
219 (head)->hh.tbl->tail = \
221 (head)->hh.tbl->hho); \
225 (head)->hh.tbl->hho))->next = (delptr)->hh.next; \
227 DECLTYPE_ASSIGN(head,(delptr)->hh.next); \
231 (head)->hh.tbl->hho))->prev = \
234 HASH_TO_BKT( _hd_hh_del->hashv, (head)->hh.tbl->num_buckets, _hd_bkt); \
235 HASH_DEL_IN_BKT(hh,(head)->hh.tbl->buckets[_hd_bkt], _hd_hh_del); \
236 (head)->hh.tbl->num_items--; \
238 HASH_FSCK(hh,head); \
243 #define HASH_FIND_STR(head,findstr,out) \ argument
244 HASH_FIND(hh,head,findstr,strlen(findstr),out)
245 #define HASH_ADD_STR(head,strfield,add) \ argument
246 HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
247 #define HASH_FIND_INT(head,findint,out) \ argument
248 HASH_FIND(hh,head,findint,sizeof(int),out)
249 #define HASH_ADD_INT(head,intfield,add) \ argument
250 HASH_ADD(hh,head,intfield,sizeof(int),add)
251 #define HASH_FIND_PTR(head,findptr,out) \ argument
252 HASH_FIND(hh,head,findptr,sizeof(void *),out)
253 #define HASH_ADD_PTR(head,ptrfield,add) \ argument
254 HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
255 #define HASH_DEL(head,delptr) \ argument
256 HASH_DELETE(hh,head,delptr)
263 #define HASH_FSCK(hh,head) \ argument
269 if (head) { \
271 for( _bkt_i = 0; _bkt_i < (head)->hh.tbl->num_buckets; _bkt_i++) { \
273 _thh = (head)->hh.tbl->buckets[_bkt_i].hh_head; \
285 if ((head)->hh.tbl->buckets[_bkt_i].count != _bkt_count) { \
287 (head)->hh.tbl->buckets[_bkt_i].count, _bkt_count); \
290 if (_count != (head)->hh.tbl->num_items) { \
292 (head)->hh.tbl->num_items, _count ); \
297 _thh = &(head)->hh; \
304 _prev = (char*)ELMT_FROM_HH((head)->hh.tbl, _thh); \
306 (head)->hh.tbl->hho) : NULL ); \
308 if (_count != (head)->hh.tbl->num_items) { \
310 (head)->hh.tbl->num_items, _count ); \
315 #define HASH_FSCK(hh,head) argument
322 #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) \ argument
329 #define HASH_EMIT_KEY(hh,head,keyptr,fieldlen) argument
582 #define HASH_FIND_IN_BKT(tbl,hh,head,keyptr,keylen_in,out) \ argument
584 if (head.hh_head) DECLTYPE_ASSIGN(out,ELMT_FROM_HH(tbl,head.hh_head)); \
596 #define HASH_ADD_TO_BKT(head,addhh) \ argument
598 head.count++; \
599 (addhh)->hh_next = head.hh_head; \
601 if (head.hh_head) { (head).hh_head->hh_prev = (addhh); } \
602 (head).hh_head=addhh; \
603 if (head.count >= ((head.expand_mult+1) * HASH_BKT_CAPACITY_THRESH) \
610 #define HASH_DEL_IN_BKT(hh,head,hh_del) \ argument
611 (head).count--; \
612 if ((head).hh_head == hh_del) { \
613 (head).hh_head = hh_del->hh_next; \
703 #define HASH_SORT(head,cmpfcn) HASH_SRT(hh,head,cmpfcn) argument
704 #define HASH_SRT(hh,head,cmpfcn) \ argument
709 if (head) { \
712 _hs_list = &((head)->hh); \
726 (head)->hh.tbl->hho)) : NULL); \
735 (head)->hh.tbl->hho)) : NULL); \
741 (head)->hh.tbl->hho)) : NULL); \
744 cmpfcn(DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_p)), \
745 DECLTYPE(head)(ELMT_FROM_HH((head)->hh.tbl,_hs_q))) \
750 (head)->hh.tbl->hho)) : NULL); \
756 (head)->hh.tbl->hho)) : NULL); \
761 ELMT_FROM_HH((head)->hh.tbl,_hs_e) : NULL); \
766 ELMT_FROM_HH((head)->hh.tbl,_hs_tail) : NULL); \
774 (head)->hh.tbl->tail = _hs_tail; \
775 DECLTYPE_ASSIGN(head,ELMT_FROM_HH((head)->hh.tbl, _hs_list)); \
779 HASH_FSCK(hh,head); \
826 #define HASH_CLEAR(hh,head) \ argument
828 if (head) { \
829 uthash_free((head)->hh.tbl->buckets, \
830 (head)->hh.tbl->num_buckets*sizeof(struct UT_hash_bucket)); \
831 HASH_BLOOM_FREE((head)->hh.tbl); \
832 uthash_free((head)->hh.tbl, sizeof(UT_hash_table)); \
833 (head)=NULL; \
838 #define HASH_ITER(hh,head,el,tmp) \ argument
839 for((el)=(head), (*(char**)(&(tmp)))=(char*)((head)?(head)->hh.next:NULL); \
842 #define HASH_ITER(hh,head,el,tmp) \ argument
843 for((el)=(head),(tmp)=DECLTYPE(el)((head)?(head)->hh.next:NULL); \
848 #define HASH_COUNT(head) HASH_CNT(hh,head) argument
849 #define HASH_CNT(hh,head) ((head)?((head)->hh.tbl->num_items):0) argument