forked from bblanchon/ArduinoJson
visitString()
takes a JsonString
This commit is contained in:
@ -68,8 +68,8 @@ class JsonSerializer : public VariantDataVisitor<size_t> {
|
|||||||
return bytesWritten();
|
return bytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t visitString(const char* value, size_t n) {
|
size_t visitString(JsonString value) {
|
||||||
formatter_.writeString(value, n);
|
formatter_.writeString(value.c_str(), value.size());
|
||||||
return bytesWritten();
|
return bytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,12 +80,14 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t visitString(const char* value) {
|
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);
|
ARDUINOJSON_ASSERT(value != NULL);
|
||||||
|
|
||||||
|
auto n = value.size();
|
||||||
|
|
||||||
if (n < 0x20) {
|
if (n < 0x20) {
|
||||||
writeByte(uint8_t(0xA0 + n));
|
writeByte(uint8_t(0xA0 + n));
|
||||||
} else if (n < 0x100) {
|
} else if (n < 0x100) {
|
||||||
@ -98,7 +100,7 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
|||||||
writeByte(0xDB);
|
writeByte(0xDB);
|
||||||
writeInteger(uint32_t(n));
|
writeInteger(uint32_t(n));
|
||||||
}
|
}
|
||||||
writeBytes(reinterpret_cast<const uint8_t*>(value), n);
|
writeBytes(reinterpret_cast<const uint8_t*>(value.c_str()), n);
|
||||||
return bytesWritten();
|
return bytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ struct JsonVariantVisitor {
|
|||||||
return TResult();
|
return TResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
TResult visitString(const char*, size_t) {
|
TResult visitString(JsonString) {
|
||||||
return TResult();
|
return TResult();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -72,8 +72,8 @@ class VisitorAdapter {
|
|||||||
return visitor_->visitFloat(value);
|
return visitor_->visitFloat(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
result_type visitString(const char* s, size_t n) {
|
result_type visitString(JsonString value) {
|
||||||
return visitor_->visitString(s, n);
|
return visitor_->visitString(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
result_type visitRawString(const char* p, size_t n) {
|
result_type visitRawString(const char* p, size_t n) {
|
||||||
|
@ -24,8 +24,8 @@ struct Comparer<T, typename enable_if<IsString<T>::value>::type>
|
|||||||
|
|
||||||
explicit Comparer(T value) : rhs(value) {}
|
explicit Comparer(T value) : rhs(value) {}
|
||||||
|
|
||||||
CompareResult visitString(const char* lhs, size_t n) {
|
CompareResult visitString(JsonString lhs) {
|
||||||
int i = stringCompare(adaptString(rhs), adaptString(lhs, n));
|
int i = stringCompare(adaptString(rhs), adaptString(lhs));
|
||||||
if (i < 0)
|
if (i < 0)
|
||||||
return COMPARE_RESULT_GREATER;
|
return COMPARE_RESULT_GREATER;
|
||||||
else if (i > 0)
|
else if (i > 0)
|
||||||
@ -143,8 +143,8 @@ struct VariantComparer : ComparerBase {
|
|||||||
return reverseResult(comparer);
|
return reverseResult(comparer);
|
||||||
}
|
}
|
||||||
|
|
||||||
CompareResult visitString(const char* lhs, size_t) {
|
CompareResult visitString(JsonString lhs) {
|
||||||
Comparer<const char*> comparer(lhs);
|
Comparer<JsonString> comparer(lhs);
|
||||||
return reverseResult(comparer);
|
return reverseResult(comparer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,12 +37,12 @@ class VariantData {
|
|||||||
return visitor.visitObject(content_.asObject);
|
return visitor.visitObject(content_.asObject);
|
||||||
|
|
||||||
case VALUE_IS_LINKED_STRING:
|
case VALUE_IS_LINKED_STRING:
|
||||||
return visitor.visitString(content_.asLinkedString,
|
return visitor.visitString(JsonString(content_.asLinkedString));
|
||||||
strlen(content_.asLinkedString));
|
|
||||||
|
|
||||||
case VALUE_IS_OWNED_STRING:
|
case VALUE_IS_OWNED_STRING:
|
||||||
return visitor.visitString(content_.asOwnedString->data,
|
return visitor.visitString(JsonString(content_.asOwnedString->data,
|
||||||
content_.asOwnedString->length);
|
content_.asOwnedString->length,
|
||||||
|
JsonString::Copied));
|
||||||
|
|
||||||
case VALUE_IS_RAW_STRING:
|
case VALUE_IS_RAW_STRING:
|
||||||
return visitor.visitRawString(content_.asOwnedString->data,
|
return visitor.visitRawString(content_.asOwnedString->data,
|
||||||
|
@ -47,7 +47,7 @@ struct VariantDataVisitor {
|
|||||||
return TResult();
|
return TResult();
|
||||||
}
|
}
|
||||||
|
|
||||||
TResult visitString(const char*, size_t) {
|
TResult visitString(JsonString) {
|
||||||
return TResult();
|
return TResult();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user