forked from Imagelibrary/rtems
rbtree: Remove superfluous NULL pointer checks
This commit is contained in:
@@ -229,10 +229,9 @@ RBTree_Node *_RBTree_Find(
|
|||||||
* @param[in] is_unique If true, then reject nodes with a duplicate key, else
|
* @param[in] is_unique If true, then reject nodes with a duplicate key, else
|
||||||
* otherwise.
|
* otherwise.
|
||||||
*
|
*
|
||||||
* @retval 0 Successfully inserted.
|
* @retval NULL Successfully inserted.
|
||||||
* @retval -1 NULL @a the_node.
|
* @retval existing_node This is a unique insert and there exists a node with
|
||||||
* @retval RBTree_Node* if one with equal value to @a the_node 's key exists
|
* an equal key in the tree already.
|
||||||
* in an unique @a the_rbtree.
|
|
||||||
*/
|
*/
|
||||||
RBTree_Node *_RBTree_Insert(
|
RBTree_Node *_RBTree_Insert(
|
||||||
RBTree_Control *the_rbtree,
|
RBTree_Control *the_rbtree,
|
||||||
@@ -481,25 +480,32 @@ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Successor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the first node.
|
* @brief Gets a node with an extremal key value.
|
||||||
*
|
*
|
||||||
* This function removes the minimum or maximum node from the_rbtree and
|
* This function extracts a node with the minimum or maximum key value from
|
||||||
* returns a pointer to that node.
|
* tree and returns a pointer to that node if it exists. In case multiple
|
||||||
|
* nodes with an extremal key value exist, then they are extracted in FIFO
|
||||||
|
* order.
|
||||||
*
|
*
|
||||||
* @param[in] the_rbtree is the rbtree to attempt to get the min node from.
|
* @param[in] the_rbtree The red-black tree control.
|
||||||
* @param[in] dir specifies whether to get minimum (0) or maximum (1)
|
* @param[in] dir Specifies whether to get a node with the minimum (RBT_LEFT)
|
||||||
|
* or maximum (RBT_RIGHT) key value.
|
||||||
*
|
*
|
||||||
* @return This method returns the min or max node on the rbtree, or NULL.
|
* @retval NULL The tree is empty.
|
||||||
*
|
* @retval extremal_node A node with the minimal or maximal key value on the
|
||||||
* @note This routine may return NULL if the RBTree is empty.
|
* tree.
|
||||||
*/
|
*/
|
||||||
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get(
|
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Get(
|
||||||
RBTree_Control *the_rbtree,
|
RBTree_Control *the_rbtree,
|
||||||
RBTree_Direction dir
|
RBTree_Direction dir
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
RBTree_Node *the_node = the_rbtree->first[dir];
|
RBTree_Node *the_node = the_rbtree->first[ dir ];
|
||||||
_RBTree_Extract(the_rbtree, the_node);
|
|
||||||
|
if ( the_node != NULL ) {
|
||||||
|
_RBTree_Extract( the_rbtree, the_node );
|
||||||
|
}
|
||||||
|
|
||||||
return the_node;
|
return the_node;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,6 @@ void _RBTree_Initialize(
|
|||||||
size_t count;
|
size_t count;
|
||||||
RBTree_Node *next;
|
RBTree_Node *next;
|
||||||
|
|
||||||
/* TODO: Error message? */
|
|
||||||
if ( !the_rbtree )
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* could do sanity checks here */
|
/* could do sanity checks here */
|
||||||
_RBTree_Initialize_empty( the_rbtree );
|
_RBTree_Initialize_empty( the_rbtree );
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <rtems/score/rbtreeimpl.h>
|
#include <rtems/score/rbtreeimpl.h>
|
||||||
#include <rtems/score/isr.h>
|
|
||||||
|
|
||||||
/** @brief Validate and fix-up tree properties after deleting a node
|
/** @brief Validate and fix-up tree properties after deleting a node
|
||||||
*
|
*
|
||||||
@@ -91,13 +90,6 @@ static void _RBTree_Extract_validate( RBTree_Node *the_node )
|
|||||||
the_node->color = RBT_BLACK;
|
the_node->color = RBT_BLACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Extract a Node (unprotected)
|
|
||||||
*
|
|
||||||
* This routine extracts (removes) @a the_node from @a the_rbtree.
|
|
||||||
*
|
|
||||||
* @note It does NOT disable interrupts to ensure the atomicity
|
|
||||||
* of the extract operation.
|
|
||||||
*/
|
|
||||||
void _RBTree_Extract(
|
void _RBTree_Extract(
|
||||||
RBTree_Control *the_rbtree,
|
RBTree_Control *the_rbtree,
|
||||||
RBTree_Node *the_node
|
RBTree_Node *the_node
|
||||||
@@ -107,9 +99,6 @@ void _RBTree_Extract(
|
|||||||
RBTree_Color victim_color;
|
RBTree_Color victim_color;
|
||||||
RBTree_Direction dir;
|
RBTree_Direction dir;
|
||||||
|
|
||||||
if ( !the_node )
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* check if min needs to be updated */
|
/* check if min needs to be updated */
|
||||||
if ( the_node == the_rbtree->first[ RBT_LEFT ] ) {
|
if ( the_node == the_rbtree->first[ RBT_LEFT ] ) {
|
||||||
RBTree_Node *next;
|
RBTree_Node *next;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <rtems/score/rbtreeimpl.h>
|
#include <rtems/score/rbtreeimpl.h>
|
||||||
#include <rtems/score/isr.h>
|
|
||||||
|
|
||||||
/** @brief Validate and fix-up tree properties for a new insert/colored node
|
/** @brief Validate and fix-up tree properties for a new insert/colored node
|
||||||
*
|
*
|
||||||
@@ -67,9 +66,6 @@ RBTree_Node *_RBTree_Insert(
|
|||||||
bool is_unique
|
bool is_unique
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ( !the_node )
|
|
||||||
return (RBTree_Node *) -1;
|
|
||||||
|
|
||||||
RBTree_Node *iter_node = the_rbtree->root;
|
RBTree_Node *iter_node = the_rbtree->root;
|
||||||
|
|
||||||
if ( !iter_node ) { /* special case: first node inserted */
|
if ( !iter_node ) { /* special case: first node inserted */
|
||||||
|
|||||||
@@ -149,9 +149,6 @@ rtems_task Init(
|
|||||||
rb_insert_unique( &rbtree1, &node1.Node );
|
rb_insert_unique( &rbtree1, &node1.Node );
|
||||||
rb_insert_unique( &rbtree1, &node2.Node );
|
rb_insert_unique( &rbtree1, &node2.Node );
|
||||||
|
|
||||||
p = rb_insert_unique( &rbtree1, NULL );
|
|
||||||
if (p != (void *)(-1))
|
|
||||||
puts( "INIT - FAILED NULL NODE INSERT" );
|
|
||||||
|
|
||||||
_RBTree_Rotate(NULL, RBT_LEFT);
|
_RBTree_Rotate(NULL, RBT_LEFT);
|
||||||
i = (node1.Node.parent == &node2.Node);
|
i = (node1.Node.parent == &node2.Node);
|
||||||
|
|||||||
Reference in New Issue
Block a user