44 lines
810 B
C
44 lines
810 B
C
#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;
|
|
size_t m_next_id;
|
|
};
|
|
|
|
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
|