From 47778ccd67cbb3fb70dda706911d3166038ca010 Mon Sep 17 00:00:00 2001 From: dautor Date: Sat, 16 Nov 2024 13:22:54 +0100 Subject: Import project --- src/sf.eiface/state.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/sf.eiface/state.c (limited to 'src/sf.eiface/state.c') diff --git a/src/sf.eiface/state.c b/src/sf.eiface/state.c new file mode 100644 index 0000000..7d85056 --- /dev/null +++ b/src/sf.eiface/state.c @@ -0,0 +1,63 @@ +#include "state.h" + +// FREE + +void +Free_configuration(configuration *E) +{ + if(E->inet != NULL) free(E->inet); +} + +void +Free_data(data *E) +{ + UNUSED(E); +} + +// PARSE + +char * +Parse_configuration(configuration *E, ucl_object_t const *root, char const *Position) +{ + char *Error; + UCL_CHECK_ROOT(OBJECT); + ucl_object_t const *inet = ucl_object_lookup(root, "inet"); + if(inet != NULL) + { + UCL_CHECK(inet, STRING); + E->inet = strdup(ucl_object_tostring(inet)); + } + return NULL; +error: + return Error; +} + +char * +Parse_data(data *E, ucl_object_t const *root, char const *Position) +{ + char *Error; + UCL_CHECK_ROOT(OBJECT); + ucl_object_t const *id = ucl_object_lookup(root, "id"); + UCL_CHECK(id, INT); + s64 ID = ucl_object_toint(id); + if(ID < 0 || ID > UINT32_MAX) + { + asprintf(&Error, "%s id invalid (%ld)", Position, ID); + goto error; + } + E->ID = (u32)ID; + return NULL; +error: + return Error; +} + +// SAVE + +void +Save_data(jprint_state *S, data const *E) +{ + JPrintObjectBegin(S); + JPrintMember(S, "id"); + JPrint_ssize_t(S, E->ID); + JPrintObjectEnd(S); +} -- cgit v1.2.3