ref: 4e58e991e413c61f132552b28917f13f729b04bd
parent: 04bce0d9d10d6ced33db5982d67cea157f97c0ac
author: sirjofri <sirjofri@sirjofri.de>
date: Sun Mar 15 13:55:24 EDT 2026
clean up: unifies code paths
--- a/rjson.c
+++ b/rjson.c
@@ -93,8 +93,6 @@
JSON *j;
JSONEl *jel;
int count, i, ret, sz;
- char **s;
- double *n;
int *b;
char *o;
char **arr;
@@ -127,19 +125,12 @@
switch (j->t) {case JSONNull:
/* skip null */
- sysfatal("nulltype!");+ fprint(2, "nulltype (%s)!", rj->name);
break;
case JSONBool:
- b = (int*)((char*)target + rj->addr);
- *b = !!j->n;
- break;
case JSONNumber:
- n = (double*)((char*)target + rj->addr);
- *n = j->n;
- break;
case JSONString:
- s = (char**)((char*)target + rj->addr);
- *s = strdup(j->s);
+ deserialize(j, j->t, (char*)target + rj->addr);
break;
case JSONArray:
count = rcountarr(j->first);
@@ -206,8 +197,6 @@
Rjson *rj;
int c;
int *i;
- double *n;
- char **s;
char *o;
char **arr;
void *entry;
@@ -234,25 +223,19 @@
jappend(json, rj->name, j);
continue;
}
- j = mallocz(sizeof(JSON), 1);
- assert(j);
- jappend(json, rj->name, j);
-
- j->t = rj->type;
- switch (j->t) {+ switch (rj->type) {case JSONBool:
- i = (int*)((char*)src + rj->addr);
- j->n = *i;
- break;
case JSONNumber:
- n = (double*)((char*)src + rj->addr);
- j->n = *n;
- break;
case JSONString:
- s = (char**)((char*)src + rj->addr);
- j->s = strdup(*s);
+ j = serialize(rj->type, (char*)src + rj->addr);
+ jappend(json, rj->name, j);
break;
case JSONArray:
+ j = mallocz(sizeof(JSON), 1);
+ assert(j);
+ j->t = rj->type;
+ jappend(json, rj->name, j);
+
i = (int*)((char*)src + rj->countaddr);
arr = (char**)((char*)src + rj->addr);
if (rj->sub) {--
⑨