summaryrefslogtreecommitdiffstats
path: root/cpukit/sapi/include/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-08-21 05:55:04 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-08-31 09:59:42 +0200
commitb9877ee03d8e8fad88ab42ccdcfc1a61b6801838 (patch)
tree5bcc6a1bbc93bdbfac69368783fac4b419ae4244 /cpukit/sapi/include/rtems
parentrbheap: Drop direction from _RBTree_Iterate() (diff)
downloadrtems-b9877ee03d8e8fad88ab42ccdcfc1a61b6801838.tar.bz2
rbtree: Delete _RBTree_Get()
This function has no internal use case.
Diffstat (limited to 'cpukit/sapi/include/rtems')
-rw-r--r--cpukit/sapi/include/rtems/rbtree.h42
1 files changed, 32 insertions, 10 deletions
diff --git a/cpukit/sapi/include/rtems/rbtree.h b/cpukit/sapi/include/rtems/rbtree.h
index 8ea3430429..4d8007356e 100644
--- a/cpukit/sapi/include/rtems/rbtree.h
+++ b/cpukit/sapi/include/rtems/rbtree.h
@@ -296,31 +296,53 @@ RTEMS_INLINE_ROUTINE void rtems_rbtree_extract(
}
/**
- * @brief Obtain the min node on a rbtree.
+ * @brief Gets a node with the minimum key value from the red-black tree.
*
- * This function removes the min node from @a the_rbtree and returns
- * a pointer to that node. If @a the_rbtree is empty, then NULL is returned.
+ * This function extracts a node with the minimum key value from
+ * tree and returns a pointer to that node if it exists. In case multiple
+ * nodes with a minimum key value exist, then they are extracted in FIFO order.
+ *
+ * @param[in] the_rbtree The red-black tree control.
+ *
+ * @retval NULL The tree is empty.
+ * @retval node A node with the minimal key value on the tree.
*/
-
RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_min(
rtems_rbtree_control *the_rbtree
)
{
- return _RBTree_Get( the_rbtree, RBT_LEFT );
+ rtems_rbtree_node *the_node = rtems_rbtree_min( the_rbtree );
+
+ if ( the_node != NULL ) {
+ rtems_rbtree_extract( the_rbtree, the_node );
+ }
+
+ return the_node;
}
/**
- * @brief Obtain the max node on a rbtree.
+ * @brief Gets a node with the maximal key value from the red-black tree.
*
- * This function removes the max node from @a the_rbtree and returns
- * a pointer to that node. If @a the_rbtree is empty, then NULL is returned.
+ * This function extracts a node with the maximum key value from tree and
+ * returns a pointer to that node if it exists. In case multiple nodes with a
+ * maximum key value exist, then they are extracted in LIFO order.
+ *
+ * @param[in] the_rbtree The red-black tree control.
+ *
+ * @retval NULL The tree is empty.
+ * @retval node A node with the maximal key value on the tree.
*/
-
RTEMS_INLINE_ROUTINE rtems_rbtree_node *rtems_rbtree_get_max(
rtems_rbtree_control *the_rbtree
)
{
- return _RBTree_Get( the_rbtree, RBT_RIGHT );
+ rtems_rbtree_node *the_node = rtems_rbtree_max( the_rbtree );
+
+ if ( the_node != NULL ) {
+ rtems_rbtree_extract( the_rbtree, the_node );
+ }
+
+ return the_node;
}
/**