diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-07-12 14:22:22 -0500 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-07-15 10:03:48 -0500 |
commit | 64939bc9efcaf945b493e9c371901de33c3868a3 (patch) | |
tree | e196959688afe714c8c334f93598cb99234970e4 /cpukit/score/src/rbtreefind.c | |
parent | rbtree: Delete unused functions (diff) | |
download | rtems-64939bc9efcaf945b493e9c371901de33c3868a3.tar.bz2 |
rbtree: Reduce RBTree_Control size
Remove compare function and is unique indicator from the control
structure. Rename RBTree_Compare_function to RBTree_Compare. Rename
rtems_rbtree_compare_function to rtems_rbtree_compare. Provide C++
compatible initializers. Add compare function and is unique indicator
to _RBTree_Find(), _RBTree_Insert(), rtems_rbtree_find() and
rtems_rbtree_insert(). Remove _RBTree_Is_unique() and
rtems_rbtree_is_unique(). Remove compare function and is unique
indicator from _RBTree_Initialize_empty() and
rtems_rbtree_initialize_empty().
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/src/rbtreefind.c | 22 |
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; } |