mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-22 20:02:27 +08:00
rbtree: Rename find header in find control
Simplify _RBTree_Find_control(). Avoid superfluous NULL pointer checks.
This commit is contained in:
@@ -369,13 +369,13 @@ RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_peek_max(
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc _RBTree_Find_header()
|
||||
* @copydoc _RBTree_Find_control()
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_header(
|
||||
rtems_rbtree_node *the_node
|
||||
RTEMS_INLINE_ROUTINE rtems_rbtree_control *rtems_rbtree_find_control(
|
||||
const rtems_rbtree_node *the_node
|
||||
)
|
||||
{
|
||||
return _RBTree_Find_header( the_node );
|
||||
return _RBTree_Find_control( the_node );
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -431,19 +431,28 @@ RTEMS_INLINE_ROUTINE bool _RBTree_Is_root(
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Find the RBTree_Control header given a node in the tree.
|
||||
* @brief Finds the red-black tree control given a node in the tree.
|
||||
*
|
||||
* This function returns a pointer to the header of the Red Black
|
||||
* Tree containing @a the_node if it exists, and NULL if not.
|
||||
* In case the node is not a node of a tree, then this function yields
|
||||
* unpredictable results.
|
||||
*
|
||||
* @param[in] the_node The node of interest.
|
||||
*
|
||||
* @return The red-black tree control of the node.
|
||||
*/
|
||||
RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_header(
|
||||
RBTree_Node *the_node
|
||||
)
|
||||
RTEMS_INLINE_ROUTINE RBTree_Control *_RBTree_Find_control(
|
||||
const RBTree_Node *the_node
|
||||
)
|
||||
{
|
||||
if(!the_node) return NULL;
|
||||
if(!(the_node->parent)) return NULL;
|
||||
while(the_node->parent) the_node = the_node->parent;
|
||||
return (RBTree_Control*)the_node;
|
||||
RBTree_Node *parent = the_node->parent;
|
||||
RBTree_Control *rbtree;
|
||||
|
||||
do {
|
||||
rbtree = (RBTree_Control *) parent;
|
||||
parent = parent->parent;
|
||||
} while ( parent != NULL );
|
||||
|
||||
return rbtree;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -580,8 +580,8 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
}
|
||||
|
||||
p = rb_find_unique(&rbtree1, &search_node.Node);
|
||||
puts( "INIT - Verify rtems_rbtree_find_header" );
|
||||
if (rtems_rbtree_find_header(p) != &rbtree1) {
|
||||
puts( "INIT - Verify rtems_rbtree_find_control" );
|
||||
if (rtems_rbtree_find_control(p) != &rbtree1) {
|
||||
puts ("INIT - ERROR ON RBTREE HEADER MISMATCH");
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
@@ -620,11 +620,6 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
if (rtems_rbtree_find_header(NULL) != NULL) {
|
||||
puts ("INIT - ERROR ON RBTREE HEADER MISMATCH");
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
puts("INIT - Insert 20 random numbers");
|
||||
for (i = 0; i < 20; i++) {
|
||||
node_array[i].id = numbers[i];
|
||||
|
||||
@@ -18,7 +18,7 @@ INIT - Removing 100 nodes
|
||||
INIT - Verify rtems_rbtree_get_max with 100 nodes value [0,99]
|
||||
INIT - Verify rtems_rbtree_find
|
||||
INIT - Verify rtems_rbtree_predecessor/successor
|
||||
INIT - Verify rtems_rbtree_find_header
|
||||
INIT - Verify rtems_rbtree_find_control
|
||||
INIT - Removing 100 nodes
|
||||
INIT - Insert 20 random numbers
|
||||
INIT - Removing 20 nodes
|
||||
|
||||
Reference in New Issue
Block a user