diff options
-rw-r--r-- | src/io.h | 13 | ||||
-rw-r--r-- | src/main.c | 9 |
2 files changed, 17 insertions, 5 deletions
@@ -2,15 +2,28 @@ #define ALGOS_IO_H_INCLUDED #include <stddef.h> +#include <stdint.h> struct stream { size_t n; size_t stride; + ssize_t last_idx; int fd; int out; char *name; }; +/* for array implementation */ +struct entry_a { + uint64_t val; +}; + +/* for linked list implementation */ +struct entry_l { + uint32_t i; /* "pointer" to the next element. */ + uint64_t val; +}; + int stream_open(struct stream *in); int stream_close(struct stream *in); @@ -17,8 +17,8 @@ static struct settings_s { unsigned int mode; } settings = {0}; -static struct stream file_in = {.fd = -1}; -static struct stream file_out = {.fd = -1}; +static struct stream file_in = {.last_idx = -1, .fd = -1}; +static struct stream file_out = {.last_idx = -1, .fd = -1, .out = 1}; static int parseargs(int argc, char **argv, struct settings_s * settings); void printhelp(const char * const name); @@ -32,16 +32,15 @@ int main(int argc, char **argv) } file_in.name = settings.filein; - file_in.stride = 0; /* TODO */ + file_in.stride = settings.mode & DATA_FORMAT ? sizeof(struct entry_l) : sizeof(struct entry_a); if ((ret = stream_open(&file_in))) { goto out; } file_out.name = settings.fileout ? settings.fileout : settings.filein; - file_out.out = 1; file_out.n = file_in.n; - file_out.stride = 0; /* TODO */ + file_out.stride = file_in.stride; if ((ret = stream_open(&file_out))) { goto out; |