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

index d73245084178025d2f550c47af66487590310b7a..437b2bdba5a7aad4ad301f672fc3681b5f2010fd 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2008 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -32,7 +32,7 @@ hmapx_destroy (struct hmapx *map)
 {
   if (map != NULL) 
     {
-      if (hmapx_count (map) > 0) 
+      if (!(hmapx_is_empty (map)))
         {
           struct hmapx_node *node, *next;
           for (node = hmapx_first (map); node != NULL; node = next)
index 32a4452fe2417d58157ca8da27e079f2052fcc88..d463504a52de33ca1a1cc45bde187dfaaadd71f7 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2008 Free Software Foundation, Inc.
+   Copyright (C) 2008, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -165,6 +165,7 @@ static inline struct hmapx_node *hmapx_next (const struct hmapx *,
                                              const struct hmapx_node *);
 
 /* Counting. */
+static inline bool hmapx_is_empty (const struct hmapx *);
 static inline size_t hmapx_count (const struct hmapx *);
 static inline size_t hmapx_capacity (const struct hmapx *);
 
@@ -404,6 +405,14 @@ hmapx_next (const struct hmapx *map, const struct hmapx_node *node)
   return HMAP_NEXT (node, struct hmapx_node, hmap_node, &map->hmap);
 }
 
+/* Returns true if MAP currently contains no data items, false
+   otherwise. */
+static inline bool
+hmapx_is_empty (const struct hmapx *map)
+{
+  return hmap_is_empty (&map->hmap);
+}
+
 /* Returns the number of data items currently in MAP. */
 static inline size_t
 hmapx_count (const struct hmapx *map) 
index fc08ca6161040a89d1c54574cb6f6ec2866886fb..5ad5d5723fcbc128645552ced1fb6de2a07c4dff 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2007, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -262,6 +262,7 @@ check_hmapx (struct hmapx *hmapx, const int data[], size_t cnt,
   size_t i, j;
   int *order;
 
+  check (hmapx_is_empty (hmapx) == (cnt == 0));
   check (hmapx_count (hmapx) == cnt);
   check (cnt <= hmapx_capacity (hmapx));