mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Reduced the size of JsonValue by removing the pointer to instance methods.
This commit is contained in:
		| @@ -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) | ||||
|     { | ||||
|   | ||||
| @@ -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); | ||||
|         }; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user