134 while (
node && found == 0) {
138 switch (cmp_cb(
node, search_data)) {
181 while (
node && found == 0) {
185 switch (cmp_cb(
node, search_data)) {
211 return (found == 1) ? (
node) : (
NULL);
222 if (cmp_cb ==
NULL) {
231 if (cmp_cb(
node, search_data) > 0) {
252 if (cmp_cb ==
NULL) {
261 if (cmp_cb(
node, search_data) < 0) {
287 return node->parent->parent;
297 return node->parent->right;
299 return node->parent->left;
541 if (cmp_cb ==
NULL) {
545 if (new_cb ==
NULL) {
560 switch (cmp_cb(parNode,
data)) {
567 node->parent = parNode;
576 node->parent = parNode;
DLRBT_Node *(* DLRBT_NAlloc_FP)(void *data)
void(* DLRBT_NFree_FP)(void *node)
void(* DLRBT_NUpdate_FP)(void *node, void *data)
short(* DLRBT_Comparator_FP)(void *node, void *data)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_dlrbTree_init(DLRBT_Tree *tree)
DLRBT_Tree * BLI_dlrbTree_new(void)
static void rotate_left(DLRBT_Tree *tree, DLRBT_Node *root)
DLRBT_Node * BLI_dlrbTree_search_exact(const DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
static void recursive_tree_free_nodes(DLRBT_Node *node, DLRBT_NFree_FP free_cb)
DLRBT_Node * BLI_dlrbTree_add(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, DLRBT_NAlloc_FP new_cb, DLRBT_NUpdate_FP update_cb, void *data)
DLRBT_Node * BLI_dlrbTree_search_prev(const DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
static void insert_check_1(DLRBT_Tree *tree, DLRBT_Node *node)
void BLI_dlrbTree_linkedlist_sync(DLRBT_Tree *tree)
DLRBT_Node * BLI_dlrbTree_search(const DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
static void rotate_right(DLRBT_Tree *tree, DLRBT_Node *root)
static DLRBT_Node * get_uncle(DLRBT_Node *node)
short BLI_dlrbTree_contains(DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
void BLI_dlrbTree_free(DLRBT_Tree *tree, DLRBT_NFree_FP free_cb)
void BLI_dlrbTree_insert(DLRBT_Tree *tree, DLRBT_Node *node)
static void insert_check_2(DLRBT_Tree *tree, DLRBT_Node *node)
DLRBT_Node * BLI_dlrbTree_search_next(const DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
static void insert_check_3(DLRBT_Tree *tree, DLRBT_Node *node)
static void linkedlist_sync_add_node(DLRBT_Tree *tree, DLRBT_Node *node)
static DLRBT_Node * get_grandparent(DLRBT_Node *node)
static DLRBT_Node * get_sibling(DLRBT_Node *node)
Read Guarded memory(de)allocation.
void *(* MEM_callocN)(size_t len, const char *str)
static void update_cb(PBVHNode *node, void *rebuild)
struct DLRBT_Node * parent
struct DLRBT_Node * right