/* storage.h - C-ABI boundary between Storage Engine (C) and Engine Logic (C++) */ #ifndef PAULDB_STORAGE_H #define PAULDB_STORAGE_H #include #include #ifdef __cplusplus extern "C" { #endif /* --- Page Management --- */ typedef struct Page Page; Page* page_create(uint32_t page_id); int page_insert(Page* p, const void* data, size_t len); void* page_get(Page* p, uint16_t slot_id, size_t* out_len); void page_free(Page* p); /* --- Heap (Multi-Page Row Store / Delta) --- */ typedef struct Heap Heap; Heap* heap_create(void); int heap_insert(Heap* h, const void* data, size_t len); void heap_full_scan(Heap* h, void (*callback)(const void*, size_t)); void heap_free(Heap* h); /* --- B+Tree Index --- */ typedef struct BTree BTree; BTree* btree_create(void); int btree_insert(BTree* bt, int64_t key, uint32_t page_id, uint16_t slot_id); int btree_lookup(BTree* bt, int64_t key, uint32_t* out_page, uint16_t* out_slot); void btree_free(BTree* bt); #ifdef __cplusplus } #endif #endif /* PAULDB_STORAGE_H */