Lines Matching refs:add

255 #define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \
258 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
262 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \
265 #define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \
268 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
272 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \
275 #define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \
278 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
279 HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \
282 #define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \
285 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
286 HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \
289 #define HASH_APPEND_LIST(hh, head, add) \
291 (add)->hh.next = NULL; \
292 (add)->hh.prev = ELMT_FROM_HH((head)->hh.tbl, (head)->hh.tbl->tail); \
293 (head)->hh.tbl->tail->next = (add); \
294 (head)->hh.tbl->tail = &((add)->hh); \
297 #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \
300 if (cmpfcn(DECLTYPE(head)(_hs_iter), add) > 0) { \
308 #define HASH_AKBI_INNER_LOOP(hh,head,add,cmpfcn) \
313 if (cmpfcn(head, add) > 0) { \
324 #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \
330 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \
332 HASH_ROLLBACK_BKT(hh, head, &(add)->hh); \
333 HASH_DELETE_HH(hh, head, &(add)->hh); \
334 (add)->hh.tbl = NULL; \
335 uthash_nonfatal_oom(add); \
341 (add)->hh.tbl = NULL; \
342 uthash_nonfatal_oom(add); \
348 #define HASH_ADD_TO_TABLE(hh,head,keyptr,keylen_in,hashval,add,oomed) \
353 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], hh, &(add)->hh, oomed); \
361 #define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \
364 (add)->hh.hashv = (hashval); \
365 (add)->hh.key = (char*) (keyptr); \
366 (add)->hh.keylen = (unsigned) (keylen_in); \
368 (add)->hh.next = NULL; \
369 (add)->hh.prev = NULL; \
370 HASH_MAKE_TABLE(hh, add, _ha_oomed); \
372 (head) = (add); \
376 (add)->hh.tbl = (head)->hh.tbl; \
377 HASH_AKBI_INNER_LOOP(hh, head, add, cmpfcn); \
379 (add)->hh.next = _hs_iter; \
380 if (((add)->hh.prev = HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev)) { \
381 HH_FROM_ELMT((head)->hh.tbl, (add)->hh.prev)->next = (add); \
383 (head) = (add); \
385 HH_FROM_ELMT((head)->hh.tbl, _hs_iter)->prev = (add); \
387 HASH_APPEND_LIST(hh, head, add); \
390 HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \
394 #define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \
398 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \
401 #define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \
402 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn)
404 #define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \
405 HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn)
407 #define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \
410 (add)->hh.hashv = (hashval); \
411 (add)->hh.key = (char*) (keyptr); \
412 (add)->hh.keylen = (unsigned) (keylen_in); \
414 (add)->hh.next = NULL; \
415 (add)->hh.prev = NULL; \
416 HASH_MAKE_TABLE(hh, add, _ha_oomed); \
418 (head) = (add); \
421 (add)->hh.tbl = (head)->hh.tbl; \
422 HASH_APPEND_LIST(hh, head, add); \
424 HASH_ADD_TO_TABLE(hh, head, keyptr, keylen_in, hashval, add, _ha_oomed); \
428 #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
432 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \
435 #define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \
436 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add)
438 #define HASH_ADD(hh,head,fieldname,keylen_in,add) \
439 HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add)
496 #define HASH_ADD_STR(head,strfield,add) \
498 unsigned _uthash_hastr_keylen = (unsigned)uthash_strlen((add)->strfield); \
499 HASH_ADD(hh, head, strfield[0], _uthash_hastr_keylen, add); \
501 #define HASH_REPLACE_STR(head,strfield,add,replaced) \
503 unsigned _uthash_hrstr_keylen = (unsigned)uthash_strlen((add)->strfield); \
504 HASH_REPLACE(hh, head, strfield[0], _uthash_hrstr_keylen, add, replaced); \
508 #define HASH_ADD_INT(head,intfield,add) \
509 HASH_ADD(hh,head,intfield,sizeof(int),add)
510 #define HASH_REPLACE_INT(head,intfield,add,replaced) \
511 HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
514 #define HASH_ADD_PTR(head,ptrfield,add) \
515 HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
516 #define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \
517 HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
521 /* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
859 /* add an item to a bucket */