field 131 libdb/queue.h #define SLIST_FOREACH(var, head, field) \ field 132 libdb/queue.h for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next) field 138 libdb/queue.h #define SLIST_INSERT_AFTER(slistelm, elm, field) do { \ field 139 libdb/queue.h (elm)->field.sle_next = (slistelm)->field.sle_next; \ field 140 libdb/queue.h (slistelm)->field.sle_next = (elm); \ field 143 libdb/queue.h #define SLIST_INSERT_HEAD(head, elm, field) do { \ field 144 libdb/queue.h (elm)->field.sle_next = (head)->slh_first; \ field 148 libdb/queue.h #define SLIST_NEXT(elm, field) ((elm)->field.sle_next) field 150 libdb/queue.h #define SLIST_REMOVE_HEAD(head, field) do { \ field 151 libdb/queue.h (head)->slh_first = (head)->slh_first->field.sle_next; \ field 154 libdb/queue.h #define SLIST_REMOVE(head, elm, type, field) do { \ field 156 libdb/queue.h SLIST_REMOVE_HEAD((head), field); \ field 160 libdb/queue.h while( curelm->field.sle_next != (elm) ) \ field 161 libdb/queue.h curelm = curelm->field.sle_next; \ field 162 libdb/queue.h curelm->field.sle_next = \ field 163 libdb/queue.h curelm->field.sle_next->field.sle_next; \ field 196 libdb/queue.h #define STAILQ_LAST(head, type, field) \ field 200 libdb/queue.h ((char *)((head)->stqh_last) - __offsetof(struct type, field)))) field 202 libdb/queue.h #define STAILQ_FOREACH(var, head, field) \ field 203 libdb/queue.h for((var) = (head)->stqh_first; (var); (var) = (var)->field.stqe_next) field 205 libdb/queue.h #define STAILQ_INSERT_HEAD(head, elm, field) do { \ field 206 libdb/queue.h if (((elm)->field.stqe_next = (head)->stqh_first) == NULL) \ field 207 libdb/queue.h (head)->stqh_last = &(elm)->field.stqe_next; \ field 211 libdb/queue.h #define STAILQ_INSERT_TAIL(head, elm, field) do { \ field 212 libdb/queue.h (elm)->field.stqe_next = NULL; \ field 214 libdb/queue.h (head)->stqh_last = &(elm)->field.stqe_next; \ field 217 libdb/queue.h #define STAILQ_INSERT_AFTER(head, tqelm, elm, field) do { \ field 218 libdb/queue.h if (((elm)->field.stqe_next = (tqelm)->field.stqe_next) == NULL)\ field 219 libdb/queue.h (head)->stqh_last = &(elm)->field.stqe_next; \ field 220 libdb/queue.h (tqelm)->field.stqe_next = (elm); \ field 223 libdb/queue.h #define STAILQ_NEXT(elm, field) ((elm)->field.stqe_next) field 225 libdb/queue.h #define STAILQ_REMOVE_HEAD(head, field) do { \ field 227 libdb/queue.h (head)->stqh_first->field.stqe_next) == NULL) \ field 231 libdb/queue.h #define STAILQ_REMOVE_HEAD_UNTIL(head, elm, field) do { \ field 232 libdb/queue.h if (((head)->stqh_first = (elm)->field.stqe_next) == NULL) \ field 236 libdb/queue.h #define STAILQ_REMOVE(head, elm, type, field) do { \ field 238 libdb/queue.h STAILQ_REMOVE_HEAD(head, field); \ field 242 libdb/queue.h while( curelm->field.stqe_next != (elm) ) \ field 243 libdb/queue.h curelm = curelm->field.stqe_next; \ field 244 libdb/queue.h if((curelm->field.stqe_next = \ field 245 libdb/queue.h curelm->field.stqe_next->field.stqe_next) == NULL) \ field 246 libdb/queue.h (head)->stqh_last = &(curelm)->field.stqe_next; \ field 275 libdb/queue.h #define LIST_FOREACH(var, head, field) \ field 276 libdb/queue.h for((var) = (head)->lh_first; (var); (var) = (var)->field.le_next) field 282 libdb/queue.h #define LIST_INSERT_AFTER(listelm, elm, field) do { \ field 283 libdb/queue.h if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \ field 284 libdb/queue.h (listelm)->field.le_next->field.le_prev = \ field 285 libdb/queue.h &(elm)->field.le_next; \ field 286 libdb/queue.h (listelm)->field.le_next = (elm); \ field 287 libdb/queue.h (elm)->field.le_prev = &(listelm)->field.le_next; \ field 290 libdb/queue.h #define LIST_INSERT_BEFORE(listelm, elm, field) do { \ field 291 libdb/queue.h (elm)->field.le_prev = (listelm)->field.le_prev; \ field 292 libdb/queue.h (elm)->field.le_next = (listelm); \ field 293 libdb/queue.h *(listelm)->field.le_prev = (elm); \ field 294 libdb/queue.h (listelm)->field.le_prev = &(elm)->field.le_next; \ field 297 libdb/queue.h #define LIST_INSERT_HEAD(head, elm, field) do { \ field 298 libdb/queue.h if (((elm)->field.le_next = (head)->lh_first) != NULL) \ field 299 libdb/queue.h (head)->lh_first->field.le_prev = &(elm)->field.le_next;\ field 301 libdb/queue.h (elm)->field.le_prev = &(head)->lh_first; \ field 304 libdb/queue.h #define LIST_NEXT(elm, field) ((elm)->field.le_next) field 306 libdb/queue.h #define LIST_REMOVE(elm, field) do { \ field 307 libdb/queue.h if ((elm)->field.le_next != NULL) \ field 308 libdb/queue.h (elm)->field.le_next->field.le_prev = \ field 309 libdb/queue.h (elm)->field.le_prev; \ field 310 libdb/queue.h *(elm)->field.le_prev = (elm)->field.le_next; \ field 336 libdb/queue.h #define TAILQ_FOREACH(var, head, field) \ field 337 libdb/queue.h for (var = TAILQ_FIRST(head); var; var = TAILQ_NEXT(var, field)) field 339 libdb/queue.h #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ field 342 libdb/queue.h (var) = TAILQ_PREV((var), headname, field)) field 349 libdb/queue.h #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) field 351 libdb/queue.h #define TAILQ_PREV(elm, headname, field) \ field 352 libdb/queue.h (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last)) field 359 libdb/queue.h #define TAILQ_INSERT_HEAD(head, elm, field) do { \ field 360 libdb/queue.h if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \ field 361 libdb/queue.h (head)->tqh_first->field.tqe_prev = \ field 362 libdb/queue.h &(elm)->field.tqe_next; \ field 364 libdb/queue.h (head)->tqh_last = &(elm)->field.tqe_next; \ field 366 libdb/queue.h (elm)->field.tqe_prev = &(head)->tqh_first; \ field 369 libdb/queue.h #define TAILQ_INSERT_TAIL(head, elm, field) do { \ field 370 libdb/queue.h (elm)->field.tqe_next = NULL; \ field 371 libdb/queue.h (elm)->field.tqe_prev = (head)->tqh_last; \ field 373 libdb/queue.h (head)->tqh_last = &(elm)->field.tqe_next; \ field 376 libdb/queue.h #define TAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ field 377 libdb/queue.h if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\ field 378 libdb/queue.h (elm)->field.tqe_next->field.tqe_prev = \ field 379 libdb/queue.h &(elm)->field.tqe_next; \ field 381 libdb/queue.h (head)->tqh_last = &(elm)->field.tqe_next; \ field 382 libdb/queue.h (listelm)->field.tqe_next = (elm); \ field 383 libdb/queue.h (elm)->field.tqe_prev = &(listelm)->field.tqe_next; \ field 386 libdb/queue.h #define TAILQ_INSERT_BEFORE(listelm, elm, field) do { \ field 387 libdb/queue.h (elm)->field.tqe_prev = (listelm)->field.tqe_prev; \ field 388 libdb/queue.h (elm)->field.tqe_next = (listelm); \ field 389 libdb/queue.h *(listelm)->field.tqe_prev = (elm); \ field 390 libdb/queue.h (listelm)->field.tqe_prev = &(elm)->field.tqe_next; \ field 393 libdb/queue.h #define TAILQ_REMOVE(head, elm, field) do { \ field 394 libdb/queue.h if (((elm)->field.tqe_next) != NULL) \ field 395 libdb/queue.h (elm)->field.tqe_next->field.tqe_prev = \ field 396 libdb/queue.h (elm)->field.tqe_prev; \ field 398 libdb/queue.h (head)->tqh_last = (elm)->field.tqe_prev; \ field 399 libdb/queue.h *(elm)->field.tqe_prev = (elm)->field.tqe_next; \ field 424 libdb/queue.h #define CIRCLEQ_FOREACH(var, head, field) \ field 427 libdb/queue.h (var) = (var)->field.cqe_next) field 429 libdb/queue.h #define CIRCLEQ_FOREACH_REVERSE(var, head, field) \ field 432 libdb/queue.h (var) = (var)->field.cqe_prev) field 439 libdb/queue.h #define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) do { \ field 440 libdb/queue.h (elm)->field.cqe_next = (listelm)->field.cqe_next; \ field 441 libdb/queue.h (elm)->field.cqe_prev = (listelm); \ field 442 libdb/queue.h if ((listelm)->field.cqe_next == (void *)(head)) \ field 445 libdb/queue.h (listelm)->field.cqe_next->field.cqe_prev = (elm); \ field 446 libdb/queue.h (listelm)->field.cqe_next = (elm); \ field 449 libdb/queue.h #define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) do { \ field 450 libdb/queue.h (elm)->field.cqe_next = (listelm); \ field 451 libdb/queue.h (elm)->field.cqe_prev = (listelm)->field.cqe_prev; \ field 452 libdb/queue.h if ((listelm)->field.cqe_prev == (void *)(head)) \ field 455 libdb/queue.h (listelm)->field.cqe_prev->field.cqe_next = (elm); \ field 456 libdb/queue.h (listelm)->field.cqe_prev = (elm); \ field 459 libdb/queue.h #define CIRCLEQ_INSERT_HEAD(head, elm, field) do { \ field 460 libdb/queue.h (elm)->field.cqe_next = (head)->cqh_first; \ field 461 libdb/queue.h (elm)->field.cqe_prev = (void *)(head); \ field 465 libdb/queue.h (head)->cqh_first->field.cqe_prev = (elm); \ field 469 libdb/queue.h #define CIRCLEQ_INSERT_TAIL(head, elm, field) do { \ field 470 libdb/queue.h (elm)->field.cqe_next = (void *)(head); \ field 471 libdb/queue.h (elm)->field.cqe_prev = (head)->cqh_last; \ field 475 libdb/queue.h (head)->cqh_last->field.cqe_next = (elm); \ field 481 libdb/queue.h #define CIRCLEQ_NEXT(elm,field) ((elm)->field.cqe_next) field 483 libdb/queue.h #define CIRCLEQ_PREV(elm,field) ((elm)->field.cqe_prev) field 485 libdb/queue.h #define CIRCLEQ_REMOVE(head, elm, field) do { \ field 486 libdb/queue.h if ((elm)->field.cqe_next == (void *)(head)) \ field 487 libdb/queue.h (head)->cqh_last = (elm)->field.cqe_prev; \ field 489 libdb/queue.h (elm)->field.cqe_next->field.cqe_prev = \ field 490 libdb/queue.h (elm)->field.cqe_prev; \ field 491 libdb/queue.h if ((elm)->field.cqe_prev == (void *)(head)) \ field 492 libdb/queue.h (head)->cqh_first = (elm)->field.cqe_next; \ field 494 libdb/queue.h (elm)->field.cqe_prev->field.cqe_next = \ field 495 libdb/queue.h (elm)->field.cqe_next; \