mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-29 18:27:37 +02:00
visitRawString()
takes a RawString
This commit is contained in:
@ -73,8 +73,8 @@ class JsonSerializer : public VariantDataVisitor<size_t> {
|
||||
return bytesWritten();
|
||||
}
|
||||
|
||||
size_t visitRawString(const char* data, size_t n) {
|
||||
formatter_.writeRaw(data, n);
|
||||
size_t visitRawString(RawString value) {
|
||||
formatter_.writeRaw(value.data(), value.size());
|
||||
return bytesWritten();
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,8 @@ class SerializedValue<TChar*> {
|
||||
size_t size_;
|
||||
};
|
||||
|
||||
using RawString = SerializedValue<const char*>;
|
||||
|
||||
template <typename T>
|
||||
inline SerializedValue<T> serialized(T str) {
|
||||
return SerializedValue<T>(str);
|
||||
|
@ -104,8 +104,8 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
||||
return bytesWritten();
|
||||
}
|
||||
|
||||
size_t visitRawString(const char* data, size_t size) {
|
||||
writeBytes(reinterpret_cast<const uint8_t*>(data), size);
|
||||
size_t visitRawString(RawString value) {
|
||||
writeBytes(reinterpret_cast<const uint8_t*>(value.data()), value.size());
|
||||
return bytesWritten();
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ struct JsonVariantVisitor {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitRawString(const char*, size_t) {
|
||||
TResult visitRawString(RawString) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
@ -76,8 +76,8 @@ class VisitorAdapter {
|
||||
return visitor_->visitString(value);
|
||||
}
|
||||
|
||||
result_type visitRawString(const char* p, size_t n) {
|
||||
return visitor_->visitRawString(p, n);
|
||||
result_type visitRawString(RawString value) {
|
||||
return visitor_->visitRawString(value);
|
||||
}
|
||||
|
||||
result_type visitSignedInteger(JsonInteger value) {
|
||||
|
@ -105,15 +105,13 @@ struct ObjectComparer : ComparerBase {
|
||||
};
|
||||
|
||||
struct RawComparer : ComparerBase {
|
||||
const char* rhsData_;
|
||||
size_t rhsSize_;
|
||||
RawString rhs_;
|
||||
|
||||
explicit RawComparer(const char* rhsData, size_t rhsSize)
|
||||
: rhsData_(rhsData), rhsSize_(rhsSize) {}
|
||||
explicit RawComparer(RawString rhs) : rhs_(rhs) {}
|
||||
|
||||
CompareResult visitRawString(const char* lhsData, size_t lhsSize) {
|
||||
size_t size = rhsSize_ < lhsSize ? rhsSize_ : lhsSize;
|
||||
int n = memcmp(lhsData, rhsData_, size);
|
||||
CompareResult visitRawString(RawString lhs) {
|
||||
size_t size = rhs_.size() < lhs.size() ? rhs_.size() : lhs.size();
|
||||
int n = memcmp(lhs.data(), rhs_.data(), size);
|
||||
if (n < 0)
|
||||
return COMPARE_RESULT_LESS;
|
||||
else if (n > 0)
|
||||
@ -148,8 +146,8 @@ struct VariantComparer : ComparerBase {
|
||||
return reverseResult(comparer);
|
||||
}
|
||||
|
||||
CompareResult visitRawString(const char* lhsData, size_t lhsSize) {
|
||||
RawComparer comparer(lhsData, lhsSize);
|
||||
CompareResult visitRawString(RawString value) {
|
||||
RawComparer comparer(value);
|
||||
return reverseResult(comparer);
|
||||
}
|
||||
|
||||
|
@ -45,8 +45,8 @@ class VariantData {
|
||||
JsonString::Copied));
|
||||
|
||||
case VALUE_IS_RAW_STRING:
|
||||
return visitor.visitRawString(content_.asOwnedString->data,
|
||||
content_.asOwnedString->length);
|
||||
return visitor.visitRawString(RawString(
|
||||
content_.asOwnedString->data, content_.asOwnedString->length));
|
||||
|
||||
case VALUE_IS_SIGNED_INTEGER:
|
||||
return visitor.visitSignedInteger(content_.asSignedInteger);
|
||||
|
@ -43,7 +43,7 @@ struct VariantDataVisitor {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
TResult visitRawString(const char*, size_t) {
|
||||
TResult visitRawString(RawString) {
|
||||
return TResult();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user