summaryrefslogtreecommitdiffstats
path: root/share/man/man3/queue.3
diff options
context:
space:
mode:
authorarchie <archie@FreeBSD.org>2000-05-01 18:22:59 +0000
committerarchie <archie@FreeBSD.org>2000-05-01 18:22:59 +0000
commitc0981040e1e4620bf72d66d5c07e753171b9ea41 (patch)
tree74f2f0ef22b52f6d61225b02ec60623fbd6d27b9 /share/man/man3/queue.3
parent0a725efcf4b081aadadcacda0fb6bb49f018146f (diff)
downloadFreeBSD-src-c0981040e1e4620bf72d66d5c07e753171b9ea41.zip
FreeBSD-src-c0981040e1e4620bf72d66d5c07e753171b9ea41.tar.gz
Document TAILQ_FOREACH_REVERSE() and CIRCLEQ_FOREACH_REVERSE() macros.
Submitted by: Jake Burkholder <jburkhol@home.com>
Diffstat (limited to 'share/man/man3/queue.3')
-rw-r--r--share/man/man3/queue.325
1 files changed, 24 insertions, 1 deletions
diff --git a/share/man/man3/queue.3 b/share/man/man3/queue.3
index b1769db..ac8416c 100644
--- a/share/man/man3/queue.3
+++ b/share/man/man3/queue.3
@@ -75,6 +75,7 @@
.Nm TAILQ_ENTRY ,
.Nm TAILQ_FIRST ,
.Nm TAILQ_FOREACH ,
+.Nm TAILQ_FOREACH_REVERSE ,
.Nm TAILQ_HEAD ,
.Nm TAILQ_INIT ,
.Nm TAILQ_INSERT_AFTER ,
@@ -89,6 +90,7 @@
.Nm CIRCLEQ_ENTRY ,
.Nm CIRCLEQ_FIRST ,
.Nm CIRCLEQ_FOREACH ,
+.Nm CIRCLEQ_FOREACH_REVERSE ,
.Nm CIRCLEQ_HEAD ,
.Nm CIRCLEQ_INIT ,
.Nm CIRCLEQ_INSERT_AFTER ,
@@ -146,6 +148,7 @@ lists, tail queues, and circular queues
.Fn TAILQ_ENTRY "TYPE"
.Fn TAILQ_FIRST "TAILQ_HEAD *head"
.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME"
+.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME"
.Fn TAILQ_HEAD "HEADNAME" "TYPE"
.Fn TAILQ_INIT "TAILQ_HEAD *head"
.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
@@ -161,6 +164,7 @@ lists, tail queues, and circular queues
.Fn CIRCLEQ_ENTRY "TYPE"
.Fn CIRCLEQ_FIRST "CIRCLEQ_HEAD *head"
.Fn CIRCLEQ_FOREACH "TYPE *var" "CIRCLEQ_HEAD *head" "CIRCLEQ_ENTRY NAME"
+.Fn CIRCLEQ_FOREACH_REVERSE "TYPE *var" "CIRCLEQ_HEAD *head" "CIRCLEQ_ENTRY NAME"
.Fn CIRCLEQ_HEAD "HEADNAME" "TYPE"
.Fn CIRCLEQ_INIT "CIRCLEQ_HEAD *head"
.Fn CIRCLEQ_INSERT_AFTER "CIRCLEQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "CIRCLEQ_ENTRY NAME"
@@ -239,6 +243,8 @@ Tail queues add the following functionality:
.Bl -enum -compact -offset indent
.It
Entries can be added at the end of a list.
+.It
+They may be traversed backwards, from tail to head.
.El
However:
.Bl -enum -compact -offset indent
@@ -764,6 +770,13 @@ in the forward direction, assigning each element in turn to
.Fa var .
.Pp
The macro
+.Nm TAILQ_FOREACH_REVERSE
+traverses the tail queue referenced by
+.Fa head
+in the reverse direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macro
.Nm TAILQ_INIT
initializes the tail queue referenced by
.Fa head .
@@ -842,6 +855,9 @@ free(n2);
/* Forward traversal. */
TAILQ_FOREACH(np, &head, entries)
np-> ...
+ /* Reverse traversal. */
+TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries)
+ np-> ...
/* TailQ Deletion. */
while (!TAILQ_EMPTY(head)) {
n1 = TAILQ_FIRST(&head);
@@ -914,6 +930,13 @@ in the forward direction, assigning each element in turn to
.Fa var .
.Pp
The macro
+.Nm CICRLEQ_FOREACH_REVERSE
+traverses the circle queue referenced by
+.Fa head
+in the reverse direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macro
.Nm CIRCLEQ_INIT
initializes the circular queue referenced by
.Fa head .
@@ -991,7 +1014,7 @@ free(n1);
CIRCLEQ_FOREACH(np, &head, entries)
np-> ...
/* Reverse traversal. */
-for (np = CIRCLEQ_LAST(&head); np != (void *)&head; np = CIRCLEQ_PREV(np->entries))
+CIRCLEQ_FOREACH_REVERSE(np, &head, entries)
np-> ...
/* CircleQ Deletion. */
while (CIRCLEQ_FIRST(&head) != (void *)&head) {
OpenPOWER on IntegriCloud