Add mp_map_deinit() & mp_map_free() to finalize maps.

mp_map_deinit() finalizes static map, mp_map_free() - dynamic.
This commit is contained in:
Paul Sokolovsky 2014-01-25 00:02:20 +02:00
parent fcd4ae8271
commit 9a24a0465f
2 changed files with 13 additions and 0 deletions

View File

@ -40,6 +40,17 @@ mp_map_t *mp_map_new(int n) {
return map; return map;
} }
// Differentiate from mp_map_clear() - semantics is different
void mp_map_deinit(mp_map_t *map) {
m_del(mp_map_elem_t, map->table, map->alloc);
map->used = map->alloc = 0;
}
void mp_map_free(mp_map_t *map) {
mp_map_deinit(map);
m_del_obj(mp_map_t, map);
}
void mp_map_clear(mp_map_t *map) { void mp_map_clear(mp_map_t *map) {
map->used = 0; map->used = 0;
map->all_keys_are_qstrs = 1; map->all_keys_are_qstrs = 1;

View File

@ -28,6 +28,8 @@ typedef enum _mp_map_lookup_kind_t {
int get_doubling_prime_greater_or_equal_to(int x); int get_doubling_prime_greater_or_equal_to(int x);
void mp_map_init(mp_map_t *map, int n); void mp_map_init(mp_map_t *map, int n);
mp_map_t *mp_map_new(int n); mp_map_t *mp_map_new(int n);
void mp_map_deinit(mp_map_t *map);
void mp_map_free(mp_map_t *map);
mp_map_elem_t* mp_map_lookup(mp_map_t *map, mp_obj_t index, mp_map_lookup_kind_t lookup_kind); mp_map_elem_t* mp_map_lookup(mp_map_t *map, mp_obj_t index, mp_map_lookup_kind_t lookup_kind);
void mp_map_clear(mp_map_t *map); void mp_map_clear(mp_map_t *map);