hmap: New function hmap_is_empty().
authorBen Pfaff <blp@gnu.org>
Thu, 26 Nov 2009 05:18:50 +0000 (21:18 -0800)
committerBen Pfaff <blp@gnu.org>
Fri, 27 Nov 2009 18:59:30 +0000 (10:59 -0800)
src/libpspp/hmap.h
tests/libpspp/hmap-test.c

index c9e764dec563a92df08491839259e5f061884963..1592f803bedb17bd9c1ca4dc285f5bd6e72fd1c4 100644 (file)
        }
    */
 
+#include <stdbool.h>
 #include <stddef.h>
 #include <libpspp/cast.h>
 
@@ -182,6 +183,7 @@ static inline struct hmap_node *hmap_next (const struct hmap *,
                                            const struct hmap_node *);
 
 /* Counting. */
+static bool hmap_is_empty (const struct hmap *);
 static inline size_t hmap_count (const struct hmap *);
 static inline size_t hmap_capacity (const struct hmap *);
 
@@ -442,6 +444,14 @@ hmap_next (const struct hmap *map, const struct hmap_node *node)
           : hmap_first_nonempty_bucket__ (map, (node->hash & map->mask) + 1));
 }
 
+/* Returns true if MAP currently contains no data items, false
+   otherwise. */
+static inline bool
+hmap_is_empty (const struct hmap *map)
+{
+  return map->count == 0;
+}
+
 /* Returns the number of data items currently in MAP. */
 static inline size_t
 hmap_count (const struct hmap *map) 
index 3b3369061f704314d7dce339f961bcd4648abaaa..64511b7bbf1d1c7dafb79857fc811b014d6e9af2 100644 (file)
@@ -342,6 +342,7 @@ check_hmap (struct hmap *hmap, const int data[], size_t cnt,
   size_t i, j;
   int *order;
 
+  check (hmap_is_empty (hmap) == (cnt == 0));
   check (hmap_count (hmap) == cnt);
   check (cnt <= hmap_capacity (hmap));