Replace VariantData& with VariantData* in deserializers

This commit is contained in:
Benoit Blanchon
2025-09-17 19:35:28 +02:00
parent 539b66fc7a
commit ed6b470896
3 changed files with 19 additions and 19 deletions

View File

@@ -50,7 +50,7 @@ DeserializationError doDeserialize(TDestination&& dst, TReader reader,
auto resources = VariantAttorney::getResourceManager(dst);
dst.clear();
auto err = TDeserializer<TReader>(resources, reader)
.parse(*data, options.filter, options.nestingLimit);
.parse(data, options.filter, options.nestingLimit);
shrinkJsonDocument(dst);
return err;
}

View File

@@ -28,13 +28,13 @@ class JsonDeserializer {
resources_(resources) {}
template <typename TFilter>
DeserializationError parse(VariantData& variant, TFilter filter,
DeserializationError parse(VariantData* variant, TFilter filter,
DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
err = parseVariant(variant, filter, nestingLimit);
if (!err && latch_.last() != 0 && variant.isFloat()) {
if (!err && latch_.last() != 0 && variant->isFloat()) {
// We don't detect trailing characters earlier, so we need to check now
return DeserializationError::InvalidInput;
}
@@ -60,7 +60,7 @@ class JsonDeserializer {
template <typename TFilter>
DeserializationError::Code parseVariant(
VariantData& variant, TFilter filter,
VariantData* variant, TFilter filter,
DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
@@ -71,13 +71,13 @@ class JsonDeserializer {
switch (current()) {
case '[':
if (filter.allowArray())
return parseArray(variant.toArray(resources_), filter, nestingLimit);
return parseArray(variant->toArray(resources_), filter, nestingLimit);
else
return skipArray(nestingLimit);
case '{':
if (filter.allowObject())
return parseObject(variant.toObject(resources_), filter,
return parseObject(variant->toObject(resources_), filter,
nestingLimit);
else
return skipObject(nestingLimit);
@@ -91,12 +91,12 @@ class JsonDeserializer {
case 't':
if (filter.allowValue())
variant.setBoolean(true);
variant->setBoolean(true);
return skipKeyword("true");
case 'f':
if (filter.allowValue())
variant.setBoolean(false);
variant->setBoolean(false);
return skipKeyword("false");
case 'n':
@@ -178,7 +178,7 @@ class JsonDeserializer {
return DeserializationError::NoMemory;
// 1 - Parse value
err = parseVariant(*value, elementFilter, nestingLimit.decrement());
err = parseVariant(value, elementFilter, nestingLimit.decrement());
if (err)
return err;
} else {
@@ -286,7 +286,7 @@ class JsonDeserializer {
}
// Parse value
err = parseVariant(*member, memberFilter, nestingLimit.decrement());
err = parseVariant(member, memberFilter, nestingLimit.decrement());
if (err)
return err;
} else {
@@ -380,7 +380,7 @@ class JsonDeserializer {
}
}
DeserializationError::Code parseStringValue(VariantData& variant) {
DeserializationError::Code parseStringValue(VariantData* variant) {
DeserializationError::Code err;
stringBuilder_.startString();
@@ -389,7 +389,7 @@ class JsonDeserializer {
if (err)
return err;
stringBuilder_.save(&variant);
stringBuilder_.save(variant);
return DeserializationError::Ok;
}
@@ -505,7 +505,7 @@ class JsonDeserializer {
return DeserializationError::Ok;
}
DeserializationError::Code parseNumericValue(VariantData& result) {
DeserializationError::Code parseNumericValue(VariantData* result) {
uint8_t n = 0;
char c = current();
@@ -519,26 +519,26 @@ class JsonDeserializer {
auto number = parseNumber(buffer_);
switch (number.type()) {
case NumberType::UnsignedInteger:
if (result.setInteger(number.asUnsignedInteger(), resources_))
if (result->setInteger(number.asUnsignedInteger(), resources_))
return DeserializationError::Ok;
else
return DeserializationError::NoMemory;
case NumberType::SignedInteger:
if (result.setInteger(number.asSignedInteger(), resources_))
if (result->setInteger(number.asSignedInteger(), resources_))
return DeserializationError::Ok;
else
return DeserializationError::NoMemory;
case NumberType::Float:
if (result.setFloat(number.asFloat(), resources_))
if (result->setFloat(number.asFloat(), resources_))
return DeserializationError::Ok;
else
return DeserializationError::NoMemory;
#if ARDUINOJSON_USE_DOUBLE
case NumberType::Double:
if (result.setFloat(number.asDouble(), resources_))
if (result->setFloat(number.asDouble(), resources_))
return DeserializationError::Ok;
else
return DeserializationError::NoMemory;

View File

@@ -24,10 +24,10 @@ class MsgPackDeserializer {
foundSomething_(false) {}
template <typename TFilter>
DeserializationError parse(VariantData& variant, TFilter filter,
DeserializationError parse(VariantData* variant, TFilter filter,
DeserializationOption::NestingLimit nestingLimit) {
DeserializationError::Code err;
err = parseVariant(&variant, filter, nestingLimit);
err = parseVariant(variant, filter, nestingLimit);
return foundSomething_ ? err : DeserializationError::EmptyInput;
}