ref: d97eb114d5dd63f3f0d5b96d8f34a1613761793e
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);