/* 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 */