Blender V2.61 - r43446
Functions

DLRB_tree.c File Reference

#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_dlrbTree.h"

Go to the source code of this file.

Functions

DLRBT_TreeBLI_dlrbTree_new (void)
void BLI_dlrbTree_init (DLRBT_Tree *tree)
static void recursive_tree_free_nodes (DLRBT_Node *node)
void BLI_dlrbTree_free (DLRBT_Tree *tree)
static void linkedlist_sync_add_node (DLRBT_Tree *tree, DLRBT_Node *node)
void BLI_dlrbTree_linkedlist_sync (DLRBT_Tree *tree)
DLRBT_NodeBLI_dlrbTree_search (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
DLRBT_NodeBLI_dlrbTree_search_exact (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
DLRBT_NodeBLI_dlrbTree_search_prev (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
DLRBT_NodeBLI_dlrbTree_search_next (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
short BLI_dlrbTree_contains (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, void *search_data)
static DLRBT_Nodeget_grandparent (DLRBT_Node *node)
static DLRBT_Nodeget_sibling (DLRBT_Node *node)
static DLRBT_Nodeget_uncle (DLRBT_Node *node)
static void rotate_left (DLRBT_Tree *tree, DLRBT_Node *root)
static void rotate_right (DLRBT_Tree *tree, DLRBT_Node *root)
static void insert_check_1 (DLRBT_Tree *tree, DLRBT_Node *node)
static void insert_check_2 (DLRBT_Tree *tree, DLRBT_Node *node)
static void insert_check_3 (DLRBT_Tree *tree, DLRBT_Node *node)
void BLI_dlrbTree_insert (DLRBT_Tree *tree, DLRBT_Node *node)
DLRBT_NodeBLI_dlrbTree_add (DLRBT_Tree *tree, DLRBT_Comparator_FP cmp_cb, DLRBT_NAlloc_FP new_cb, DLRBT_NUpdate_FP update_cb, void *data)

Detailed Description

Definition in file DLRB_tree.c.


Function Documentation

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 
)
short BLI_dlrbTree_contains ( DLRBT_Tree tree,
DLRBT_Comparator_FP  cmp_cb,
void *  search_data 
)

Definition at line 272 of file DLRB_tree.c.

References BLI_dlrbTree_search_exact(), and NULL.

void BLI_dlrbTree_free ( DLRBT_Tree tree)
void BLI_dlrbTree_init ( DLRBT_Tree tree)
void BLI_dlrbTree_insert ( DLRBT_Tree tree,
DLRBT_Node node 
)

Definition at line 491 of file DLRB_tree.c.

References DLRBT_RED, insert_check_1(), NULL, and DLRBT_Node::tree_col.

Referenced by add_bezt_to_keyblocks_list().

void BLI_dlrbTree_linkedlist_sync ( DLRBT_Tree tree)
DLRBT_Tree* BLI_dlrbTree_new ( void  )

Definition at line 40 of file DLRB_tree.c.

References MEM_callocN().

Referenced by fcurve_to_keylist().

DLRBT_Node* BLI_dlrbTree_search ( DLRBT_Tree tree,
DLRBT_Comparator_FP  cmp_cb,
void *  search_data 
)
DLRBT_Node* BLI_dlrbTree_search_exact ( DLRBT_Tree tree,
DLRBT_Comparator_FP  cmp_cb,
void *  search_data 
)
DLRBT_Node* BLI_dlrbTree_search_next ( DLRBT_Tree tree,
DLRBT_Comparator_FP  cmp_cb,
void *  search_data 
)
DLRBT_Node* BLI_dlrbTree_search_prev ( DLRBT_Tree tree,
DLRBT_Comparator_FP  cmp_cb,
void *  search_data 
)
static DLRBT_Node* get_grandparent ( DLRBT_Node node) [static]

Definition at line 282 of file DLRB_tree.c.

References NULL, and DLRBT_Node::parent.

Referenced by insert_check_2(), and insert_check_3().

static DLRBT_Node* get_sibling ( DLRBT_Node node) [static]

Definition at line 291 of file DLRB_tree.c.

References DLRBT_Node::left, NULL, DLRBT_Node::parent, and DLRBT_Node::right.

Referenced by get_uncle().

static DLRBT_Node* get_uncle ( DLRBT_Node node) [static]

Definition at line 305 of file DLRB_tree.c.

References get_sibling(), NULL, and DLRBT_Node::parent.

Referenced by insert_check_2().

static void insert_check_1 ( DLRBT_Tree tree,
DLRBT_Node node 
) [static]
static void insert_check_2 ( DLRBT_Tree tree,
DLRBT_Node node 
) [static]
static void insert_check_3 ( DLRBT_Tree tree,
DLRBT_Node node 
) [static]
static void linkedlist_sync_add_node ( DLRBT_Tree tree,
DLRBT_Node node 
) [static]

Definition at line 95 of file DLRB_tree.c.

References BLI_addtail(), DLRBT_Node::left, DLRBT_Node::next, NULL, and DLRBT_Node::prev.

Referenced by BLI_dlrbTree_linkedlist_sync().

static void recursive_tree_free_nodes ( DLRBT_Node node) [static]

Definition at line 56 of file DLRB_tree.c.

References DLRBT_Node::left, MEM_freeN(), NULL, and DLRBT_Node::right.

Referenced by BLI_dlrbTree_free().

static void rotate_left ( DLRBT_Tree tree,
DLRBT_Node root 
) [static]
static void rotate_right ( DLRBT_Tree tree,
DLRBT_Node root 
) [static]