php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
bst.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#ifndef LEXBOR_BST_H
8#define LEXBOR_BST_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include <string.h>
15
16#include "lexbor/core/base.h"
17#include "lexbor/core/dobject.h"
18
19
20#define lexbor_bst_root(bst) (bst)->root
21#define lexbor_bst_root_ref(bst) &((bst)->root)
22
23
25typedef struct lexbor_bst lexbor_bst_t;
26
27typedef bool (*lexbor_bst_entry_f)(lexbor_bst_t *bst,
28 lexbor_bst_entry_t *entry, void *ctx);
29
40
47
48
51
54
55LXB_API void
57
59lexbor_bst_destroy(lexbor_bst_t *bst, bool self_destroy);
60
63
66 size_t size, void *value);
67
70 size_t size);
71
72
75
78 size_t size);
79
80
81LXB_API void *
83
84LXB_API void *
86 size_t size, size_t *found_size);
87
88LXB_API void *
90 lexbor_bst_entry_t **root);
91
92
93LXB_API void
95
96LXB_API void
98 lexbor_callback_f callback, void *ctx, size_t tabs);
99
100
101#ifdef __cplusplus
102} /* extern "C" */
103#endif
104
105#endif /* LEXBOR_BST_H */
106
107
108
zval callback
Definition assert.c:25
LXB_API lexbor_bst_entry_t * lexbor_bst_search_close(lexbor_bst_t *bst, lexbor_bst_entry_t *scope, size_t size)
Definition bst.c:206
LXB_API lexbor_bst_t * lexbor_bst_create(void)
Definition bst.c:12
LXB_API lexbor_bst_t * lexbor_bst_destroy(lexbor_bst_t *bst, bool self_destroy)
Definition bst.c:55
LXB_API lexbor_bst_entry_t * lexbor_bst_entry_make(lexbor_bst_t *bst, size_t size)
Definition bst.c:71
LXB_API void lexbor_bst_clean(lexbor_bst_t *bst)
Definition bst.c:44
LXB_API lexbor_bst_entry_t * lexbor_bst_search(lexbor_bst_t *bst, lexbor_bst_entry_t *scope, size_t size)
Definition bst.c:188
LXB_API void * lexbor_bst_remove_close(lexbor_bst_t *bst, lexbor_bst_entry_t **root, size_t size, size_t *found_size)
Definition bst.c:248
struct lexbor_bst lexbor_bst_t
Definition bst.h:25
LXB_API lexbor_bst_entry_t * lexbor_bst_insert(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size, void *value)
Definition bst.c:86
LXB_API void * lexbor_bst_remove_by_pointer(lexbor_bst_t *bst, lexbor_bst_entry_t *entry, lexbor_bst_entry_t **root)
Definition bst.c:287
bool(* lexbor_bst_entry_f)(lexbor_bst_t *bst, lexbor_bst_entry_t *entry, void *ctx)
Definition bst.h:27
LXB_API void lexbor_bst_serialize(lexbor_bst_t *bst, lexbor_callback_f callback, void *ctx)
Definition bst.c:408
LXB_API lexbor_bst_entry_t * lexbor_bst_insert_not_exists(lexbor_bst_t *bst, lexbor_bst_entry_t **scope, size_t size)
Definition bst.c:145
LXB_API void lexbor_bst_serialize_entry(lexbor_bst_entry_t *entry, lexbor_callback_f callback, void *ctx, size_t tabs)
Definition bst.c:414
struct lexbor_bst_entry lexbor_bst_entry_t
Definition bst.h:24
LXB_API void * lexbor_bst_remove(lexbor_bst_t *bst, lexbor_bst_entry_t **root, size_t size)
Definition bst.c:228
LXB_API lxb_status_t lexbor_bst_init(lexbor_bst_t *bst, size_t size)
Definition bst.c:18
#define LXB_API
Definition def.h:48
new_type size
Definition ffi.c:4365
Definition bst.h:30
void * value
Definition bst.h:31
lexbor_bst_entry_t * parent
Definition bst.h:36
lexbor_bst_entry_t * right
Definition bst.h:33
lexbor_bst_entry_t * left
Definition bst.h:34
lexbor_bst_entry_t * next
Definition bst.h:35
size_t size
Definition bst.h:38
size_t tree_length
Definition bst.h:45
lexbor_dobject_t * dobject
Definition bst.h:42
lexbor_bst_entry_t * root
Definition bst.h:43
unsigned int lxb_status_t
Definition types.h:28
lxb_status_t(* lexbor_callback_f)(const lxb_char_t *buffer, size_t size, void *ctx)
Definition types.h:31
value
new_op_array scope