diff options
author | glebius <glebius@FreeBSD.org> | 2014-01-22 09:59:49 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2014-01-22 09:59:49 +0000 |
commit | 018ed48113affc5ff79e5b82502a8b79a3d6bb3d (patch) | |
tree | 738b987352c9b6844642da77b7929887f6fc49be /share | |
parent | 4277478f017262f678ac26ec79b1f68b11449241 (diff) | |
download | FreeBSD-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.3 | 18 |
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. |