18#define LEXBOR_HASH_SHORT_SIZE 16
19#define LEXBOR_HASH_TABLE_MIN_SIZE 32
25#ifndef LEXBOR_HASH_EXTERN
void * lexbor_dobject_calloc(lexbor_dobject_t *dobject)
void * lexbor_dobject_free(lexbor_dobject_t *dobject, void *data)
lxb_inline size_t lexbor_dobject_allocated(lexbor_dobject_t *dobject)
LXB_API const lexbor_hash_search_t * lexbor_hash_search_lower
LXB_API const lexbor_hash_search_t * lexbor_hash_search_raw
LXB_API const lexbor_hash_insert_t * lexbor_hash_insert_lower
LXB_API const lexbor_hash_search_t * lexbor_hash_search_upper
LXB_API const lexbor_hash_insert_t * lexbor_hash_insert_raw
LXB_API const lexbor_hash_insert_t * lexbor_hash_insert_upper
lxb_inline lexbor_mraw_t * lexbor_hash_mraw(const lexbor_hash_t *hash)
LXB_API lexbor_hash_t * lexbor_hash_create(void)
LXB_API uint32_t lexbor_hash_make_id_upper(const lxb_char_t *key, size_t length)
lxb_status_t(* lexbor_hash_copy_f)(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lxb_char_t *key, size_t size)
LXB_API void * lexbor_hash_search_by_hash_id(lexbor_hash_t *hash, uint32_t hash_id, const lxb_char_t *key, size_t length, const lexbor_hash_cmp_f cmp_func)
struct lexbor_hash_search lexbor_hash_search_t
LXB_API lexbor_hash_t * lexbor_hash_destroy(lexbor_hash_t *hash, bool destroy_obj)
lxb_inline lexbor_hash_entry_t * lexbor_hash_entry_destroy(lexbor_hash_t *hash, lexbor_hash_entry_t *entry)
LXB_API uint32_t lexbor_hash_make_id_lower(const lxb_char_t *key, size_t length)
bool(* lexbor_hash_cmp_f)(const lxb_char_t *first, const lxb_char_t *second, size_t size)
uint32_t(* lexbor_hash_id_f)(const lxb_char_t *key, size_t size)
LXB_API void lexbor_hash_clean(lexbor_hash_t *hash)
LXB_API void * lexbor_hash_search(lexbor_hash_t *hash, const lexbor_hash_search_t *search, const lxb_char_t *key, size_t length)
LXB_API lxb_status_t lexbor_hash_copy(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lxb_char_t *key, size_t length)
lxb_inline lxb_char_t * lexbor_hash_entry_str(const lexbor_hash_entry_t *entry)
LXB_API uint32_t lexbor_hash_make_id(const lxb_char_t *key, size_t length)
struct lexbor_hash lexbor_hash_t
LXB_API void * lexbor_hash_insert(lexbor_hash_t *hash, const lexbor_hash_insert_t *insert, const lxb_char_t *key, size_t length)
lxb_inline size_t lexbor_hash_entries_count(lexbor_hash_t *hash)
LXB_API lxb_status_t lexbor_hash_copy_lower(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lxb_char_t *key, size_t length)
lxb_inline void lexbor_hash_entry_str_free(lexbor_hash_t *hash, lexbor_hash_entry_t *entry)
lxb_inline lexbor_hash_entry_t * lexbor_hash_entry_create(lexbor_hash_t *hash)
LXB_API void lexbor_hash_remove_by_hash_id(lexbor_hash_t *hash, uint32_t hash_id, const lxb_char_t *key, size_t length, const lexbor_hash_cmp_f cmp_func)
lxb_inline lxb_char_t * lexbor_hash_entry_str_set(lexbor_hash_entry_t *entry, lxb_char_t *data, size_t length)
LXB_API void lexbor_hash_remove(lexbor_hash_t *hash, const lexbor_hash_search_t *search, const lxb_char_t *key, size_t length)
struct lexbor_hash_entry lexbor_hash_entry_t
struct lexbor_hash_insert lexbor_hash_insert_t
LXB_API lxb_status_t lexbor_hash_init(lexbor_hash_t *hash, size_t table_size, size_t struct_size)
LXB_API void * lexbor_hash_insert_by_entry(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lexbor_hash_search_t *search, const lxb_char_t *key, size_t length)
#define LEXBOR_HASH_SHORT_SIZE
LXB_API lxb_status_t lexbor_hash_copy_upper(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, const lxb_char_t *key, size_t length)
hash(string $algo, string $data, bool $binary=false, array $options=[])
void * lexbor_mraw_free(lexbor_mraw_t *mraw, void *data)
unsigned char key[REFLECTION_KEY_LEN]
union lexbor_hash_entry::@035143052233045245065130050150326123154202375277 u
lxb_char_t short_str[LEXBOR_HASH_SHORT_SIZE+1]
lexbor_hash_entry_t * next
lexbor_dobject_t * entries
lexbor_hash_entry_t ** table
unsigned int lxb_status_t