74 if (new_entry ==
NULL) {
92 if (new_entry ==
NULL) {
108 while (entry !=
NULL) {
114 entry->
next = new_entry;
121 entry->
right = new_entry;
122 new_entry->
parent = entry;
127 entry = entry->
right;
131 entry->
left = new_entry;
132 new_entry->
parent = entry;
158 while (entry !=
NULL) {
170 entry = entry->
right;
232 while (entry !=
NULL) {
237 entry = entry->
right;
249 size_t size,
size_t *found_size)
254 while (entry !=
NULL) {
257 *found_size = entry->
size;
263 entry = entry->
right;
272 if (found_size !=
NULL) {
273 *found_size =
max->size;
279 if (found_size !=
NULL) {
323 *root = entry->
right;
390 left->right->parent = entry;
425 for (
size_t i = 0; i < tabs; i++) {
438 for (
size_t i = 0; i < tabs; i++) {
449 for (
size_t i = 0; i < tabs; i++) {
462 for (
size_t i = 0; i < tabs; i++) {
void * lexbor_bst_remove_by_pointer(lexbor_bst_t *bst, lexbor_bst_entry_t *entry, lexbor_bst_entry_t **root)
void lexbor_bst_serialize_entry(lexbor_bst_entry_t *entry, lexbor_callback_f callback, void *ctx, size_t tabs)
lexbor_bst_t * lexbor_bst_create(void)
lxb_status_t lexbor_bst_init(lexbor_bst_t *bst, size_t size)
void lexbor_bst_serialize(lexbor_bst_t *bst, lexbor_callback_f callback, void *ctx)
lexbor_bst_entry_t * lexbor_bst_entry_make(lexbor_bst_t *bst, size_t size)
void * lexbor_bst_remove(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size)
void * lexbor_bst_remove_close(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size, size_t *found_size)
lexbor_bst_entry_t * lexbor_bst_insert(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size, void *value)
lexbor_bst_entry_t * lexbor_bst_search(lexbor_bst_t *bst, lexbor_bst_entry_t *scope, size_t size)
lexbor_bst_t * lexbor_bst_destroy(lexbor_bst_t *bst, bool self_destroy)
void lexbor_bst_clean(lexbor_bst_t *bst)
lexbor_bst_entry_t * lexbor_bst_insert_not_exists(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size)
lexbor_bst_entry_t * lexbor_bst_search_close(lexbor_bst_t *bst, lexbor_bst_entry_t *scope, size_t size)
struct lexbor_bst lexbor_bst_t
struct lexbor_bst_entry lexbor_bst_entry_t
size_t lexbor_conv_int64_to_data(int64_t num, lxb_char_t *buf, size_t len)
@ LXB_STATUS_ERROR_OBJECT_IS_NULL
@ LXB_STATUS_ERROR_WRONG_ARGS
void * lexbor_dobject_calloc(lexbor_dobject_t *dobject)
lxb_status_t lexbor_dobject_init(lexbor_dobject_t *dobject, size_t chunk_size, size_t struct_size)
void lexbor_dobject_clean(lexbor_dobject_t *dobject)
lexbor_dobject_t * lexbor_dobject_destroy(lexbor_dobject_t *dobject, bool destroy_self)
void * lexbor_dobject_free(lexbor_dobject_t *dobject, void *data)
lexbor_dobject_t * lexbor_dobject_create(void)
LXB_API void * lexbor_free(void *dst)
LXB_API void * lexbor_calloc(size_t num, size_t size)
lexbor_bst_entry_t * parent
lexbor_bst_entry_t * right
lexbor_bst_entry_t * left
lexbor_bst_entry_t * next
lexbor_dobject_t * dobject
lexbor_bst_entry_t * root
unsigned int lxb_status_t
lxb_status_t(* lexbor_callback_f)(const lxb_char_t *buffer, size_t size, void *ctx)