Lines Matching refs:add
191 #define HASH_REPLACE_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,replaced,cmpfcn) \
194 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
198 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn); \
201 #define HASH_REPLACE_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add,replaced) \
204 HASH_FIND_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, replaced); \
208 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add); \
211 #define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced) \
214 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
215 HASH_REPLACE_BYHASHVALUE(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced); \
218 #define HASH_REPLACE_INORDER(hh,head,fieldname,keylen_in,add,replaced,cmpfcn) \
221 HASH_VALUE(&((add)->fieldname), keylen_in, _hr_hashv); \
222 HASH_REPLACE_BYHASHVALUE_INORDER(hh, head, fieldname, keylen_in, _hr_hashv, add, replaced, cmpfcn); \
225 #define HASH_APPEND_LIST(hh, head, add) \
227 (add)->hh.next = NULL; \
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); \
233 #define HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh,head,keyptr,keylen_in,hashval,add,cmpfcn) \
236 (add)->hh.hashv = (hashval); \
237 (add)->hh.key = (char*) (keyptr); \
238 (add)->hh.keylen = (unsigned) (keylen_in); \
240 (add)->hh.next = NULL; \
241 (add)->hh.prev = NULL; \
242 (head) = (add); \
246 (add)->hh.tbl = (head)->hh.tbl; \
248 if (cmpfcn(DECLTYPE(head) ELMT_FROM_HH((head)->hh.tbl, _hs_iter), add) > 0) \
252 (add)->hh.next = _hs_iter; \
253 if (((add)->hh.prev = _hs_iter->prev)) { \
254 HH_FROM_ELMT((head)->hh.tbl, _hs_iter->prev)->next = (add); \
256 (head) = (add); \
258 _hs_iter->prev = (add); \
260 HASH_APPEND_LIST(hh, head, add); \
265 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], &(add)->hh); \
271 #define HASH_ADD_KEYPTR_INORDER(hh,head,keyptr,keylen_in,add,cmpfcn) \
275 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, keyptr, keylen_in, _hs_hashv, add, cmpfcn); \
278 #define HASH_ADD_BYHASHVALUE_INORDER(hh,head,fieldname,keylen_in,hashval,add,cmpfcn) \
279 HASH_ADD_KEYPTR_BYHASHVALUE_INORDER(hh, head, &((add)->fieldname), keylen_in, hashval, add, cmpfcn)
281 #define HASH_ADD_INORDER(hh,head,fieldname,keylen_in,add,cmpfcn) \
282 HASH_ADD_KEYPTR_INORDER(hh, head, &((add)->fieldname), keylen_in, add, cmpfcn)
284 #define HASH_ADD_KEYPTR_BYHASHVALUE(hh,head,keyptr,keylen_in,hashval,add) \
287 (add)->hh.hashv = (hashval); \
288 (add)->hh.key = (char*) (keyptr); \
289 (add)->hh.keylen = (unsigned) (keylen_in); \
291 (add)->hh.next = NULL; \
292 (add)->hh.prev = NULL; \
293 (head) = (add); \
296 (add)->hh.tbl = (head)->hh.tbl; \
297 HASH_APPEND_LIST(hh, head, add); \
301 HASH_ADD_TO_BKT((head)->hh.tbl->buckets[_ha_bkt], &(add)->hh); \
307 #define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add) \
311 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, keyptr, keylen_in, _ha_hashv, add); \
314 #define HASH_ADD_BYHASHVALUE(hh,head,fieldname,keylen_in,hashval,add) \
315 HASH_ADD_KEYPTR_BYHASHVALUE(hh, head, &((add)->fieldname), keylen_in, hashval, add)
317 #define HASH_ADD(hh,head,fieldname,keylen_in,add) \
318 HASH_ADD_KEYPTR(hh, head, &((add)->fieldname), keylen_in, add)
376 #define HASH_ADD_STR(head,strfield,add) \
377 HASH_ADD(hh,head,strfield[0],(unsigned)uthash_strlen(add->strfield),add)
378 #define HASH_REPLACE_STR(head,strfield,add,replaced) \
379 HASH_REPLACE(hh,head,strfield[0],(unsigned)uthash_strlen(add->strfield),add,replaced)
382 #define HASH_ADD_INT(head,intfield,add) \
383 HASH_ADD(hh,head,intfield,sizeof(int),add)
384 #define HASH_REPLACE_INT(head,intfield,add,replaced) \
385 HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
388 #define HASH_ADD_PTR(head,ptrfield,add) \
389 HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
390 #define HASH_REPLACE_PTR(head,ptrfield,add,replaced) \
391 HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
395 /* HASH_FSCK checks hash integrity on every add/delete when HASH_DEBUG is defined.
735 /* add an item to a bucket */