mie: update bluelib api usage

This commit is contained in:
2025-11-06 10:38:50 +00:00
parent 06f384e089
commit 6d172e1dc0
19 changed files with 226 additions and 173 deletions

View File

@@ -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)) {