Lines Matching refs:add
245 #define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \
248 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
252 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \
255 #define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \
258 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
262 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \
265 #define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \
268 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
269 HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \
272 #define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \
275 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
276 HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \
279 #define HASH_APPEND_LIST(hh, head, add) \
281 (add)->hh.next = NULL; \
282 (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
283 (head)->hh.tbl->tail->next = (add); \
284 (head)->hh.tbl->tail = &((add)->hh); \
287 #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \
290 if (cmpfcn(DECLTYPE(head)(_hs_iter), add) > 0) { \
298 #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \
303 if (cmpfcn(head, add) > 0) { \
314 #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \
320 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \
322 HASH_ROLLBACK_BKT(hh, head, &(add)->hh); \
323 HASH_DELETE_HH(hh, head, &(add)->hh); \
324 (add)->hh.tbl = NULL; \
325 uthash_nonfatal_oom(add); \
331 (add)->hh.tbl = NULL; \
332 uthash_nonfatal_oom(add); \
338 #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \
343 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \
351 #define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \
354 (add)->hh.hashv = (hashval); \
355 (add)->hh.key = (char*) (keyptr); \
356 (add)->hh.keylen = (unsigned) (keylen_in); \
358 (add)->hh.next = NULL; \
359 (add)->hh.prev = NULL; \
360 HASH_MAKE_TABLE(hh, add, _ha_oomed); \
362 (head) = (add); \
366 (add)->hh.tbl = (head)->hh.tbl; \
367 HASH_AKBI_INNER_LOOP(hh, head, add, cmpfcn); \
369 (add)->hh.next = _hs_iter; \
370 if (((add)->hh.prev = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev)) { \
371 HH_FROM_ELMT((head)->hh.tbl, (add)->hh.prev)->next = (add); \
373 (head) = (add); \
375 HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev = (add); \
377 HASH_APPEND_LIST(hh, head, add); \
380 HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \
384 #define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \
388 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \
391 #define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \
392 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn)
394 #define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \
395 HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn)
397 #define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \
400 (add)->hh.hashv = (hashval); \
401 (add)->hh.key = (const void*) (keyptr); \
402 (add)->hh.keylen = (unsigned) (keylen_in); \
404 (add)->hh.next = NULL; \
405 (add)->hh.prev = NULL; \
406 HASH_MAKE_TABLE(hh, add, _ha_oomed); \
408 (head) = (add); \
411 (add)->hh.tbl = (head)->hh.tbl; \
412 HASH_APPEND_LIST(hh, head, add); \
414 HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \
418 #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
422 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \
425 #define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \
426 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add)
428 #define HASH_ADD(hh,head,fieldname,keylen_in,add) \
429 HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add)
486 #define HASH_ADD_STR(head,strfield,add) \
488 unsigned _uthash_hastr_keylen = (unsigned)uthash_strlen((add)->strfield); \
489 HASH_ADD(hh, head, strfield[0], _uthash_hastr_keylen, add); \
491 #define HASH_REPLACE_STR(head,strfield,add,replaced) \
493 unsigned _uthash_hrstr_keylen = (unsigned)uthash_strlen((add)->strfield); \
494 HASH_REPLACE(hh, head, strfield[0], _uthash_hrstr_keylen, add, replaced); \
498 #define HASH_ADD_INT(head,intfield,add) \
499 HASH_ADD(hh,head,intfield,sizeof(int),add)
500 #define HASH_REPLACE_INT(head,intfield,add,replaced) \
501 HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
504 #define HASH_ADD_PTR(head,ptrfield,add) \
505 HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
506 #define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \
507 HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
511 /* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
765 /* add an item to a bucket */