2025-02-16 08:42:02 +00:00
|
|
|
#ifndef STRING_TABLE_H_
|
|
|
|
|
#define STRING_TABLE_H_
|
|
|
|
|
|
|
|
|
|
#include <blue/core/btree.h>
|
|
|
|
|
|
2025-02-23 20:52:59 +00:00
|
|
|
struct string_table_entry {
|
|
|
|
|
b_btree_node e_hash_node;
|
|
|
|
|
b_btree_node e_offset_node;
|
|
|
|
|
size_t e_hash;
|
|
|
|
|
size_t e_offset;
|
|
|
|
|
char e_str[];
|
|
|
|
|
};
|
|
|
|
|
|
2025-02-16 08:42:02 +00:00
|
|
|
struct string_table {
|
|
|
|
|
b_btree s_hash_tree;
|
|
|
|
|
b_btree s_offset_tree;
|
|
|
|
|
size_t s_next_offset;
|
2025-02-23 20:52:59 +00:00
|
|
|
size_t s_nr_entries;
|
2025-02-16 08:42:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern void string_table_init(struct string_table *out);
|
|
|
|
|
extern void string_table_finish(struct string_table *tab);
|
|
|
|
|
|
|
|
|
|
extern size_t string_table_get(struct string_table *tab, const char *s);
|
|
|
|
|
|
|
|
|
|
#endif
|