visitRawString() takes a RawString

This commit is contained in:
Benoit Blanchon
2023-07-10 15:56:45 +02:00
parent da845ae01d
commit 21bf4973de
7 changed files with 19 additions and 19 deletions

View File

@ -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();
}

View File

@ -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);

View File

@ -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();
}

View File

@ -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) {

View File

@ -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);
}

View File

@ -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);

View File

@ -43,7 +43,7 @@ struct VariantDataVisitor {
return TResult();
}
TResult visitRawString(const char*, size_t) {
TResult visitRawString(RawString) {
return TResult();
}