From 71ced998122c357bc62e54d9bb4e124c88acf94b Mon Sep 17 00:00:00 2001 From: nasr Date: Sun, 8 Mar 2026 21:01:43 +0000 Subject: refactor(main): worked on string handling in C and other stuff --- source/b_tree.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 source/b_tree.c (limited to 'source/b_tree.c') diff --git a/source/b_tree.c b/source/b_tree.c new file mode 100644 index 0000000..e42f709 --- /dev/null +++ b/source/b_tree.c @@ -0,0 +1,66 @@ + +// TODO(nasr): 1. splitting the tree when getting too big? (horizontally) 2. joining trees? + +internal b_tree_node * +node_alloc(mem_arena *arena) +{ + b_tree_node *node = PushStructZero(arena, type); + node->leaf = 1; + return node; +} + +// NOTE(nasr): @return the index of of the found element +internal s32 +node_find_pos(mem_arena *arena, string8 value) +{ + s32 i = 0; + while (i < n->key_count && str8_cmp(n->keys[i], k) < 0) + { + ++i; + } + + return i; +} + +interal void +b_tree_create(mem_arena *arena, b_tree *tree) +{ + tree->root = node_alloc(arena); + tree->root->leaf = 1; + tree->root->key_count = 0; +} + +// NOTE(nasr): nodes that get passed as parameters should've already been loaded into memory +internal void +b_tree_search(b_tree_node *node, string8 key) +{ + s32 found_index = node_find_pos(node, key); + + if (found_index < n->key_count && string_compare(n->keys[i], key) == 0) + { + return n->rows[i]; + } + if (n->leaf) + { + return NULL; + + } + + return b_tree_search(n->children[i], key); + + +} + +internal void +b_tree_insert() +{ + +} + +internal void +b_tree_write() +{ + // TODO(nasr): write the b_tree to disk +} + + -- cgit v1.3