1 375b78fb 2009-08-23 rsc /* #pragma lib "libavl.a" */
2 375b78fb 2009-08-23 rsc /* #pragma src "/sys/src/libavl" */
6 375b78fb 2009-08-23 rsc typedef struct Avl Avl;
7 375b78fb 2009-08-23 rsc typedef struct Avltree Avltree;
8 375b78fb 2009-08-23 rsc typedef struct Avlwalk Avlwalk;
10 375b78fb 2009-08-23 rsc /* #pragma incomplete Avltree */
11 375b78fb 2009-08-23 rsc /* #pragma incomplete Avlwalk */
15 375b78fb 2009-08-23 rsc Avl *p; /* parent */
16 375b78fb 2009-08-23 rsc Avl *n[2]; /* children */
17 375b78fb 2009-08-23 rsc int bal; /* balance bits */
20 375b78fb 2009-08-23 rsc Avl *avlnext(Avlwalk *walk);
21 375b78fb 2009-08-23 rsc Avl *avlprev(Avlwalk *walk);
22 375b78fb 2009-08-23 rsc Avlwalk *avlwalk(Avltree *tree);
23 375b78fb 2009-08-23 rsc void deleteavl(Avltree *tree, Avl *key, Avl **oldp);
24 375b78fb 2009-08-23 rsc void endwalk(Avlwalk *walk);
25 375b78fb 2009-08-23 rsc void insertavl(Avltree *tree, Avl *new, Avl **oldp);
26 375b78fb 2009-08-23 rsc Avl *lookupavl(Avltree *tree, Avl *key);
27 375b78fb 2009-08-23 rsc Avltree *mkavltree(int(*cmp)(Avl*, Avl*));