From 96ecf29e8be977f51f351308ef2c7c492bb829aa Mon Sep 17 00:00:00 2001 From: Ethan Werner Date: Tue, 9 Jun 2026 01:17:41 +0400 Subject: refactor --- example/bin.c | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) mode change 100755 => 100644 example/bin.c (limited to 'example/bin.c') diff --git a/example/bin.c b/example/bin.c old mode 100755 new mode 100644 index 40a7f77..7be43c1 --- a/example/bin.c +++ b/example/bin.c @@ -1,47 +1,67 @@ +// bin.c - Example usage of bin.h flat file block storage + +#include +#include #include #include +#include typedef int32_t bin_key_t; +#define BIN_IMPLEMENTATION +#include "../include/bin.h" + #define TEST_LENGTH 10 #define TEST_START -2 -#define TEST_STEP 0.5; struct sample_t { bin_key_t time; double data; }; -#define BIN_IMPLEMENTATION -#include "../include/bin.h" - -int main() { +int main(void) { char const *path = "./test.bin"; FILE *bin = bin_init(path, sizeof(struct sample_t)); + if (!bin) { + fprintf(stderr, "Failed to initialize binary file\n"); + return 1; + } bin_key_t half = (bin_key_t)((TEST_START + TEST_LENGTH) / 2.0); // Insert half of the values using bin_insert() for (bin_key_t i = half - 1; i >= TEST_START; i--) { - bin_insert(bin, 0, &(struct sample_t){.time = i, .data = 2.0 * i}, 1); + struct sample_t sample = {.time = i, .data = 2.0 * i}; + bin_insert(bin, 0, &sample, 1); } // Append half of the values to the end for (bin_key_t i = half; i < TEST_START + TEST_LENGTH; i++) { - bin_append(bin, &(struct sample_t){.time = i, .data = 2.0 * i}, 1); + struct sample_t sample = {.time = i, .data = 2.0 * i}; + bin_append(bin, &sample, 1); } uint64_t l = bin_length(bin); - uint64_t bs = bin_block_size(bin); + (void)bin_block_size(bin); - struct sample_t x[l]; + assert(l < 1000000); + struct sample_t *x = calloc(l, sizeof(struct sample_t)); + if (!x) { + fprintf(stderr, "Failed to allocate memory\n"); + bin_close(bin); + return 1; + } bin_read(bin, 0, x, l); // Test that all values are correct - for (int32_t i = 0; i < TEST_LENGTH; i++) { - bin_key_t key = TEST_START + i; - assert(x[i].time == key && x[i].data == 2.0 * key); + for (uint32_t i = 0; i < TEST_LENGTH; i++) { + bin_key_t key = TEST_START + (int32_t)i; + assert(x[i].time == key); + assert(fabs(x[i].data - 2.0 * key) < 1e-9); } + free(x); bin_close(bin); + remove(path); + return 0; } \ No newline at end of file -- cgit v1.3.1