Simplified JsonWriter hierarchy

This commit is contained in:
Benoit Blanchon
2014-11-03 12:58:52 +01:00
parent 2a60c96baf
commit 54f9bd9572
7 changed files with 14 additions and 55 deletions

View File

@ -1,28 +0,0 @@
// Copyright Benoit Blanchon 2014
// MIT License
//
// Arduino JSON library
// https://github.com/bblanchon/ArduinoJson
#pragma once
#include "JsonWriter.hpp"
namespace ArduinoJson {
namespace Internals {
class CompactJsonWriter : public JsonWriter {
public:
explicit CompactJsonWriter(Print *sink) : JsonWriter(sink) {}
void beginArray() { _length += _sink->write('['); }
void endArray() { _length += _sink->write(']'); }
void beginObject() { _length += _sink->write('{'); }
void endObject() { _length += _sink->write('}'); }
void writeColon() { _length += _sink->write(':'); }
void writeComma() { _length += _sink->write(','); }
};
}
}

View File

@ -17,8 +17,12 @@ class JsonWriter {
size_t bytesWritten() { return _length; }
void beginArray() { _length += _sink->write('['); }
void endArray() { _length += _sink->write(']'); }
void writeEmptyArray() { _length += _sink->print("[]"); }
void beginObject() { _length += _sink->write('{'); }
void endObject() { _length += _sink->write('}'); }
void writeEmptyObject() { _length += _sink->print("{}"); }
void writeString(const char *value);
@ -26,6 +30,9 @@ class JsonWriter {
void writeBoolean(bool value);
void writeDouble(double value, int decimals);
void writeColon() { _length += _sink->write(':'); }
void writeComma() { _length += _sink->write(','); }
protected:
Print *_sink;
size_t _length;

View File

@ -6,19 +6,17 @@
#pragma once
#include "Arduino/Printable.hpp"
#include "Internals/StringBuilder.hpp"
#include "Internals/IndentedPrint.hpp"
#include "Internals/CompactJsonWriter.hpp"
#include "Internals/PrettyJsonWriter.hpp"
namespace ArduinoJson {
template <typename T>
class JsonPrintable : public Printable {
class JsonPrintable {
public:
size_t printTo(Print &print) const {
Internals::CompactJsonWriter writer(&print);
Internals::JsonWriter writer(&print);
downcast().writeTo(writer);
return writer.bytesWritten();
}