visitString() takes a JsonString

This commit is contained in:
Benoit Blanchon
2023-07-10 15:50:33 +02:00
parent 5a9d3422f5
commit da845ae01d
6 changed files with 19 additions and 17 deletions

View File

@ -68,8 +68,8 @@ class JsonSerializer : public VariantDataVisitor<size_t> {
return bytesWritten();
}
size_t visitString(const char* value, size_t n) {
formatter_.writeString(value, n);
size_t visitString(JsonString value) {
formatter_.writeString(value.c_str(), value.size());
return bytesWritten();
}

View File

@ -80,12 +80,14 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
}
size_t visitString(const char* value) {
return visitString(value, strlen(value));
return visitString(JsonString(value));
}
size_t visitString(const char* value, size_t n) {
size_t visitString(JsonString value) {
ARDUINOJSON_ASSERT(value != NULL);
auto n = value.size();
if (n < 0x20) {
writeByte(uint8_t(0xA0 + n));
} else if (n < 0x100) {
@ -98,7 +100,7 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
writeByte(0xDB);
writeInteger(uint32_t(n));
}
writeBytes(reinterpret_cast<const uint8_t*>(value), n);
writeBytes(reinterpret_cast<const uint8_t*>(value.c_str()), n);
return bytesWritten();
}

View File

@ -47,7 +47,7 @@ struct JsonVariantVisitor {
return TResult();
}
TResult visitString(const char*, size_t) {
TResult visitString(JsonString) {
return TResult();
}
};
@ -72,8 +72,8 @@ class VisitorAdapter {
return visitor_->visitFloat(value);
}
result_type visitString(const char* s, size_t n) {
return visitor_->visitString(s, n);
result_type visitString(JsonString value) {
return visitor_->visitString(value);
}
result_type visitRawString(const char* p, size_t n) {

View File

@ -24,8 +24,8 @@ struct Comparer<T, typename enable_if<IsString<T>::value>::type>
explicit Comparer(T value) : rhs(value) {}
CompareResult visitString(const char* lhs, size_t n) {
int i = stringCompare(adaptString(rhs), adaptString(lhs, n));
CompareResult visitString(JsonString lhs) {
int i = stringCompare(adaptString(rhs), adaptString(lhs));
if (i < 0)
return COMPARE_RESULT_GREATER;
else if (i > 0)
@ -143,8 +143,8 @@ struct VariantComparer : ComparerBase {
return reverseResult(comparer);
}
CompareResult visitString(const char* lhs, size_t) {
Comparer<const char*> comparer(lhs);
CompareResult visitString(JsonString lhs) {
Comparer<JsonString> comparer(lhs);
return reverseResult(comparer);
}

View File

@ -37,12 +37,12 @@ class VariantData {
return visitor.visitObject(content_.asObject);
case VALUE_IS_LINKED_STRING:
return visitor.visitString(content_.asLinkedString,
strlen(content_.asLinkedString));
return visitor.visitString(JsonString(content_.asLinkedString));
case VALUE_IS_OWNED_STRING:
return visitor.visitString(content_.asOwnedString->data,
content_.asOwnedString->length);
return visitor.visitString(JsonString(content_.asOwnedString->data,
content_.asOwnedString->length,
JsonString::Copied));
case VALUE_IS_RAW_STRING:
return visitor.visitRawString(content_.asOwnedString->data,

View File

@ -47,7 +47,7 @@ struct VariantDataVisitor {
return TResult();
}
TResult visitString(const char*, size_t) {
TResult visitString(JsonString) {
return TResult();
}
};