From f8f24f8c67fe903e267ab29bb2fbb9d334a722de Mon Sep 17 00:00:00 2001 From: nasr Date: Sun, 8 Mar 2026 12:55:27 +0000 Subject: feature(main): btree node operations --- .gitignore | 2 ++ source/engine/engine.c | 4 ++-- source/storage/b_tree.c | 23 +++++++++++++++++------ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index a0e4bdd..00fe5ef 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,5 @@ idea/* /test /tags /helper.sh +/tests +/tags diff --git a/source/engine/engine.c b/source/engine/engine.c index 64b15bf..18b52be 100644 --- a/source/engine/engine.c +++ b/source/engine/engine.c @@ -23,11 +23,11 @@ int main(int c, char **v) { if(c < 2) return -999; - mem_arena *global_arena = arena_create(MiB(20)); + mem_arena *global_arena = arena_create(MiB(30)); csv_table *global_table = PushStruct(global_arena, csv_table); string8 buffer = load_file(v[1]); - read_csv(buffer); + // read_csv(buffer); tokenize_csv(buffer, global_table, global_arena); diff --git a/source/storage/b_tree.c b/source/storage/b_tree.c index 4b42496..6a0e76d 100644 --- a/source/storage/b_tree.c +++ b/source/storage/b_tree.c @@ -1,14 +1,25 @@ -// TODO(nasr): -// 1. splitting the tree when getting too big? (horizontally) -// 2. joining trees? +// TODO(nasr): 1. splitting the tree when getting too big? (horizontally) 2. joining trees? - -internal void -b_tree_create(mem_arena *arena, u16 order) +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 i32 +node_find_pos(mem_arena *arena, string8 value) +{ + i32 i = 0; + while (i < n->key_count && str8_cmp(n->keys[i], k) < 0) + { + ++i; + } + return i; } // NOTE(nasr): nodes that get passed as parameters should've already been loaded into memory -- cgit v1.3