Go to the source code of this file.
Macros |
| #define | UTLIST_VERSION 1.9.1 |
| #define | LDECLTYPE(x) __typeof(x) |
| #define | _SV(elt, list) |
| #define | _NEXT(elt, list) ((elt)->next) |
| #define | _NEXTASGN(elt, list, to) ((elt)->next)=(to) |
| #define | _PREV(elt, list) ((elt)->prev) |
| #define | _PREVASGN(elt, list, to) ((elt)->prev)=(to) |
| #define | _RS(list) |
| #define | _CASTASGN(a, b) (a)=(b) |
| #define | LL_SORT(list, cmp) |
| #define | DL_SORT(list, cmp) |
| #define | CDL_SORT(list, cmp) |
| #define | LL_PREPEND(head, add) |
| #define | LL_APPEND(head, add) |
| #define | LL_DELETE(head, del) |
| #define | LL_APPEND_VS2008(head, add) |
| #define | LL_DELETE_VS2008(head, del) |
| #define | LL_FOREACH(head, el) for(el=head;el;el=el->next) |
| #define | LL_FOREACH_SAFE(head, el, tmp) for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp) |
| #define | LL_SEARCH_SCALAR(head, out, field, val) |
| #define | LL_SEARCH(head, out, elt, cmp) |
| #define | DL_PREPEND(head, add) |
| #define | DL_APPEND(head, add) |
| #define | DL_DELETE(head, del) |
| #define | DL_FOREACH(head, el) for(el=head;el;el=el->next) |
| #define | DL_FOREACH_SAFE(head, el, tmp) for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp) |
| #define | DL_SEARCH_SCALAR LL_SEARCH_SCALAR |
| #define | DL_SEARCH LL_SEARCH |
| #define | CDL_PREPEND(head, add) |
| #define | CDL_DELETE(head, del) |
| #define | CDL_FOREACH(head, el) for(el=head;el;el=(el->next==head ? 0L : el->next)) |
| #define | CDL_FOREACH_SAFE(head, el, tmp1, tmp2) |
| #define | CDL_SEARCH_SCALAR(head, out, field, val) |
| #define | CDL_SEARCH(head, out, elt, cmp) |
Macro Definition Documentation
| #define _CASTASGN |
( |
|
a, |
|
|
|
b |
|
) |
| (a)=(b) |
| #define _NEXT |
( |
|
elt, |
|
|
|
list |
|
) |
| ((elt)->next) |
| #define _NEXTASGN |
( |
|
elt, |
|
|
|
list, |
|
|
|
to |
|
) |
| ((elt)->next)=(to) |
| #define _PREV |
( |
|
elt, |
|
|
|
list |
|
) |
| ((elt)->prev) |
| #define _PREVASGN |
( |
|
elt, |
|
|
|
list, |
|
|
|
to |
|
) |
| ((elt)->prev)=(to) |
| #define _SV |
( |
|
elt, |
|
|
|
list |
|
) |
| |
| #define CDL_DELETE |
( |
|
head, |
|
|
|
del |
|
) |
| |
Value:do { \
if ( ((head)==(del)) && ((head)->
next == (head))) { \
(head) = 0L; \
} else { \
(del)->
next->prev = (del)->prev; \
(del)->
prev->next = (del)->next; \
if ((del) == (head)) (head)=(del)->next; \
} \
} while (0);
Definition at line 456 of file utlist.h.
| #define CDL_FOREACH |
( |
|
head, |
|
|
|
el |
|
) |
| for(el=head;el;el=(el->next==head ? 0L : el->next)) |
| #define CDL_FOREACH_SAFE |
( |
|
head, |
|
|
|
el, |
|
|
|
tmp1, |
|
|
|
tmp2 |
|
) |
| |
Value:for((el)=(head), ((tmp1)=(head)?((head)->
prev):NULL); \
(el) && ((tmp2)=(el)->
next, 1); \
((el) = (((el)==(tmp1)) ? 0L : (tmp2))))
Definition at line 470 of file utlist.h.
| #define CDL_PREPEND |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
if (head) { \
(add)->
prev = (head)->prev; \
(add)->
prev->next = (add); \
} else { \
} \
(head)=(add); \
} while (0)
Definition at line 442 of file utlist.h.
| #define CDL_SEARCH |
( |
|
head, |
|
|
|
out, |
|
|
|
elt, |
|
|
|
cmp |
|
) |
| |
Value:do { \
CDL_FOREACH(head,out) { \
if ((cmp(out,elt))==0) break; \
} \
} while(0)
Definition at line 482 of file utlist.h.
| #define CDL_SEARCH_SCALAR |
( |
|
head, |
|
|
|
out, |
|
|
|
field, |
|
|
|
val |
|
) |
| |
Value:do { \
CDL_FOREACH(head,out) { \
if ((out)->field == (val)) break; \
} \
} while(0)
Definition at line 475 of file utlist.h.
| #define CDL_SORT |
( |
|
list, |
|
|
|
cmp |
|
) |
| |
| #define DL_APPEND |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
if (head) { \
(add)->
prev = (head)->prev; \
(head)->
prev->next = (add); \
} else { \
(head)=(add); \
} \
} while (0);
Definition at line 396 of file utlist.h.
| #define DL_DELETE |
( |
|
head, |
|
|
|
del |
|
) |
| |
Value:do { \
if ((del)->
prev == (del)) { \
(head)=NULL; \
} else if ((del)==(head)) { \
(del)->
next->prev = (del)->prev; \
(head) = (del)->next; \
} else { \
(del)->
prev->next = (del)->next; \
(del)->
next->prev = (del)->prev; \
} else { \
(head)->
prev = (del)->prev; \
} \
} \
} while (0);
Definition at line 410 of file utlist.h.
| #define DL_FOREACH |
( |
|
head, |
|
|
|
el |
|
) |
| for(el=head;el;el=el->next) |
| #define DL_FOREACH_SAFE |
( |
|
head, |
|
|
|
el, |
|
|
|
tmp |
|
) |
| for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp) |
| #define DL_PREPEND |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
if (head) { \
(add)->
prev = (head)->prev; \
} else { \
} \
(head) = (add); \
} while (0)
Definition at line 384 of file utlist.h.
| #define DL_SORT |
( |
|
list, |
|
|
|
cmp |
|
) |
| |
| #define LDECLTYPE |
( |
|
x | ) |
__typeof(x) |
| #define LL_APPEND |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
LDECLTYPE(head) _tmp; \
if (head) { \
_tmp = head; \
while (_tmp->next) { _tmp = _tmp->next; } \
_tmp->next=(add); \
} else { \
(head)=(add); \
} \
} while (0)
Definition at line 293 of file utlist.h.
| #define LL_APPEND_VS2008 |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
if (head) { \
while ((add)->
next->next) { (add)->
next = (add)->next->next; } \
(add)->
next->next=(add); \
} else { \
(head)=(add); \
} \
} while (0)
Definition at line 323 of file utlist.h.
| #define LL_DELETE |
( |
|
head, |
|
|
|
del |
|
) |
| |
Value:do { \
LDECLTYPE(head) _tmp; \
if ((head) == (del)) { \
(head)=(head)->next; \
} else { \
_tmp = head; \
while (_tmp->next && (_tmp->next != (del))) { \
_tmp = _tmp->next; \
} \
if (_tmp->next) { \
_tmp->next = ((del)->
next); \
} \
} \
} while (0)
Definition at line 306 of file utlist.h.
| #define LL_DELETE_VS2008 |
( |
|
head, |
|
|
|
del |
|
) |
| |
Value:do { \
if ((head) == (del)) { \
(head)=(head)->next; \
} else { \
char *_tmp = (char*)(head); \
while (head->next && (head->next != (del))) { \
head = head->next; \
} \
if (head->next) { \
head->next = ((del)->
next); \
} \
{ \
char **_head_alias = (char**)&(head); \
*_head_alias = _tmp; \
} \
} \
} while (0)
Definition at line 335 of file utlist.h.
| #define LL_FOREACH |
( |
|
head, |
|
|
|
el |
|
) |
| for(el=head;el;el=el->next) |
| #define LL_FOREACH_SAFE |
( |
|
head, |
|
|
|
el, |
|
|
|
tmp |
|
) |
| for((el)=(head);(el) && (tmp = (el)->next, 1); (el) = tmp) |
| #define LL_PREPEND |
( |
|
head, |
|
|
|
add |
|
) |
| |
Value:do { \
head = add; \
} while (0)
Definition at line 287 of file utlist.h.
| #define LL_SEARCH |
( |
|
head, |
|
|
|
out, |
|
|
|
elt, |
|
|
|
cmp |
|
) |
| |
Value:do { \
LL_FOREACH(head,out) { \
if ((cmp(out,elt))==0) break; \
} \
} while(0)
Definition at line 374 of file utlist.h.
| #define LL_SEARCH_SCALAR |
( |
|
head, |
|
|
|
out, |
|
|
|
field, |
|
|
|
val |
|
) |
| |
Value:do { \
LL_FOREACH(head,out) { \
if ((out)->field == (val)) break; \
} \
} while(0)
Definition at line 367 of file utlist.h.
| #define LL_SORT |
( |
|
list, |
|
|
|
cmp |
|
) |
| |
| #define UTLIST_VERSION 1.9.1 |