summaryrefslogtreecommitdiff
path: root/src/module.eiface/state.c
diff options
context:
space:
mode:
authordautor <karlo98.m@gmail.com>2024-11-17 20:53:51 +0100
committerdautor <karlo98.m@gmail.com>2024-11-17 20:53:51 +0100
commitf1e579bc427df418af96da61498fe0cdb4cecb69 (patch)
tree1fc8f6b196fbc1cc9166a1e10c74eff83f8f2aab /src/module.eiface/state.c
parentc22c6581ee39688785476fe56f2b759ae49ca04a (diff)
Add COPYRIGHT and rename module directories
Diffstat (limited to 'src/module.eiface/state.c')
-rw-r--r--src/module.eiface/state.c63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/module.eiface/state.c b/src/module.eiface/state.c
new file mode 100644
index 0000000..7d85056
--- /dev/null
+++ b/src/module.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);
+}