summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-01-22 09:59:49 +0000
committerglebius <glebius@FreeBSD.org>2014-01-22 09:59:49 +0000
commit018ed48113affc5ff79e5b82502a8b79a3d6bb3d (patch)
tree738b987352c9b6844642da77b7929887f6fc49be /share
parent4277478f017262f678ac26ec79b1f68b11449241 (diff)
downloadFreeBSD-src-018ed48113affc5ff79e5b82502a8b79a3d6bb3d.zip
FreeBSD-src-018ed48113affc5ff79e5b82502a8b79a3d6bb3d.tar.gz
Merge 257643: Document RB_FOREACH_SAFE() and RB_FOREACH_REVERSE_SAFE().
Diffstat (limited to 'share')
-rw-r--r--share/man/man3/tree.318
1 files changed, 17 insertions, 1 deletions
diff --git a/share/man/man3/tree.3 b/share/man/man3/tree.3
index 351e935..e8ee4f7 100644
--- a/share/man/man3/tree.3
+++ b/share/man/man3/tree.3
@@ -30,7 +30,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd December 27, 2007
+.Dd November 4, 2013
.Dt TREE 3
.Os
.Sh NAME
@@ -70,7 +70,9 @@
.Nm RB_RIGHT ,
.Nm RB_PARENT ,
.Nm RB_FOREACH ,
+.Nm RB_FOREACH_SAFE ,
.Nm RB_FOREACH_REVERSE ,
+.Nm RB_FOREACH_REVERSE_SAFE ,
.Nm RB_INIT ,
.Nm RB_INSERT ,
.Nm RB_REMOVE
@@ -135,7 +137,9 @@
.Ft "struct TYPE *"
.Fn RB_PARENT "struct TYPE *elm" "RB_ENTRY NAME"
.Fn RB_FOREACH VARNAME NAME "RB_HEAD *head"
+.Fn RB_FOREACH_SAFE "VARNAME" "NAME" "RB_HEAD *head" "TEMP_VARNAME"
.Fn RB_FOREACH_REVERSE VARNAME NAME "RB_HEAD *head"
+.Fn RB_FOREACH_REVERSE_SAFE "VARNAME" "NAME" "RB_HEAD *head" "TEMP_VARNAME"
.Ft void
.Fn RB_INIT "RB_HEAD *head"
.Ft "struct TYPE *"
@@ -454,6 +458,18 @@ macro:
.Fn RB_FOREACH np NAME head
.Ed
.Pp
+The macros
+.Fn RB_FOREACH_SAFE
+and
+.Fn RB_FOREACH_REVERSE_SAFE
+traverse the tree referenced by head
+in a forward or reverse direction respectively,
+assigning each element in turn to np.
+However, unlike their unsafe counterparts,
+they permit both the removal of np
+as well as freeing it from within the loop safely
+without interfering with the traversal.
+.Pp
The
.Fn RB_EMPTY
macro should be used to check whether a red-black tree is empty.
OpenPOWER on IntegriCloud