diff --git a/JsonGenerator/JsonValue.cpp b/JsonGenerator/JsonValue.cpp index d977810a..01a2c9d3 100644 --- a/JsonGenerator/JsonValue.cpp +++ b/JsonGenerator/JsonValue.cpp @@ -7,32 +7,32 @@ using namespace ArduinoJson::Generator; -size_t JsonValue::printBoolTo(Print& p) const +size_t JsonValue::printBoolTo(const Content& c, Print& p) { - return p.print(content.asBool ? "true" : "false"); + return p.print(c.asBool ? "true" : "false"); } -size_t JsonValue::printDoubleTo(Print& p) const +size_t JsonValue::printDoubleTo(const Content& c, Print& p) { - return p.print(content.asDouble.value, content.asDouble.digits); + return p.print(c.asDouble.value, c.asDouble.digits); } -size_t JsonValue::printLongTo(Print& p) const +size_t JsonValue::printLongTo(const Content& c, Print& p) { - return p.print(content.asLong); + return p.print(c.asLong); } -size_t JsonValue::printPrintableTo(Print& p) const +size_t JsonValue::printPrintableTo(const Content& c, Print& p) { - if (content.asPrintable) - return ((Printable*) content.asPrintable)->printTo(p); + if (c.asPrintable) + return ((Printable*) c.asPrintable)->printTo(p); else return p.print("null"); } -size_t JsonValue::printStringTo(Print& p) const +size_t JsonValue::printStringTo(const Content& c, Print& p) { - const char* s = content.asString; + const char* s = c.asString; if (!s) { diff --git a/JsonGenerator/JsonValue.h b/JsonGenerator/JsonValue.h index bfc5010d..0a4ab504 100644 --- a/JsonGenerator/JsonValue.h +++ b/JsonGenerator/JsonValue.h @@ -21,38 +21,38 @@ namespace ArduinoJson } JsonValue(bool value) - : implementation(&JsonValue::printBoolTo) + : printToImpl(&printBoolTo) { content.asBool = value; } JsonValue(double value, uint8_t digits = 2) - : implementation(&JsonValue::printDoubleTo) + : printToImpl(&printDoubleTo) { content.asDouble.value = value; content.asDouble.digits = digits; } JsonValue(long value) - : implementation(&JsonValue::printLongTo) + : printToImpl(&printLongTo) { content.asLong = value; } JsonValue(int value) - : implementation(&JsonValue::printLongTo) + : printToImpl(&printLongTo) { content.asLong = value; } JsonValue(Printable& value) - : implementation(&JsonValue::printPrintableTo) + : printToImpl(&printPrintableTo) { content.asPrintable = &value; } JsonValue(const char* value) - : implementation(&JsonValue::printStringTo) + : printToImpl(&printStringTo) { content.asString = value; } @@ -60,7 +60,7 @@ namespace ArduinoJson size_t printTo(Print& p) const { // handmade polymorphism - return (this->*implementation)(p); + return printToImpl(content, p); } private: @@ -79,13 +79,13 @@ namespace ArduinoJson Content content; - size_t(JsonValue::*implementation)(Print& p)const; + size_t(*printToImpl)(const Content&, Print& p); - size_t printBoolTo(Print& p) const; - size_t printDoubleTo(Print& p) const; - size_t printLongTo(Print& p) const; - size_t printPrintableTo(Print& p) const; - size_t printStringTo(Print& p) const; + static size_t printBoolTo(const Content&, Print& p); + static size_t printDoubleTo(const Content&, Print& p); + static size_t printLongTo(const Content&, Print& p); + static size_t printPrintableTo(const Content&, Print& p); + static size_t printStringTo(const Content&, Print& p); }; } } \ No newline at end of file