From 2dc9d118efb64de6ea54a5a9eb4474f8e5ef3145 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Thu, 29 Feb 2024 01:50:44 +0100 Subject: Initial commit --- src/salis.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/salis.c (limited to 'src/salis.c') diff --git a/src/salis.c b/src/salis.c new file mode 100644 index 0000000..c57c60e --- /dev/null +++ b/src/salis.c @@ -0,0 +1,98 @@ +#include +#include +#include "salis.h" + +static sbool g_isInit; +static sword g_cycle; +static sword g_epoch; + +void +s_init(sword order) +{ + assert(!g_isInit); + sm_init(order); + se_init(); + sp_init(); + g_isInit = STRUE; +} + +void +s_quit(void) +{ + assert(g_isInit); + sp_quit(); + se_quit(); + sm_quit(); + g_isInit = SFALSE; + g_cycle = 0; + g_epoch = 0; +} + +void +s_load(const char *fileName) +{ + FILE *file; + assert(!g_isInit); + assert(fileName); + file = fopen(fileName, "rb"); + assert(file); + fread(&g_isInit, sizeof(sbool), 1, file); + fread(&g_cycle, sizeof(sword), 1, file); + fread(&g_epoch, sizeof(sword), 1, file); + sm_load(file); + se_load(file); + sp_load(file); + fclose(file); +} + +void +s_save(const char *fileName) +{ + FILE *file; + assert(g_isInit); + assert(fileName); + file = fopen(fileName, "wb"); + assert(file); + fwrite(&g_isInit, sizeof(sbool), 1, file); + fwrite(&g_cycle, sizeof(sword), 1, file); + fwrite(&g_epoch, sizeof(sword), 1, file); + sm_save(file); + se_save(file); + sp_save(file); + fclose(file); +} + +sbool +s_isInit(void) +{ + return g_isInit; +} + +sword +s_getCycle(void) +{ + return g_cycle; +} + +sword +s_getEpoch(void) +{ + return g_epoch; +} + +void +s_cycle(void) +{ + assert(g_isInit); + assert(sm_isInit()); + assert(sp_isInit()); + assert(se_isInit()); + g_cycle++; + + if (!g_cycle) { + g_epoch++; + } + + se_cycle(); + sp_cycle(); +} -- cgit v1.2.1