29 lines
824 B
C
29 lines
824 B
C
#ifndef WEPOLL_TREE_H_
|
|
#define WEPOLL_TREE_H_
|
|
|
|
#include "internal.h"
|
|
#include "rb.h"
|
|
|
|
/* NB: the tree functions do not set errno or LastError when they fail. Each of
|
|
* the API functions has at most one failure mode. It is up to the caller to
|
|
* set an appropriate error code when necessary.
|
|
*/
|
|
|
|
typedef RB_HEAD(tree, tree_node) tree_t;
|
|
|
|
typedef struct tree_node {
|
|
RB_ENTRY(tree_node) node;
|
|
uintptr_t key;
|
|
} tree_node_t;
|
|
|
|
WEPOLL_INTERNAL void tree_init(tree_t* tree);
|
|
WEPOLL_INTERNAL void tree_node_init(tree_node_t* node);
|
|
|
|
WEPOLL_INTERNAL int tree_add(tree_t* tree, tree_node_t* node, uintptr_t key);
|
|
WEPOLL_INTERNAL int tree_del(tree_t* tree, tree_node_t* node);
|
|
|
|
WEPOLL_INTERNAL tree_node_t* tree_find(tree_t* tree, uintptr_t key);
|
|
WEPOLL_INTERNAL tree_node_t* tree_root(tree_t* tree);
|
|
|
|
#endif /* WEPOLL_TREE_H_ */
|