summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/rbtreeiterate.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-10 10:54:22 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-04-11 11:24:18 +0200
commit112396dee10f7381e14cfa93922eb9dced2062c8 (patch)
treeb1ee0b2b2cfdbc0951feda6fa0d1f133cee257bd /cpukit/score/src/rbtreeiterate.c
parentrbtree: PR1995: API change (diff)
downloadrtems-112396dee10f7381e14cfa93922eb9dced2062c8.tar.bz2
rbtree: New function _RBTree_Iterate_unprotected()
Diffstat (limited to 'cpukit/score/src/rbtreeiterate.c')
-rw-r--r--cpukit/score/src/rbtreeiterate.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/cpukit/score/src/rbtreeiterate.c b/cpukit/score/src/rbtreeiterate.c
new file mode 100644
index 0000000000..33f7e7d454
--- /dev/null
+++ b/cpukit/score/src/rbtreeiterate.c
@@ -0,0 +1,45 @@
+/**
+ * @file
+ *
+ * @ingroup ScoreRBTree
+ *
+ * @brief _RBTree_Iterate_unprotected() implementation.
+ */
+
+/*
+ * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ */
+
+#if HAVE_CONFIG_H
+ #include "config.h"
+#endif
+
+#include <rtems/score/rbtree.h>
+
+void _RBTree_Iterate_unprotected(
+ const RBTree_Control *rbtree,
+ RBTree_Direction dir,
+ RBTree_Visitor visitor,
+ void *visitor_arg
+)
+{
+ RBTree_Direction opp_dir = _RBTree_Opposite_direction( dir );
+ const RBTree_Node *current = _RBTree_First( rbtree, opp_dir );
+ bool stop = false;
+
+ while ( !stop && current != NULL ) {
+ stop = (*visitor)( current, dir, visitor_arg );
+
+ current = _RBTree_Next_unprotected( rbtree, current, dir );
+ }
+}