first usable version of kernel and commands
After an year of hard work, this is a first "usable" version of Jehanne.
This commit is contained in:
35
sys/include/avl.h
Normal file
35
sys/include/avl.h
Normal file
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* This file is part of the UCB release of Plan 9. It is subject to the license
|
||||
* terms in the LICENSE file found in the top-level directory of this
|
||||
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
|
||||
* part of the UCB release of Plan 9, including this file, may be copied,
|
||||
* modified, propagated, or distributed except according to the terms contained
|
||||
* in the LICENSE file.
|
||||
*/
|
||||
|
||||
#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);
|
Reference in New Issue
Block a user