inline void init_shallow (void)
{
in_error = false;
- population = 0;
- occupancy = 0;
+ population = occupancy = 0;
mask = 0;
prime = 0;
items = nullptr;
item_t *old_items = items;
/* Switch to new, empty, array. */
- population = 0;
- occupancy = 0;
+ population = occupancy = 0;
mask = new_size - 1;
prime = prime_for (power);
items = new_items;
static const hb_codepoint_t INVALID = HB_MAP_VALUE_INVALID;
+ inline void clear (void)
+ {
+ memset (items, 0xFF, ((size_t) mask + 1) * sizeof (item_t));
+ population = occupancy = 0;
+ }
+
+ inline bool is_empty (void) const
+ {
+ return population != 0;
+ }
+
+ inline unsigned int get_population () const
+ {
+ return population;
+ }
+
protected:
static HB_INTERNAL unsigned int prime_for (unsigned int shift);
}
+/**
+ * hb_map_clear:
+ * @map: a map.
+ *
+ *
+ *
+ * Since: REPLACEME
+ **/
+void
+hb_map_clear (hb_map_t *map)
+{
+ return map->clear ();
+}
+
+/**
+ * hb_map_is_empty:
+ * @map: a map.
+ *
+ *
+ *
+ * Since: REPLACEME
+ **/
+hb_bool_t
+hb_map_is_empty (const hb_map_t *map)
+{
+ return map->is_empty ();
+}
+
+/**
+ * hb_map_get_population:
+ * @map: a map.
+ *
+ *
+ *
+ * Since: REPLACEME
+ **/
+unsigned int
+hb_map_get_population (const hb_map_t *map)
+{
+ return map->get_population ();
+}
+
+
/* Following comment and table copied from glib. */
/* Each table size has an associated prime modulo (the first prime
* lower than the table size) used to find the initial bucket. Probing
hb_map_allocation_successful (const hb_map_t *map);
/*
- HB_EXTERN void
- hb_map_clear (hb_map_t *map);
-
- HB_EXTERN hb_bool_t
- hb_map_is_empty (const hb_map_t *map);
-
- HB_EXTERN unsigned int
- hb_map_get_population (const hb_map_t *map);
HB_EXTERN hb_bool_t
hb_map_is_equal (const hb_map_t *map,
*/
HB_EXTERN void
+hb_map_clear (hb_map_t *map);
+
+HB_EXTERN hb_bool_t
+hb_map_is_empty (const hb_map_t *map);
+
+HB_EXTERN unsigned int
+hb_map_get_population (const hb_map_t *map);
+
+HB_EXTERN void
hb_map_set (hb_map_t *map,
hb_codepoint_t key,
hb_codepoint_t value);