Added a return value to visitors

This commit is contained in:
Benoit Blanchon
2020-08-29 18:40:27 +02:00
parent f448e805e9
commit 5ab53f42b2
20 changed files with 298 additions and 198 deletions

View File

@@ -12,11 +12,11 @@
namespace ARDUINOJSON_NAMESPACE {
template <typename TWriter>
class JsonSerializer {
class JsonSerializer : public Visitor<size_t> {
public:
JsonSerializer(TWriter writer) : _formatter(writer) {}
FORCE_INLINE void visitArray(const CollectionData &array) {
FORCE_INLINE size_t visitArray(const CollectionData &array) {
write('[');
VariantSlot *slot = array.head();
@@ -32,9 +32,10 @@ class JsonSerializer {
}
write(']');
return bytesWritten();
}
void visitObject(const CollectionData &object) {
size_t visitObject(const CollectionData &object) {
write('{');
VariantSlot *slot = object.head();
@@ -52,41 +53,49 @@ class JsonSerializer {
}
write('}');
return bytesWritten();
}
void visitFloat(Float value) {
size_t visitFloat(Float value) {
_formatter.writeFloat(value);
return bytesWritten();
}
void visitString(const char *value) {
size_t visitString(const char *value) {
_formatter.writeString(value);
return bytesWritten();
}
void visitRawJson(const char *data, size_t n) {
size_t visitRawJson(const char *data, size_t n) {
_formatter.writeRaw(data, n);
return bytesWritten();
}
void visitNegativeInteger(UInt value) {
size_t visitNegativeInteger(UInt value) {
_formatter.writeNegativeInteger(value);
return bytesWritten();
}
void visitPositiveInteger(UInt value) {
size_t visitPositiveInteger(UInt value) {
_formatter.writePositiveInteger(value);
return bytesWritten();
}
void visitBoolean(bool value) {
size_t visitBoolean(bool value) {
_formatter.writeBoolean(value);
return bytesWritten();
}
void visitNull() {
size_t visitNull() {
_formatter.writeRaw("null");
return bytesWritten();
}
protected:
size_t bytesWritten() const {
return _formatter.bytesWritten();
}
protected:
void write(char c) {
_formatter.writeRaw(c);
}