Commit 51198a87 authored by Michael Niedermayer's avatar Michael Niedermayer

Comment to explain how the add/remove core works.

Originally committed as revision 11603 to svn://
parent 07ad12ec
......@@ -75,6 +75,24 @@ void *av_tree_insert(AVTreeNode **tp, void *key, int (*cmp)(void *key, const voi
/* The following code is equivalent to
if((*child)->state*2 == -t->state)
rotate(child, i^1);
rotate(tp, i);
with rotate():
static void rotate(AVTreeNode **tp, int i){
AVTreeNode *t= *tp;
*tp= t->child[i];
t->child[i]= t->child[i]->child[i^1];
(*tp)->child[i^1]= t;
i= 4*t->state + 2*(*tp)->state + 12;
t ->state= ((0x614586 >> i) & 3)-1;
(*tp)->state= ((*tp)->state>>1) + ((0x400EEA >> i) & 3)-1;
but such a rotate function is both bigger and slower
if((*child)->state*2 == -t->state){
*tp= (*child)->child[i^1];
(*child)->child[i^1]= (*tp)->child[i];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment