Merge pull request 'refactor: page.c' (#3) from E0 into main
Reviewed-on: #3
This commit was merged in pull request #3.
This commit is contained in:
+65
-28
@@ -24,55 +24,92 @@
|
||||
|
||||
/* ---- interne Typen (nur in dieser Datei sichtbar) ---- */
|
||||
|
||||
typedef struct {
|
||||
uint32_t page_id;
|
||||
uint16_t num_slots;
|
||||
uint16_t free_space_offset;
|
||||
typedef struct
|
||||
{
|
||||
uint32_t page_id;
|
||||
uint16_t num_slots;
|
||||
uint16_t free_space_offset;
|
||||
} PageHeader;
|
||||
|
||||
typedef struct {
|
||||
uint16_t offset;
|
||||
uint16_t length;
|
||||
typedef struct
|
||||
{
|
||||
uint16_t offset;
|
||||
uint16_t length;
|
||||
} Slot;
|
||||
|
||||
/* oeffentliche Page-Struktur (opak nach aussen) */
|
||||
struct Page {
|
||||
uint8_t raw[PAGE_SIZE];
|
||||
struct Page
|
||||
{
|
||||
uint8_t raw[PAGE_SIZE];
|
||||
};
|
||||
|
||||
/* ---- Hilfsfunktionen ---- */
|
||||
|
||||
static PageHeader *header(Page *p) {
|
||||
return (PageHeader *)p->raw;
|
||||
static PageHeader *
|
||||
header
|
||||
(
|
||||
Page *p
|
||||
)
|
||||
{
|
||||
return (PageHeader *) p->raw;
|
||||
}
|
||||
|
||||
/* ---- API ---- */
|
||||
|
||||
Page *page_create(uint32_t page_id) {
|
||||
Page *p = malloc(sizeof(Page));
|
||||
if (!p) return NULL;
|
||||
Page *
|
||||
page_create
|
||||
(
|
||||
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);
|
||||
h->page_id = page_id;
|
||||
h->num_slots = 0;
|
||||
h->free_space_offset = PAGE_SIZE;
|
||||
PageHeader *h = header(p);
|
||||
h->page_id = page_id;
|
||||
h->num_slots = 0;
|
||||
h->free_space_offset = PAGE_SIZE;
|
||||
|
||||
return p;
|
||||
return p;
|
||||
}
|
||||
|
||||
void page_free(Page *p) {
|
||||
free(p);
|
||||
void
|
||||
page_free
|
||||
(
|
||||
Page *p
|
||||
)
|
||||
{
|
||||
free(p);
|
||||
}
|
||||
|
||||
/* page_insert und page_get folgen im naechsten TDD-Zyklus */
|
||||
int page_insert(Page *p, const void *data, size_t len) {
|
||||
(void)p; (void)data; (void)len;
|
||||
return -1; /* noch nicht implementiert */
|
||||
int
|
||||
page_insert
|
||||
(
|
||||
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)p; (void)slot_id; (void)out_len;
|
||||
return NULL; /* noch nicht implementiert */
|
||||
void *
|
||||
page_get
|
||||
(
|
||||
Page *p,
|
||||
uint16_t slot_id,
|
||||
size_t *out_len
|
||||
)
|
||||
{
|
||||
(void) p;
|
||||
(void) slot_id;
|
||||
(void) out_len;
|
||||
return NULL; /* noch nicht implementiert */
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user