X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fhmap.h;h=c3cf62fa64815297ebcbb3e00a236644a3053a64;hb=4b938f84aa68af17d5f7487523ad2a478abb7b6d;hp=c9e764dec563a92df08491839259e5f061884963;hpb=cb586666724d5fcbdb658ce471b85484f0a7babe;p=pspp diff --git a/src/libpspp/hmap.h b/src/libpspp/hmap.h index c9e764dec5..c3cf62fa64 100644 --- a/src/libpspp/hmap.h +++ b/src/libpspp/hmap.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010, 2011 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 @@ -115,8 +115,9 @@ } */ +#include #include -#include +#include "libpspp/cast.h" /* Returns the data structure corresponding to the given NODE, assuming that NODE is embedded as the given MEMBER name in @@ -157,6 +158,7 @@ struct hmap /* Creation and destruction. */ void hmap_init (struct hmap *); void hmap_swap (struct hmap *, struct hmap *); +void hmap_clear (struct hmap *); void hmap_destroy (struct hmap *); /* Storage management. */ @@ -182,6 +184,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 *); @@ -245,7 +248,7 @@ static inline struct hmap_node *hmap_first_nonempty_bucket__ ( static inline size_t hmap_mask_to_capacity__ (size_t mask); /* Returns the hash value associated with NODE. */ -size_t +static inline size_t hmap_node_hash (const struct hmap_node *node) { return node->hash; @@ -442,6 +445,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)