#define CHASH_PARAM_NAME NCDStringIndex__Hash
#define CHASH_PARAM_ENTRY struct NCDStringIndex__entry
#define CHASH_PARAM_LINK NCD_string_id_t
#define CHASH_PARAM_KEY NCDStringIndex_hash_key
#define CHASH_PARAM_ARG NCDStringIndex_hash_arg
#define CHASH_PARAM_NULL ((NCD_string_id_t)-1)
#define CHASH_PARAM_DEREF(arg, link) (&(arg)[(link)])
#define CHASH_PARAM_ENTRYHASH(arg, entry) badvpn_djb2_hash_bin((const uint8_t *)(entry).ptr->str, (entry).ptr->str_len)
#define CHASH_PARAM_KEYHASH(arg, key) badvpn_djb2_hash_bin((const uint8_t *)(key).str, (key).len)
#define CHASH_PARAM_ENTRYHASH_IS_CHEAP 0
#define CHASH_PARAM_COMPARE_ENTRIES(arg, entry1, entry2) ((entry1).ptr->str_len == (entry2).ptr->str_len && !memcmp((entry1).ptr->str, (entry2).ptr->str, (entry1).ptr->str_len))
#define CHASH_PARAM_COMPARE_KEY_ENTRY(arg, key1, entry2) ((key1).len == (entry2).ptr->str_len && !memcmp((key1).str, (entry2).ptr->str, (key1).len))
#define CHASH_PARAM_ENTRY_NEXT hash_next
