summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/rbtreefind.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/score/src/rbtreefind.c')
-rw-r--r--cpukit/score/src/rbtreefind.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/cpukit/score/src/rbtreefind.c b/cpukit/score/src/rbtreefind.c
index 4aaf236430..ad0c9fdf80 100644
--- a/cpukit/score/src/rbtreefind.c
+++ b/cpukit/score/src/rbtreefind.c
@@ -18,28 +18,30 @@
#endif
#include <rtems/score/rbtreeimpl.h>
-#include <rtems/score/isr.h>
RBTree_Node *_RBTree_Find(
const RBTree_Control *the_rbtree,
- const RBTree_Node *the_node
+ const RBTree_Node *the_node,
+ RBTree_Compare compare,
+ bool is_unique
)
{
RBTree_Node* iter_node = the_rbtree->root;
RBTree_Node* found = NULL;
- int compare_result;
- while (iter_node) {
- compare_result = the_rbtree->compare_function(the_node, iter_node);
+
+ while ( iter_node != NULL ) {
+ int compare_result = ( *compare )( the_node, iter_node );
+ RBTree_Direction dir;
+
if ( _RBTree_Is_equal( compare_result ) ) {
found = iter_node;
- if ( the_rbtree->is_unique )
+ if ( is_unique )
break;
}
- RBTree_Direction dir =
- (RBTree_Direction) _RBTree_Is_greater( compare_result );
- iter_node = iter_node->child[dir];
- } /* while(iter_node) */
+ dir = (RBTree_Direction) _RBTree_Is_greater( compare_result );
+ iter_node = iter_node->child[ dir ];
+ }
return found;
}