mie: add name_map to generate unique value names

This commit is contained in:
2025-04-11 13:40:37 +01:00
parent 8dd67501bd
commit 98d82de47a
3 changed files with 220 additions and 1 deletions

42
mie/include/mie/name.h Normal file
View File

@@ -0,0 +1,42 @@
#ifndef MIE_NAME_H_
#define MIE_NAME_H_
#include <blue/core/btree.h>
#include <blue/core/queue.h>
enum mie_name_map_entry_type {
MIE_NAME_MAP_E_NONE = 0,
MIE_NAME_MAP_E_NAME,
MIE_NAME_MAP_E_BUCKET,
};
struct mie_name_map_entry {
enum mie_name_map_entry_type e_type;
uint64_t e_hash;
union {
b_queue_entry e_entry;
b_btree_node e_node;
};
};
struct mie_name {
struct mie_name_map_entry n_base;
char *n_str;
};
struct mie_name_bucket {
struct mie_name_map_entry b_base;
b_queue b_names;
};
struct mie_name_map {
b_btree m_entries;
};
extern struct mie_name_map *mie_name_map_create(void);
extern void mie_name_map_destroy(struct mie_name_map *map);
extern struct mie_name *mie_name_map_put(
struct mie_name_map *map, struct mie_name *entry, const char *hint);
#endif