summary refs log tree commit diff stats
path: root/src/common/tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/tree.h')
-rw-r--r--src/common/tree.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/common/tree.h b/src/common/tree.h
new file mode 100644
index 00000000..b1b66aa9
--- /dev/null
+++ b/src/common/tree.h
@@ -0,0 +1,16 @@
+#ifndef XCHAT_TREE_H
+#define XCHAT_TREE_H
+
+typedef struct _tree tree;
+
+typedef int (tree_cmp_func) (const void *keya, const void *keyb, void *data);
+typedef int (tree_traverse_func) (const void *key, void *data);
+
+tree *tree_new (tree_cmp_func *cmp, void *data);
+void tree_destroy (tree *t);
+void *tree_find (tree *t, void *key, tree_cmp_func *cmp, void *data, int *pos);
+int tree_remove (tree *t, void *key, int *pos);
+void tree_foreach (tree *t, tree_traverse_func *func, void *data);
+int tree_insert (tree *t, void *key);
+
+#endif