From 4f27990acf19285948333da6b3d663abdf2117c9 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Sun, 6 Nov 2011 13:03:24 -0800 Subject: [PATCH] abt: New function abt_is_empty(). --- src/libpspp/abt.h | 11 +++++++++++ tests/libpspp/abt-test.c | 1 + 2 files changed, 12 insertions(+) diff --git a/src/libpspp/abt.h b/src/libpspp/abt.h index 0e5b25281e..f97d957e52 100644 --- a/src/libpspp/abt.h +++ b/src/libpspp/abt.h @@ -145,6 +145,7 @@ code and links to other resources, such as the original AA tree paper. */ +#include #include #include "libpspp/cast.h" @@ -186,6 +187,8 @@ struct abt void abt_init (struct abt *, abt_compare_func *, abt_reaugment_func *, const void *aux); +static inline bool abt_is_empty (const struct abt *); + struct abt_node *abt_insert (struct abt *, struct abt_node *); void abt_insert_after (struct abt *, const struct abt_node *, struct abt_node *); @@ -203,4 +206,12 @@ void abt_reaugmented (const struct abt *, struct abt_node *); struct abt_node *abt_changed (struct abt *, struct abt_node *); void abt_moved (struct abt *, struct abt_node *); +/* Returns true if ABT contains no nodes, false if ABT contains at least one + node. */ +static inline bool +abt_is_empty (const struct abt *abt) +{ + return abt->root == NULL; +} + #endif /* libpspp/abt.h */ diff --git a/tests/libpspp/abt-test.c b/tests/libpspp/abt-test.c index eae7d46787..3e68637a5b 100644 --- a/tests/libpspp/abt-test.c +++ b/tests/libpspp/abt-test.c @@ -371,6 +371,7 @@ check_abt (struct abt *abt, const int data[], size_t cnt) check (abt_node_to_element (p)->data == order[cnt - i - 1]); check (p == NULL); } + check (abt_is_empty (abt) == (cnt == 0)); free (order); } -- 2.30.2