Skip to content
This repository was archived by the owner on Feb 5, 2019. It is now read-only.

Commit 1628e86

Browse files
committed
Add rb_empty().
1 parent 3a81cbd commit 1628e86

File tree

2 files changed

+16
-0
lines changed
  • include/jemalloc/internal
  • test/unit

2 files changed

+16
-0
lines changed

include/jemalloc/internal/rb.h

+13
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ struct { \
158158
#define rb_proto(a_attr, a_prefix, a_rbt_type, a_type) \
159159
a_attr void \
160160
a_prefix##new(a_rbt_type *rbtree); \
161+
a_attr bool \
162+
a_prefix##empty(a_rbt_type *rbtree); \
161163
a_attr a_type * \
162164
a_prefix##first(a_rbt_type *rbtree); \
163165
a_attr a_type * \
@@ -224,6 +226,13 @@ a_prefix##reverse_iter(a_rbt_type *rbtree, a_type *start, \
224226
* Args:
225227
* tree: Pointer to an uninitialized red-black tree object.
226228
*
229+
* static bool
230+
* ex_empty(ex_t *tree);
231+
* Description: Determine whether tree is empty.
232+
* Args:
233+
* tree: Pointer to an initialized red-black tree object.
234+
* Ret: True if tree is empty, false otherwise.
235+
*
227236
* static ex_node_t *
228237
* ex_first(ex_t *tree);
229238
* static ex_node_t *
@@ -309,6 +318,10 @@ a_attr void \
309318
a_prefix##new(a_rbt_type *rbtree) { \
310319
rb_new(a_type, a_field, rbtree); \
311320
} \
321+
a_attr bool \
322+
a_prefix##empty(a_rbt_type *rbtree) { \
323+
return (rbtree->rbt_root == &rbtree->rbt_nil); \
324+
} \
312325
a_attr a_type * \
313326
a_prefix##first(a_rbt_type *rbtree) { \
314327
a_type *ret; \

test/unit/rb.c

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ TEST_BEGIN(test_rb_empty)
4949

5050
tree_new(&tree);
5151

52+
assert_true(tree_empty(&tree), "Tree should be empty");
5253
assert_ptr_null(tree_first(&tree), "Unexpected node");
5354
assert_ptr_null(tree_last(&tree), "Unexpected node");
5455

@@ -265,6 +266,8 @@ TEST_BEGIN(test_rb_random)
265266
assert_u_eq(tree_iterate_reverse(&tree), k+1,
266267
"Unexpected node iteration count");
267268

269+
assert_false(tree_empty(&tree),
270+
"Tree should not be empty");
268271
assert_ptr_not_null(tree_first(&tree),
269272
"Tree should not be empty");
270273
assert_ptr_not_null(tree_last(&tree),

0 commit comments

Comments
 (0)