Go to the documentation of this file.
   40                    int (*
cmp)(
const void *
key, 
const void *
b), 
void *next[2])
 
   46                 next[v >> 31] = t->
elem;
 
   83             int i              = (v >> 31) ^ !!*next;
 
   87             if (!(t->
state & 1)) {
 
  109                     if ((*child)->state * 2 == -t->
state) {
 
  110                         *tp                    = (*child)->
child[
i ^ 1];
 
  117                         (*tp)->child[1]->state = (*tp)->state < 0;
 
  127                         (*tp)->state = -t->
state;
 
  131             if (!(*tp)->state ^ !!*next)
 
  156                        int (*
cmp)(
void *opaque, 
void *
elem),
 
  157                        int (*enu)(
void *opaque, 
void *
elem))
 
  164             enu(opaque, t->
elem);
 
  
void * av_tree_insert(AVTreeNode **tp, void *key, int(*cmp)(const void *key, const void *b), AVTreeNode **next)
Insert or remove an element.
struct AVTreeNode * av_tree_node_alloc(void)
Allocate an AVTreeNode.
void av_tree_enumerate(AVTreeNode *t, void *opaque, int(*cmp)(void *opaque, void *elem), int(*enu)(void *opaque, void *elem))
Apply enu(opaque, &elem) to all the elements in the tree in a given range.
const int av_tree_node_size
struct AVTreeNode * child[2]
void av_tree_destroy(AVTreeNode *t)
static int cmp(const void *a, const void *b)
#define i(width, name, range_min, range_max)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
void * av_tree_find(const AVTreeNode *t, void *key, int(*cmp)(const void *key, const void *b), void *next[2])