Asterisk - The Open Source Telephony Project
21.4.1
|
RBTree functions implementing astobj2 containers. More...
#include "asterisk.h"
#include "asterisk/_private.h"
#include "asterisk/astobj2.h"
#include "asterisk/utils.h"
#include "astobj2_private.h"
#include "astobj2_container_private.h"
Go to the source code of this file.
Data Structures | |
struct | ao2_container_rbtree |
struct | rbtree_node |
struct | rbtree_traversal_state |
struct | rbtree_traversal_state_check |
Enumerations | |
enum | empty_node_direction { GO_LEFT, GO_RIGHT } |
enum | equal_node_bias { BIAS_FIRST, BIAS_EQUAL, BIAS_LAST } |
Functions | |
struct ao2_container * | __ao2_container_alloc_rbtree (unsigned int ao2_options, unsigned int container_options, ao2_sort_fn *sort_fn, ao2_callback_fn *cmp_fn, const char *tag, const char *file, int line, const char *func) |
static struct ao2_container * | rb_ao2_alloc_empty_clone (struct ao2_container_rbtree *self, const char *tag, const char *file, int line, const char *func) |
static struct ao2_container * | rb_ao2_container_init (struct ao2_container_rbtree *self, unsigned int options, ao2_sort_fn *sort_fn, ao2_callback_fn *cmp_fn) |
Initialize a rbtree container. More... | |
static void | rb_ao2_destroy (struct ao2_container_rbtree *self) |
static struct rbtree_node * | rb_ao2_find_first (struct ao2_container_rbtree *self, enum search_flags flags, void *arg, struct rbtree_traversal_state *state) |
static struct rbtree_node * | rb_ao2_find_next (struct ao2_container_rbtree *self, struct rbtree_traversal_state *state, struct rbtree_node *prev) |
static enum ao2_container_insert | rb_ao2_insert_node (struct ao2_container_rbtree *self, struct rbtree_node *node) |
static struct rbtree_node * | rb_ao2_iterator_next (struct ao2_container_rbtree *self, struct rbtree_node *node, enum ao2_iterator_flags flags) |
static struct rbtree_node * | rb_ao2_new_node (struct ao2_container_rbtree *self, void *obj_new, const char *tag, const char *file, int line, const char *func) |
static void | rb_ao2_node_destructor (void *v_doomed) |
static void | rb_delete_fixup (struct ao2_container_rbtree *self, struct rbtree_node *child) |
static void | rb_delete_node (struct ao2_container_rbtree *self, struct rbtree_node *doomed) |
static enum empty_node_direction | rb_find_empty_direction (struct rbtree_node *empty, ao2_sort_fn *sort_fn, void *obj_right, enum search_flags flags, enum equal_node_bias bias) |
static struct rbtree_node * | rb_find_initial (struct ao2_container_rbtree *self, void *obj_right, enum search_flags flags, enum equal_node_bias bias) |
static void | rb_insert_fixup (struct ao2_container_rbtree *self, struct rbtree_node *node) |
static struct rbtree_node * | rb_node_most_left (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_most_right (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_next (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_next_full (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_post (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_pre (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_prev (struct rbtree_node *node) |
static struct rbtree_node * | rb_node_prev_full (struct rbtree_node *node) |
static void | rb_rotate_left (struct ao2_container_rbtree *self, struct rbtree_node *node) |
static void | rb_rotate_right (struct ao2_container_rbtree *self, struct rbtree_node *node) |
Variables | |
static const struct ao2_container_methods | v_table_rbtree |
RBTree functions implementing astobj2 containers.
Definition in file astobj2_rbtree.c.
enum equal_node_bias |
Enumerator | |
---|---|
BIAS_FIRST |
Bias search toward first matching node in the container. |
BIAS_EQUAL |
Bias search toward any matching node. |
BIAS_LAST |
Bias search toward last matching node in the container. |
Definition at line 96 of file astobj2_rbtree.c.
|
static |
Initialize a rbtree container.
self | Container to initialize. |
options | Container behaviour options (See enum ao2_container_opts) |
sort_fn | Pointer to a sort function. |
cmp_fn | Pointer to a compare function used by ao2_find. |
Definition at line 2003 of file astobj2_rbtree.c.
References ast_atomic_fetchadd_int(), ao2_container::cmp_fn, ao2_container::options, ao2_container::sort_fn, and v_table_rbtree.
|
static |
< Node's right child.
Definition at line 457 of file astobj2_rbtree.c.
References rbtree_node::left, rbtree_node::parent, and rbtree_node::right.
|
static |
< Node's left child.
Definition at line 510 of file astobj2_rbtree.c.
References rbtree_node::left, rbtree_node::parent, and rbtree_node::right.
|
static |
rbtree container virtual method table.
Definition at line 1978 of file astobj2_rbtree.c.
Referenced by rb_ao2_container_init().