Lines Matching refs:next

38  * To use singly-linked lists, your structure must have a "next" pointer.
39 * To use doubly-linked lists, your structure must "prev" and "next" pointers.
45 * struct item *prev, *next;
82 * to dereference its prev/next pointers, and save/restore the real head.*/
85 #define _NEXT(elt,list,next) ((char*)((list)->next))
86 #define _NEXTASGN(elt,list,to,next) { char **_alias = (char**)&((list)->next); *_alias=(char*)(to); }
93 #define _NEXT(elt,list,next) ((elt)->next)
94 #define _NEXTASGN(elt,list,to,next) ((elt)->next)=(to)
106 LL_SORT2(list, cmp, next)
108 #define LL_SORT2(list, cmp, next) \
129 _SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
136 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
139 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
142 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
145 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
148 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
157 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
169 DL_SORT2(list, cmp, prev, next)
171 #define DL_SORT2(list, cmp, prev, next) \
192 _SV(_ls_q,list); _ls_q = _NEXT(_ls_q,list,next); _RS(list); \
199 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
202 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
205 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
208 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
211 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
221 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list); \
231 CDL_SORT2(list, cmp, prev, next)
233 #define CDL_SORT2(list, cmp, prev, next) \
258 if (_NEXT(_ls_q,list,next) == _ls_oldhead) { \
261 _ls_q = _NEXT(_ls_q,list,next); \
270 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
274 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
278 _NEXT(_ls_p,list,next); _RS(list); _ls_psize--; \
282 _NEXT(_ls_q,list,next); _RS(list); _ls_qsize--; \
286 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_ls_e,next); _RS(list); \
297 _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp,next); _RS(list); \
310 LL_PREPEND2(head,add,next)
312 #define LL_PREPEND2(head,add,next) \
314 (add)->next = head; \
319 LL_CONCAT2(head1,head2,next)
321 #define LL_CONCAT2(head1,head2,next) \
326 while (_tmp->next) { _tmp = _tmp->next; } \
327 _tmp->next=(head2); \
334 LL_APPEND2(head,add,next)
336 #define LL_APPEND2(head,add,next) \
339 (add)->next=NULL; \
342 while (_tmp->next) { _tmp = _tmp->next; } \
343 _tmp->next=(add); \
350 LL_DELETE2(head,del,next)
352 #define LL_DELETE2(head,del,next) \
356 (head)=(head)->next; \
359 while (_tmp->next && (_tmp->next != (del))) { \
360 _tmp = _tmp->next; \
362 if (_tmp->next) { \
363 _tmp->next = ((del)->next); \
370 LL_APPEND2_VS2008(head,add,next)
372 #define LL_APPEND2_VS2008(head,add,next) \
375 (add)->next = head; /* use add->next as a temp variable */ \
376 while ((add)->next->next) { (add)->next = (add)->next->next; } \
377 (add)->next->next=(add); \
381 (add)->next=NULL; \
385 LL_DELETE2_VS2008(head,del,next)
387 #define LL_DELETE2_VS2008(head,del,next) \
390 (head)=(head)->next; \
393 while ((head)->next && ((head)->next != (del))) { \
394 head = (head)->next; \
396 if ((head)->next) { \
397 (head)->next = ((del)->next); \
420 LL_COUNT2(head,el,counter,next) \
422 #define LL_COUNT2(head,el,counter,next) \
425 LL_FOREACH2(head,el,next){ ++counter; } \
429 LL_FOREACH2(head,el,next)
431 #define LL_FOREACH2(head,el,next) \
432 for(el=head;el;el=(el)->next)
435 LL_FOREACH_SAFE2(head,el,tmp,next)
437 #define LL_FOREACH_SAFE2(head,el,tmp,next) \
438 for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
441 LL_SEARCH_SCALAR2(head,out,field,val,next)
443 #define LL_SEARCH_SCALAR2(head,out,field,val,next) \
445 LL_FOREACH2(head,out,next) { \
451 LL_SEARCH2(head,out,elt,cmp,next)
453 #define LL_SEARCH2(head,out,elt,cmp,next) \
455 LL_FOREACH2(head,out,next) { \
466 (add)->next = (el)->next; \
471 while (_tmp->next && (_tmp->next != (el))) { \
472 _tmp = _tmp->next; \
474 if (_tmp->next) { \
475 _tmp->next = (add); \
486 (add)->next = (el); \
491 while (_tmp->next && (_tmp->next != (el))) { \
492 _tmp = _tmp->next; \
494 if (_tmp->next) { \
495 _tmp->next = (add); \
505 DL_PREPEND2(head,add,prev,next)
507 #define DL_PREPEND2(head,add,prev,next) \
509 (add)->next = head; \
520 DL_APPEND2(head,add,prev,next)
522 #define DL_APPEND2(head,add,prev,next) \
526 (head)->prev->next = (add); \
528 (add)->next = NULL; \
532 (head)->next = NULL; \
537 DL_CONCAT2(head1,head2,prev,next)
539 #define DL_CONCAT2(head1,head2,prev,next) \
546 (head1)->prev->next = (head2); \
555 DL_DELETE2(head,del,prev,next)
557 #define DL_DELETE2(head,del,prev,next) \
563 (del)->next->prev = (del)->prev; \
564 (head) = (del)->next; \
566 (del)->prev->next = (del)->next; \
567 if ((del)->next) { \
568 (del)->next->prev = (del)->prev; \
576 DL_COUNT2(head,el,counter,next) \
578 #define DL_COUNT2(head,el,counter,next) \
581 DL_FOREACH2(head,el,next){ ++counter; } \
585 DL_FOREACH2(head,el,next)
587 #define DL_FOREACH2(head,el,next) \
588 for(el=head;el;el=(el)->next)
592 DL_FOREACH_SAFE2(head,el,tmp,next)
594 #define DL_FOREACH_SAFE2(head,el,tmp,next) \
595 for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp)
610 (add)->next = (el)->next; \
611 if ((el)->next == NULL) { \
615 (add)->next->prev = (add); \
618 (add)->next = (el)->next; \
620 (add)->prev->next = (add); \
621 if ((el)->next == NULL) { \
624 (add)->next->prev = (add); \
634 (add)->next = (el); \
640 (add)->prev->next = (add); \
649 CDL_PREPEND2(head,add,prev,next)
651 #define CDL_PREPEND2(head,add,prev,next) \
655 (add)->next = (head); \
657 (add)->prev->next = (add); \
660 (add)->next = (add); \
666 CDL_DELETE2(head,del,prev,next)
668 #define CDL_DELETE2(head,del,prev,next) \
670 if ( ((head)==(del)) && ((head)->next == (head))) { \
673 (del)->next->prev = (del)->prev; \
674 (del)->prev->next = (del)->next; \
675 if ((del) == (head)) (head)=(del)->next; \
680 CDL_COUNT2(head,el,counter,next) \
682 #define CDL_COUNT2(head, el, counter,next) \
685 CDL_FOREACH2(head,el,next){ ++counter; } \
689 CDL_FOREACH2(head,el,next)
691 #define CDL_FOREACH2(head,el,next) \
692 for(el=head;el;el=((el)->next==head ? 0L : (el)->next))
695 CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next)
697 #define CDL_FOREACH_SAFE2(head,el,tmp1,tmp2,prev,next) \
699 (el) && ((tmp2)=(el)->next, 1); \
703 CDL_SEARCH_SCALAR2(head,out,field,val,next)
705 #define CDL_SEARCH_SCALAR2(head,out,field,val,next) \
707 CDL_FOREACH2(head,out,next) { \
713 CDL_SEARCH2(head,out,elt,cmp,next)
715 #define CDL_SEARCH2(head,out,elt,cmp,next) \
717 CDL_FOREACH2(head,out,next) { \
727 if ((el)->next == (el)) { \
728 (add)->next = (add); \
732 (add)->next = (el)->next; \
734 (add)->next->prev = (add); \
735 (add)->prev->next = (add); \
747 (add)->next = (el); \
750 (add)->prev->next = (add); \