25#ifdef KAZLIB_SIDEEFFECT_DEBUG
38#define DICTCOUNT_T_MAX ULONG_MAX
47#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
64#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
81#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
127#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG)
128#ifdef KAZLIB_SIDEEFFECT_DEBUG
129#define dict_isfull(D) (SFX_CHECK(D)->dict_nodecount == (D)->dict_maxcount)
131#define dict_isfull(D) ((D)->dict_nodecount == (D)->dict_maxcount)
133#define dict_count(D) ((D)->dict_nodecount)
134#define dict_isempty(D) ((D)->dict_nodecount == 0)
135#define dnode_get(N) ((N)->dict_data)
136#define dnode_getkey(N) ((N)->dict_key)
137#define dnode_put(N, X) ((N)->dict_data = (X))
unsigned long dictcount_t
Definition: dict.h:37
struct dict_load_t dict_load_t
#define dnode_get(N)
Definition: dict.h:135
dnode_t * dict_lower_bound(dict_t *, const void *)
#define dict_count(D)
Definition: dict.h:133
void dict_load_begin(dict_load_t *, dict_t *)
void dict_load_next(dict_load_t *, dnode_t *, const void *)
dnode_t * dict_prev(dict_t *, dnode_t *)
Definition: dict.c:894
dict_t * dict_init(dict_t *, dictcount_t, dict_comp_t)
Definition: dict.c:323
void(* dnode_free_t)(dnode_t *, void *)
Definition: dict.h:61
void dict_merge(dict_t *, dict_t *)
dnode_t * dict_upper_bound(dict_t *, const void *)
dnode_t * dnode_create(void *)
Definition: dict.c:957
void dict_set_allocator(dict_t *, dnode_alloc_t, dnode_free_t, void *)
Definition: dict.c:271
void dnode_destroy(dnode_t *)
Definition: dict.c:978
#define dnode_getkey(N)
Definition: dict.h:136
#define dict_isempty(D)
Definition: dict.h:134
dnode_t * dict_lookup(dict_t *, const void *)
Definition: dict.c:438
dnode_t * dnode_init(dnode_t *, void *)
Definition: dict.c:969
void dict_init_like(dict_t *, const dict_t *)
void dict_delete_free(dict_t *, dnode_t *)
void dict_load_end(dict_load_t *)
void dict_free_nodes(dict_t *)
Definition: dict.c:298
#define dict_isfull(D)
Definition: dict.h:131
void dict_process(dict_t *, void *, dnode_process_t)
int dnode_is_in_a_dict(dnode_t *)
dnode_t * dict_last(dict_t *)
Definition: dict.c:852
dnode_t * dict_next(dict_t *, dnode_t *)
Definition: dict.c:869
int dict_alloc_insert(dict_t *, const void *, void *)
Definition: dict.c:813
void dict_insert(dict_t *, dnode_t *, const void *)
Definition: dict.c:542
#define dnode_put(N, X)
Definition: dict.h:137
dnode_t * dict_delete(dict_t *, dnode_t *)
void(* dnode_process_t)(dict_t *, dnode_t *, void *)
Definition: dict.h:78
dnode_color_t
Definition: dict.h:44
@ dnode_red
Definition: dict.h:44
@ dnode_black
Definition: dict.h:44
void dict_allow_dupes(dict_t *)
Definition: dict.c:915
dnode_t *(* dnode_alloc_t)(void *)
Definition: dict.h:60
int dict_verify(dict_t *)
void dict_destroy(dict_t *)
dict_t * dict_create(dictcount_t, dict_comp_t)
int dict_similar(const dict_t *, const dict_t *)
int dict_contains(dict_t *, dnode_t *)
Definition: dict.c:942
dnode_t * dict_first(dict_t *)
Definition: dict.c:837
int(* dict_comp_t)(const void *, const void *)
Definition: dict.h:59
dict_t * dict_dictptr
Definition: dict.h:82
dnode_t dict_nilnode
Definition: dict.h:83
dnode_t dict_nilnode
Definition: dict.h:65
dict_comp_t dict_compare
Definition: dict.h:68
dictcount_t dict_nodecount
Definition: dict.h:66
dnode_alloc_t dict_allocnode
Definition: dict.h:69
dictcount_t dict_maxcount
Definition: dict.h:67
int dict_dupes
Definition: dict.h:72
void * dict_context
Definition: dict.h:71
dnode_free_t dict_freenode
Definition: dict.h:70
const void * dict_key
Definition: dict.h:52
struct dnode_t * dict_right
Definition: dict.h:49
struct dnode_t * dict_left
Definition: dict.h:48
dnode_color_t dict_color
Definition: dict.h:51
struct dnode_t * dict_parent
Definition: dict.h:50
void * dict_data
Definition: dict.h:53