[map] Add clear(), is_empty(), and get_population()
This commit is contained in:
parent
b6959c33e2
commit
661e9ae4a5
|
@ -66,8 +66,7 @@ struct hb_map_t
|
|||
inline void init_shallow (void)
|
||||
{
|
||||
in_error = false;
|
||||
population = 0;
|
||||
occupancy = 0;
|
||||
population = occupancy = 0;
|
||||
mask = 0;
|
||||
prime = 0;
|
||||
items = nullptr;
|
||||
|
@ -105,8 +104,7 @@ struct hb_map_t
|
|||
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;
|
||||
|
@ -167,6 +165,22 @@ struct hb_map_t
|
|||
|
||||
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);
|
||||
|
||||
|
|
|
@ -228,6 +228,49 @@ hb_map_has (const hb_map_t *map,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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
|
||||
|
|
17
src/hb-map.h
17
src/hb-map.h
|
@ -73,20 +73,21 @@ HB_EXTERN hb_bool_t
|
|||
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,
|
||||
const hb_map_t *other);
|
||||
*/
|
||||
|
||||
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,
|
||||
|
|
Loading…
Reference in New Issue