The associative array is constructed over a path compressed trie. The trie is a character (byte) one, i.e. node selection uses 8 bits. Nodes having a common parent are stored as a sorted array - node selection is binary search derived. The trie is prefix compressed - common prefixes are stripped from path internal vertexes. When short enough, the internal vertexes are stored in place of the pointers that would otherwise point to them.
The trie cannot store binary keys (strings containing null characters).
The associative array is similar to one of the pointer value ones, save that the keys are stored in full and the value is of variable size.
See Inlined Radix Tree Associative Array.
General library:
See String Key Variable Size Value Array Library.
See String Key Variable Size Value Array Search Library.
call data structure size retriever:
int x1f4_call_sfnote(unsigned *);
case data structure state retriever:
int x1f4_case_sfnote(void *);
cast plain data deletion routine:
int x1f4_cast_sfnote(void *, const char *);
drop data deletion routine:
int x1f4_drop_sfnote
(void *, const char *, void *, int (*)(void *, void *));
ever record retriever:
int x1f4_ever_sfnote(void *, void **);
fast associative array constructor routine:
int x1f4_fast_sfnote(void *, unsigned, struct x1f4_sfnote_type *);
fgxq first greater search routine:
int x1f4_fgxq_sfnote
(void *, const char *, void **, const char **, unsigned *);
find plain search routine:
int x1f4_find_sfnote(void *, const char *, void **);
fini associative array regular destructor routine:
int x1f4_fini_sfnote(void **);
flat associative array destructor routine:
int x1f4_flat_sfnote(void *);
flow data structure integrity check routine:
int x1f4_flow_sfnote(void *);
fold record retriever:
int x1f4_fold_sfnote(void *, void **, const char **, unsigned *);
fxxq first greater or matching search routine:
int x1f4_fxxq_sfnote
(void *, const char *, void **, const char **, unsigned *);
high data purge routine:
int x1f4_high_sfnote(void *);
hike record retriever:
int x1f4_hike_sfnote(void *, void **, const char **, unsigned *);
init associative array regular constructor routine:
int x1f4_init_sfnote(void **, unsigned, struct x1f4_sfnote_type *);
join associative array consolidation routine:
int x1f4_join_sfnote(void *, void *);
lead record retriever:
int x1f4_lead_sfnote(void *, void **);
lime data traversal routine:
int x1f4_lime_sfnote(void *, void *, int (*)(void *, void *));
line data copy routine:
int x1f4_line_sfnote
(void *, void *, int (*)(void *, unsigned *, const void *),
int (*)(void *, void *, const void *), int (*)(void *, void *),
void *);
llxq last less search routine:
int x1f4_llxq_sfnote
(void *, const char *, void **, const char **, unsigned *);
lxxq last less or matching search routine:
int x1f4_lxxq_sfnote
(void *, const char *, void **, const char **, unsigned *);
mind data deletion routine:
int x1f4_mind_sfnote(void *);
note data traversal routine:
int x1f4_note_sfnote
(void *, void *, int (*)(void *, const char *, unsigned));
pass plain data deletion routine:
int x1f4_pass_sfnote(void *, const char *);
post plain data insertion routine:
int x1f4_post_sfnote(void *, const char *, unsigned, void **);
shut plain data deletion routine:
int x1f4_shut_sfnote
(void *, const char *, void *, int (*)(void *, void *));
skew memory allocator replacer routine:
int x1f4_skew_sfnote(void *, void *);
slip data deletion routine:
int x1f4_slip_sfnote(void *);
span data traversal routine:
int x1f4_span_sfnote
(void *, void *, int (*)(void *, void *, const char *, unsigned));
swap data swap routine:
int x1f4_swap_sfnote(void *, void *);
tear associative array partition routine:
int x1f4_tear_sfnote(void *, const char *, int, void *);
text plain copy routine:
int x1f4_text_sfnote
(void **, void *, int (*)(void *, unsigned *, const void *),
int (*)(void *, void *, const void *), int (*)(void *, void *),
void *);