#pragma lib "libavl.a" #pragma src "/sys/src/libavl" typedef struct Avl Avl; typedef struct Avltree Avltree; typedef struct Avlwalk Avlwalk; #pragma incomplete Avltree #pragma incomplete Avlwalk struct Avl { Avl *p; /* parent */ Avl *n[2]; /* children */ int bal; /* balance bits */ }; Avl *avlnext(Avlwalk *walk); Avl *avlprev(Avlwalk *walk); Avlwalk *avlwalk(Avltree *tree); void deleteavl(Avltree *tree, Avl *key, Avl **oldp); void endwalk(Avlwalk *walk); void insertavl(Avltree *tree, Avl *new, Avl **oldp); Avl *lookupavl(Avltree *tree, Avl *key); Avltree *mkavltree(int(*cmp)(Avl*, Avl*)); Avl* searchavl(Avltree *tree, Avl *key, int neighbor);