diff options
Diffstat (limited to 'src/datagen.c')
-rw-r--r-- | src/datagen.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/datagen.c b/src/datagen.c index 9efe3b3..d4c8bab 100644 --- a/src/datagen.c +++ b/src/datagen.c @@ -1,19 +1,20 @@ +/* SPDX-License-Identifier: LGPL-2.1-only */ + +/* Copyright (C) 2020 Gediminas Jakutis */ + #include <unistd.h> #include <stddef.h> #include <errno.h> +#include <stdlib.h> +#include <sys/types.h> #include "datagen.h" #include "defs.h" -int gen_get(struct stream *in, size_t idx, struct entry_l *data, int tag) +int gen_get_array(struct stream * const restrict in, ssize_t idx, struct entry_l * const data) { int ret = 0; (void) idx; - if (tag) { - data->prev = 0; - data->next = 0; - } - in->prev_idx = -1; ret = read(in->fd, &data->val, sizeof(data->val)); @@ -23,3 +24,24 @@ int gen_get(struct stream *in, size_t idx, struct entry_l *data, int tag) return ret; } + +int gen_get_list(struct stream * const restrict in, ssize_t idx, struct entry_l * const data) +{ + int ret = 0; + + data->prev = idx > 0 ? idx - 1 : labs(idx) - 1; + data->next = idx + 1; + + if (!idx) { + data->val = 0; /* header lmao */ + } else { + ret = gen_get_array(in, idx, data); + } + + return ret; +} + +int gen_put(struct stream * const restrict in, ssize_t idx, const struct entry_l * const data) +{ + return ENOSYS; +} |