refactor: page.c

This commit is contained in:
paulhorn
2026-06-20 21:16:02 +02:00
parent 76fe07dd3a
commit 9ba08bee98
+65 -28
View File
@@ -24,55 +24,92 @@
/* ---- interne Typen (nur in dieser Datei sichtbar) ---- */ /* ---- interne Typen (nur in dieser Datei sichtbar) ---- */
typedef struct { typedef struct
uint32_t page_id; {
uint16_t num_slots; uint32_t page_id;
uint16_t free_space_offset; uint16_t num_slots;
uint16_t free_space_offset;
} PageHeader; } PageHeader;
typedef struct { typedef struct
uint16_t offset; {
uint16_t length; uint16_t offset;
uint16_t length;
} Slot; } Slot;
/* oeffentliche Page-Struktur (opak nach aussen) */ /* oeffentliche Page-Struktur (opak nach aussen) */
struct Page { struct Page
uint8_t raw[PAGE_SIZE]; {
uint8_t raw[PAGE_SIZE];
}; };
/* ---- Hilfsfunktionen ---- */ /* ---- Hilfsfunktionen ---- */
static PageHeader *header(Page *p) { static PageHeader *
return (PageHeader *)p->raw; header
(
Page *p
)
{
return (PageHeader *) p->raw;
} }
/* ---- API ---- */ /* ---- API ---- */
Page *page_create(uint32_t page_id) { Page *
Page *p = malloc(sizeof(Page)); page_create
if (!p) return NULL; (
uint32_t page_id
)
{
Page *p = malloc(sizeof(Page));
if (!p)
return NULL;
memset(p->raw, 0, PAGE_SIZE); memset(p->raw, 0, PAGE_SIZE);
PageHeader *h = header(p); PageHeader *h = header(p);
h->page_id = page_id; h->page_id = page_id;
h->num_slots = 0; h->num_slots = 0;
h->free_space_offset = PAGE_SIZE; h->free_space_offset = PAGE_SIZE;
return p; return p;
} }
void page_free(Page *p) { void
free(p); page_free
(
Page *p
)
{
free(p);
} }
/* page_insert und page_get folgen im naechsten TDD-Zyklus */ /* page_insert und page_get folgen im naechsten TDD-Zyklus */
int page_insert(Page *p, const void *data, size_t len) { int
(void)p; (void)data; (void)len; page_insert
return -1; /* noch nicht implementiert */ (
Page *p,
const void *data,
size_t len
)
{
(void) p;
(void) data;
(void) len;
return -1; /* noch nicht implementiert */
} }
void *page_get(Page *p, uint16_t slot_id, size_t *out_len) { void *
(void)p; (void)slot_id; (void)out_len; page_get
return NULL; /* noch nicht implementiert */ (
Page *p,
uint16_t slot_id,
size_t *out_len
)
{
(void) p;
(void) slot_id;
(void) out_len;
return NULL; /* noch nicht implementiert */
} }