mie: update bluelib api usage
This commit is contained in:
35
mie/name.c
35
mie/name.c
@@ -1,5 +1,5 @@
|
||||
#include <blue/core/rope.h>
|
||||
#include <blue/object/string.h>
|
||||
#include <blue/ds/string.h>
|
||||
#include <mie/name.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -25,11 +25,12 @@ static struct mie_name_bucket *create_bucket(void)
|
||||
|
||||
static void destroy_bucket(struct mie_name_bucket *bucket)
|
||||
{
|
||||
b_queue_iterator it;
|
||||
b_queue_iterator_begin(&bucket->b_names, &it);
|
||||
b_queue_entry *entry = b_queue_first(&bucket->b_names);
|
||||
|
||||
while (b_queue_iterator_is_valid(&it)) {
|
||||
b_queue_iterator_erase(&it);
|
||||
while (entry) {
|
||||
b_queue_entry *next = b_queue_next(entry);
|
||||
b_queue_delete(&bucket->b_names, entry);
|
||||
entry = next;
|
||||
}
|
||||
|
||||
free(bucket);
|
||||
@@ -48,19 +49,20 @@ struct mie_name_map *mie_name_map_create(void)
|
||||
|
||||
void mie_name_map_destroy(struct mie_name_map *map)
|
||||
{
|
||||
b_btree_iterator it;
|
||||
b_btree_iterator_begin(&map->m_entries, &it);
|
||||
b_btree_node *node = b_btree_first(&map->m_entries);
|
||||
|
||||
while (b_btree_iterator_is_valid(&it)) {
|
||||
while (node) {
|
||||
struct mie_name_map_entry *entry
|
||||
= b_unbox(struct mie_name_map_entry, it.node, e_node);
|
||||
b_btree_iterator_erase(&it);
|
||||
|
||||
= b_unbox(struct mie_name_map_entry, node, e_node);
|
||||
b_btree_node *next = b_btree_next(node);
|
||||
b_btree_delete(&map->m_entries, node);
|
||||
if (entry->e_type == MIE_NAME_MAP_E_BUCKET) {
|
||||
struct mie_name_bucket *bucket
|
||||
= (struct mie_name_bucket *)entry;
|
||||
destroy_bucket(bucket);
|
||||
}
|
||||
|
||||
node = next;
|
||||
}
|
||||
|
||||
free(map);
|
||||
@@ -69,14 +71,17 @@ void mie_name_map_destroy(struct mie_name_map *map)
|
||||
static b_status put_name_in_bucket(
|
||||
struct mie_name_bucket *bucket, struct mie_name *name)
|
||||
{
|
||||
b_queue_iterator it;
|
||||
b_queue_foreach (&it, &bucket->b_names) {
|
||||
b_queue_entry *entry = b_queue_first(&bucket->b_names);
|
||||
|
||||
while (entry) {
|
||||
struct mie_name *cur = (struct mie_name *)b_unbox(
|
||||
struct mie_name_map_entry, it.entry, e_entry);
|
||||
struct mie_name_map_entry, entry, e_entry);
|
||||
|
||||
if (!strcmp(cur->n_str, name->n_str)) {
|
||||
return B_ERR_NAME_EXISTS;
|
||||
}
|
||||
|
||||
entry = b_queue_next(entry);
|
||||
}
|
||||
|
||||
b_queue_push_back(&bucket->b_names, &name->n_base.e_entry);
|
||||
@@ -181,7 +186,7 @@ struct mie_name *mie_name_map_put(
|
||||
b_rope_to_cstr(&unique_name, str, sizeof str);
|
||||
|
||||
entry->n_str = str;
|
||||
entry->n_base.e_hash = b_hash_string(str);
|
||||
entry->n_base.e_hash = b_hash_cstr(str);
|
||||
b_status status = put_name(map, entry);
|
||||
|
||||
if (B_OK(status)) {
|
||||
|
||||
Reference in New Issue
Block a user