[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)
|
inline void init_shallow (void)
|
||||||
{
|
{
|
||||||
in_error = false;
|
in_error = false;
|
||||||
population = 0;
|
population = occupancy = 0;
|
||||||
occupancy = 0;
|
|
||||||
mask = 0;
|
mask = 0;
|
||||||
prime = 0;
|
prime = 0;
|
||||||
items = nullptr;
|
items = nullptr;
|
||||||
|
@ -105,8 +104,7 @@ struct hb_map_t
|
||||||
item_t *old_items = items;
|
item_t *old_items = items;
|
||||||
|
|
||||||
/* Switch to new, empty, array. */
|
/* Switch to new, empty, array. */
|
||||||
population = 0;
|
population = occupancy = 0;
|
||||||
occupancy = 0;
|
|
||||||
mask = new_size - 1;
|
mask = new_size - 1;
|
||||||
prime = prime_for (power);
|
prime = prime_for (power);
|
||||||
items = new_items;
|
items = new_items;
|
||||||
|
@ -167,6 +165,22 @@ struct hb_map_t
|
||||||
|
|
||||||
static const hb_codepoint_t INVALID = HB_MAP_VALUE_INVALID;
|
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:
|
protected:
|
||||||
static HB_INTERNAL unsigned int prime_for (unsigned int shift);
|
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. */
|
/* Following comment and table copied from glib. */
|
||||||
/* Each table size has an associated prime modulo (the first prime
|
/* Each table size has an associated prime modulo (the first prime
|
||||||
* lower than the table size) used to find the initial bucket. Probing
|
* 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_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_EXTERN hb_bool_t
|
||||||
hb_map_is_equal (const hb_map_t *map,
|
hb_map_is_equal (const hb_map_t *map,
|
||||||
const hb_map_t *other);
|
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_EXTERN void
|
||||||
hb_map_set (hb_map_t *map,
|
hb_map_set (hb_map_t *map,
|
||||||
hb_codepoint_t key,
|
hb_codepoint_t key,
|
||||||
|
|
Loading…
Reference in New Issue