commit 6120132b4d11290d62fff82b9e4dc13fe8e89a4c
parent 81310f422139c76ec92401b10aab034e65d31a38
Author: Remy Noulin <loader2x@gmail.com>
Date: Mon, 10 Jul 2023 14:57:18 +0200
for smallJson objects, allow setting top of same type multiple times
release/json/libsheepyCSmallJson.h | 1 +
release/libsheepy.h | 2 +-
src/json/libsheepyCSmallJson.c | 16 ++++++++--------
src/json/libsheepyCSmallJson.h | 1 +
src/libsheepy.h | 2 +-
5 files changed, 12 insertions(+), 10 deletions(-)
Diffstat:
5 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/release/json/libsheepyCSmallJson.h b/release/json/libsheepyCSmallJson.h
@@ -149,6 +149,7 @@ typedef smallJsont* (*setTypeArraySmallJsonFt) (smallJsont *self);
/**
* set top object in self
+ * top of same type can be set multiple times
*
* \param
* value object to set in self
diff --git a/release/libsheepy.h b/release/libsheepy.h
@@ -98,7 +98,7 @@
// version accoring to the version package: Release.Major.minor.patch
// https://noulin.net/version/file/README.md.html
-#define LIBSHEEPY_VERSION "2.2.12"
+#define LIBSHEEPY_VERSION "2.2.12.1"
#ifndef SH_PREFIX
#define SH_PREFIX(NAME) NAME
diff --git a/src/json/libsheepyCSmallJson.c b/src/json/libsheepyCSmallJson.c
@@ -3172,49 +3172,49 @@ internal smallJsont* setTopSmallJson(smallJsont *self, baset *value) {
self->iterKey = NULL;
self->iterStep = 0;
- if (isOType(value, "undefined") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "undefined") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_UNDEFINED)) {
self->topIsA = TOP_IS_UNDEFINED;
sFree((smallt *)self->topU);
self->topU = (sUndefinedt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallBool") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallBool") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_BOOL)) {
self->topIsA = TOP_IS_BOOL;
sFree((smallt *)self->topB);
self->topB = (sBoolt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallDouble") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallDouble") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_DOUBLE)) {
self->topIsA = TOP_IS_DOUBLE;
sFree((smallt *)self->topD);
self->topD = (sDoublet *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallInt") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallInt") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_INT)) {
self->topIsA = TOP_IS_INT;
sFree((smallt *)self->topI);
self->topI = (sIntt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallString") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallString") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_STRING)) {
self->topIsA = TOP_IS_STRING;
sFree((smallt *)self->topS);
self->topS = (sStringt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallDict") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallDict") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_DICT)) {
self->topIsA = TOP_IS_DICT;
sFree((smallt *)self->top);
self->top = (sDictt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallArray") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallArray") && (self->topIsA == SMALLJSON_IS_EMPTY || self->topIsA == TOP_IS_ARRAY)) {
self->topIsA = TOP_IS_ARRAY;
sFree((smallt *)self->topA);
self->topA = (sArrayt *)toSmallt(value);
return(self);
}
- if (isOType(value, "smallJson") && (self->topIsA == SMALLJSON_IS_EMPTY)) {
+ if (isOType(value, "smallJson")) {
cast(smallJsont*, v, value);
switch(v->topIsA) {
case TOP_IS_UNDEFINED:
diff --git a/src/json/libsheepyCSmallJson.h b/src/json/libsheepyCSmallJson.h
@@ -149,6 +149,7 @@ typedef smallJsont* (*setTypeArraySmallJsonFt) (smallJsont *self);
/**
* set top object in self
+ * top of same type can be set multiple times
*
* \param
* value object to set in self
diff --git a/src/libsheepy.h b/src/libsheepy.h
@@ -98,7 +98,7 @@
// version accoring to the version package: Release.Major.minor.patch
// https://noulin.net/version/file/README.md.html
-#define LIBSHEEPY_VERSION "2.2.12"
+#define LIBSHEEPY_VERSION "2.2.12.1"
#ifndef SH_PREFIX
#define SH_PREFIX(NAME) NAME