aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authornodist <kevin.comas.git@gmail.com>2026-10-06 17:13:01 -0400
committernodist <kevin.comas.git@gmail.com>2026-10-06 17:13:01 -0400
commit7bd050ccf74222e1b659f2fd6826a86e6afbcc94 (patch)
tree30bae9ca5dd110f32cd4abb10d42ea4d872b4d82 /source
parentde65adbc1b2d1b3efdbe6a023bb7435f84b2f3a7 (diff)
basic tests
Diffstat (limited to 'source')
-rw-r--r--source/README9
-rw-r--r--source/kpl.c11
-rw-r--r--source/tree.c37
3 files changed, 57 insertions, 0 deletions
diff --git a/source/README b/source/README
new file mode 100644
index 0000000..016daa8
--- /dev/null
+++ b/source/README
@@ -0,0 +1,9 @@
+Source Files
+
+---
+
+Compiler Flags
+
+KPL_COLOR_OFF # Turn off internal pretty printing, does not effect source file pretty printing
+
+---
diff --git a/source/kpl.c b/source/kpl.c
new file mode 100644
index 0000000..55ca994
--- /dev/null
+++ b/source/kpl.c
@@ -0,0 +1,11 @@
+/*
+ * Core kpl functions and entry point
+ */
+
+#include "kpl.h"
+
+#ifdef KPL_MAIN
+int32_t main(void) {
+ return 0;
+}
+#endif
diff --git a/source/tree.c b/source/tree.c
new file mode 100644
index 0000000..dcae485
--- /dev/null
+++ b/source/tree.c
@@ -0,0 +1,37 @@
+
+#include "kpl.h"
+
+extern inline void kpl_tree_init(kpl_tree *tree, kpl_tree_node_compare_fn node_compare_fn,
+ kpl_tree_node_free_fn node_free_fn);
+
+static void kpl_tree_free_helper(kpl_tree_node *node, kpl_tree_node_free_fn node_free_fn) {
+ if (node->tree_left)
+ kpl_tree_free_helper(node->tree_left, node_free_fn);
+ if (node->tree_right)
+ kpl_tree_free_helper(node->tree_right, node_free_fn);
+ node_free_fn(node);
+}
+
+void kpl_tree_free(kpl_tree *tree) {
+ kpl_tree_free_helper(tree->root_node, tree->node_free_fn);
+}
+
+static void *kpl_tree_find_helper(kpl_tree_node *root_node, const void *find_node,
+ kpl_tree_node_compare_fn compare_fn) {
+ if (!root_node)
+ return NULL;
+ int32_t compare = compare_fn(root_node, find_node);
+ if (compare < 0)
+ return kpl_tree_find_helper(root_node->tree_left, find_node, compare_fn);
+ if (compare > 0)
+ return kpl_tree_find_helper(root_node->tree_right, find_node, compare_fn);
+ return root_node;
+}
+
+void *kpl_tree_find(kpl_tree *tree, const void *find_node) {
+ return kpl_tree_find_helper(tree->root_node, find_node, tree->node_compare_fn);
+}
+
+void kpl_tree_insert(kpl_tree *tree, void *insert_node) {
+ // TODO
+}