php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
avl.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_AVL_H
8#define LEXBOR_AVL_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/base.h"
15#include "lexbor/core/dobject.h"
16
17
18typedef struct lexbor_avl lexbor_avl_t;
20
23 lexbor_avl_node_t *node, void *ctx);
24
34
39
40
43
45lexbor_avl_init(lexbor_avl_t *avl, size_t chunk_len, size_t struct_size);
46
47LXB_API void
49
51lexbor_avl_destroy(lexbor_avl_t *avl, bool self_destroy);
52
53
55lexbor_avl_node_make(lexbor_avl_t *avl, size_t type, void *value);
56
57LXB_API void
59
62 bool self_destroy);
63
64
67 size_t type, void *value);
68
71
72LXB_API void *
74
75LXB_API void
77 lexbor_avl_node_t *node);
78
81 lexbor_avl_node_f cb, void *ctx);
82
83LXB_API void
85 lexbor_avl_node_f callback, void *ctx);
86
87
88#ifdef __cplusplus
89} /* extern "C" */
90#endif
91
92#endif /* LEXBOR_AVL_H */
char * cb
Definition assert.c:26
zval callback
Definition assert.c:25
struct lexbor_avl_node lexbor_avl_node_t
Definition avl.h:19
LXB_API lexbor_avl_node_t * lexbor_avl_search(lexbor_avl_t *avl, lexbor_avl_node_t *scope, size_t type)
Definition avl.c:437
lxb_status_t(* lexbor_avl_node_f)(lexbor_avl_t *avl, lexbor_avl_node_t **root, lexbor_avl_node_t *node, void *ctx)
Definition avl.h:22
LXB_API void lexbor_avl_clean(lexbor_avl_t *avl)
Definition avl.c:68
LXB_API lxb_status_t lexbor_avl_foreach(lexbor_avl_t *avl, lexbor_avl_node_t **scope, lexbor_avl_node_f cb, void *ctx)
Definition avl.c:455
LXB_API void lexbor_avl_remove_by_node(lexbor_avl_t *avl, lexbor_avl_node_t **root, lexbor_avl_node_t *node)
Definition avl.c:426
LXB_API void * lexbor_avl_remove(lexbor_avl_t *avl, lexbor_avl_node_t **scope, size_t type)
Definition avl.c:399
LXB_API void lexbor_avl_foreach_recursion(lexbor_avl_t *avl, lexbor_avl_node_t *scope, lexbor_avl_node_f callback, void *ctx)
Definition avl.c:557
LXB_API void lexbor_avl_node_clean(lexbor_avl_node_t *node)
Definition avl.c:105
LXB_API lexbor_avl_t * lexbor_avl_create(void)
Definition avl.c:39
LXB_API lexbor_avl_node_t * lexbor_avl_insert(lexbor_avl_t *avl, lexbor_avl_node_t **scope, size_t type, void *value)
Definition avl.c:258
LXB_API lexbor_avl_node_t * lexbor_avl_node_make(lexbor_avl_t *avl, size_t type, void *value)
Definition avl.c:91
LXB_API lexbor_avl_t * lexbor_avl_destroy(lexbor_avl_t *avl, bool self_destroy)
Definition avl.c:76
LXB_API lexbor_avl_node_t * lexbor_avl_node_destroy(lexbor_avl_t *avl, lexbor_avl_node_t *node, bool self_destroy)
Definition avl.c:111
struct lexbor_avl lexbor_avl_t
Definition avl.h:18
LXB_API lxb_status_t lexbor_avl_init(lexbor_avl_t *avl, size_t chunk_len, size_t struct_size)
Definition avl.c:45
#define LXB_API
Definition def.h:48
zend_ffi_type * type
Definition ffi.c:3812
lexbor_avl_node_t * left
Definition avl.h:30
void * value
Definition avl.h:28
short height
Definition avl.h:27
lexbor_avl_node_t * parent
Definition avl.h:32
size_t type
Definition avl.h:26
lexbor_avl_node_t * right
Definition avl.h:31
lexbor_avl_node_t * last_right
Definition avl.h:37
lexbor_dobject_t * nodes
Definition avl.h:36
unsigned int lxb_status_t
Definition types.h:28
value
new_op_array scope