libdict 1.0.7
Data Structure C Library
Loading...
Searching...
No Matches
tree_common.c File Reference
#include "tree_common.h"
#include <string.h>
#include "dict_private.h"
Include dependency graph for tree_common.c:

Go to the source code of this file.

Data Structures

struct  tree_node
 
struct  tree
 
struct  tree_iterator
 
struct  node_depth
 
struct  node_stack
 

Macros

#define PUSH(n, lo, hi)
 

Typedefs

typedef struct tree_node tree_node
 

Functions

void tree_node_rot_left (void *Tree, void *Node)
 
void tree_node_rot_right (void *Tree, void *Node)
 
void * tree_node_prev (void *Node)
 
void * tree_node_next (void *Node)
 
void * tree_node_min (void *Node)
 
void * tree_node_max (void *Node)
 
void * tree_search_node (void *Tree, const void *key)
 
void ** tree_search (void *Tree, const void *key)
 
void * tree_search_le_node (void *Tree, const void *key)
 
void ** tree_search_le (void *Tree, const void *key)
 
void * tree_search_lt_node (void *Tree, const void *key)
 
void ** tree_search_lt (void *Tree, const void *key)
 
void * tree_search_ge_node (void *Tree, const void *key)
 
void ** tree_search_ge (void *Tree, const void *key)
 
void * tree_search_gt_node (void *Tree, const void *key)
 
void ** tree_search_gt (void *Tree, const void *key)
 
size_t tree_traverse (void *Tree, dict_visit_func visit, void *user_data)
 
bool tree_select (void *Tree, size_t n, const void **key, void **datum)
 
size_t tree_count (const void *Tree)
 
bool tree_verify_common (const void *Tree)
 
size_t tree_clear (void *Tree, dict_delete_func delete_func)
 
size_t tree_free (void *Tree, dict_delete_func delete_func)
 
size_t tree_min_path_length (const void *Tree)
 
size_t tree_max_path_length (const void *Tree)
 
size_t tree_total_path_length (const void *Tree)
 
bool tree_iterator_valid (const void *Iterator)
 
void tree_iterator_invalidate (void *Iterator)
 
void tree_iterator_free (void *Iterator)
 
bool tree_iterator_next (void *Iterator)
 
bool tree_iterator_prev (void *Iterator)
 
bool tree_iterator_nextn (void *Iterator, size_t count)
 
bool tree_iterator_prevn (void *Iterator, size_t count)
 
bool tree_iterator_first (void *Iterator)
 
bool tree_iterator_last (void *Iterator)
 
bool tree_iterator_search (void *Iterator, const void *key)
 
bool tree_iterator_search_le (void *Iterator, const void *key)
 
bool tree_iterator_search_lt (void *Iterator, const void *key)
 
bool tree_iterator_search_ge (void *Iterator, const void *key)
 
bool tree_iterator_search_gt (void *Iterator, const void *key)
 
int tree_iterator_compare (const void *Iterator1, const void *Iterator2)
 
const void * tree_iterator_key (const void *Iterator)
 
void ** tree_iterator_datum (void *Iterator)
 
void * tree_iterator_key_vt (void *Iterator)
 
int tree_iterator_compare_vt (void *Iterator1, void *Iterator2)
 

Macro Definition Documentation

◆ PUSH

#define PUSH ( n,
lo,
hi )
Value:
do { \
if (size == capacity) { \
const size_t cap = capacity ? capacity * 2 : 32; \
struct frame* items = MALLOC(cap * sizeof(*items)); \
if (!items) { oom = true; break; } \
if (stack) { \
memcpy(items, stack, size * sizeof(*items)); \
FREE(stack); \
} \
stack = items; \
capacity = cap; \
} \
stack[size].node = (n); \
stack[size].lower = (lo); \
stack[size].upper = (hi); \
++size; \
} while (0)
#define MALLOC(n)

Typedef Documentation

◆ tree_node

typedef struct tree_node tree_node

Function Documentation

◆ tree_clear()

size_t tree_clear ( void * Tree,
dict_delete_func delete_func )

Definition at line 401 of file tree_common.c.

◆ tree_count()

size_t tree_count ( const void * Tree)

Definition at line 299 of file tree_common.c.

◆ tree_free()

size_t tree_free ( void * Tree,
dict_delete_func delete_func )

Definition at line 425 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_compare()

int tree_iterator_compare ( const void * Iterator1,
const void * Iterator2 )

Definition at line 657 of file tree_common.c.

◆ tree_iterator_compare_vt()

int tree_iterator_compare_vt ( void * Iterator1,
void * Iterator2 )

Definition at line 690 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_datum()

void ** tree_iterator_datum ( void * Iterator)

Definition at line 677 of file tree_common.c.

◆ tree_iterator_first()

bool tree_iterator_first ( void * Iterator)

Definition at line 608 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_free()

void tree_iterator_free ( void * Iterator)

Definition at line 560 of file tree_common.c.

◆ tree_iterator_invalidate()

void tree_iterator_invalidate ( void * Iterator)

Definition at line 554 of file tree_common.c.

◆ tree_iterator_key()

const void * tree_iterator_key ( const void * Iterator)

Definition at line 670 of file tree_common.c.

◆ tree_iterator_key_vt()

void * tree_iterator_key_vt ( void * Iterator)

Definition at line 684 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_last()

bool tree_iterator_last ( void * Iterator)

Definition at line 615 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_next()

bool tree_iterator_next ( void * Iterator)

Definition at line 568 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_nextn()

bool tree_iterator_nextn ( void * Iterator,
size_t count )

Definition at line 590 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_prev()

bool tree_iterator_prev ( void * Iterator)

Definition at line 579 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_prevn()

bool tree_iterator_prevn ( void * Iterator,
size_t count )

Definition at line 599 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_search()

bool tree_iterator_search ( void * Iterator,
const void * key )

Definition at line 622 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_search_ge()

bool tree_iterator_search_ge ( void * Iterator,
const void * key )

Definition at line 643 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_search_gt()

bool tree_iterator_search_gt ( void * Iterator,
const void * key )

Definition at line 650 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_search_le()

bool tree_iterator_search_le ( void * Iterator,
const void * key )

Definition at line 629 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_search_lt()

bool tree_iterator_search_lt ( void * Iterator,
const void * key )

Definition at line 636 of file tree_common.c.

Here is the call graph for this function:

◆ tree_iterator_valid()

bool tree_iterator_valid ( const void * Iterator)

Definition at line 548 of file tree_common.c.

◆ tree_max_path_length()

size_t tree_max_path_length ( const void * Tree)

Definition at line 532 of file tree_common.c.

◆ tree_min_path_length()

size_t tree_min_path_length ( const void * Tree)

Definition at line 524 of file tree_common.c.

◆ tree_node_max()

void * tree_node_max ( void * Node)

Definition at line 117 of file tree_common.c.

◆ tree_node_min()

void * tree_node_min ( void * Node)

Definition at line 106 of file tree_common.c.

◆ tree_node_next()

void * tree_node_next ( void * Node)

Definition at line 92 of file tree_common.c.

Here is the call graph for this function:

◆ tree_node_prev()

void * tree_node_prev ( void * Node)

Definition at line 78 of file tree_common.c.

Here is the call graph for this function:

◆ tree_node_rot_left()

void tree_node_rot_left ( void * Tree,
void * Node )

Definition at line 46 of file tree_common.c.

◆ tree_node_rot_right()

void tree_node_rot_right ( void * Tree,
void * Node )

Definition at line 62 of file tree_common.c.

◆ tree_search()

void ** tree_search ( void * Tree,
const void * key )

Definition at line 144 of file tree_common.c.

Here is the call graph for this function:

◆ tree_search_ge()

void ** tree_search_ge ( void * Tree,
const void * key )

Definition at line 221 of file tree_common.c.

Here is the call graph for this function:

◆ tree_search_ge_node()

void * tree_search_ge_node ( void * Tree,
const void * key )

Definition at line 201 of file tree_common.c.

◆ tree_search_gt()

void ** tree_search_gt ( void * Tree,
const void * key )

Definition at line 245 of file tree_common.c.

Here is the call graph for this function:

◆ tree_search_gt_node()

void * tree_search_gt_node ( void * Tree,
const void * key )

Definition at line 228 of file tree_common.c.

◆ tree_search_le()

void ** tree_search_le ( void * Tree,
const void * key )

Definition at line 170 of file tree_common.c.

Here is the call graph for this function:

◆ tree_search_le_node()

void * tree_search_le_node ( void * Tree,
const void * key )

Definition at line 151 of file tree_common.c.

◆ tree_search_lt()

void ** tree_search_lt ( void * Tree,
const void * key )

Definition at line 194 of file tree_common.c.

Here is the call graph for this function:

◆ tree_search_lt_node()

void * tree_search_lt_node ( void * Tree,
const void * key )

Definition at line 177 of file tree_common.c.

◆ tree_search_node()

void * tree_search_node ( void * Tree,
const void * key )

Definition at line 128 of file tree_common.c.

◆ tree_select()

bool tree_select ( void * Tree,
size_t n,
const void ** key,
void ** datum )

Definition at line 270 of file tree_common.c.

Here is the call graph for this function:

◆ tree_total_path_length()

size_t tree_total_path_length ( const void * Tree)

Definition at line 540 of file tree_common.c.

◆ tree_traverse()

size_t tree_traverse ( void * Tree,
dict_visit_func visit,
void * user_data )

Definition at line 252 of file tree_common.c.

Here is the call graph for this function:

◆ tree_verify_common()

bool tree_verify_common ( const void * Tree)

Definition at line 333 of file tree_common.c.