ref: 47682ee42a1f686dbd3aa9de7375c16f7d3d95e8
dir: /sys/include/avl.h/
#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);