mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 08:42:39 +01:00 
			
		
		
		
	Added interface Printable.
This commit is contained in:
		| @@ -37,7 +37,7 @@ private: | ||||
|     JsonValue items[N]; | ||||
|     int itemCount; | ||||
|  | ||||
|     virtual size_t writeTo(Print& p) | ||||
|     virtual size_t writeTo(Print& p) const | ||||
|     { | ||||
|         size_t n = 0; | ||||
|          | ||||
|   | ||||
| @@ -94,6 +94,7 @@ | ||||
|     <ClInclude Include="JsonObjectBase.h" /> | ||||
|     <ClInclude Include="Print.h" /> | ||||
|     <ClInclude Include="JsonValue.h" /> | ||||
|     <ClInclude Include="Printable.h" /> | ||||
|     <ClInclude Include="StringBuilder.h" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   | ||||
| @@ -50,5 +50,8 @@ | ||||
|     <ClInclude Include="Print.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|     <ClInclude Include="Printable.h"> | ||||
|       <Filter>Header Files</Filter> | ||||
|     </ClInclude> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
| @@ -45,7 +45,7 @@ private: | ||||
|     KeyValuePair items[N]; | ||||
|     int itemCount; | ||||
|  | ||||
|     virtual size_t writeTo(Print& p) | ||||
|     virtual size_t writeTo(Print& p) const | ||||
|     { | ||||
|         size_t n = 0; | ||||
|  | ||||
|   | ||||
| @@ -7,8 +7,9 @@ | ||||
|  | ||||
| #include "JsonValue.h" | ||||
| #include "Print.h" | ||||
| #include "Printable.h" | ||||
|  | ||||
| class JsonObjectBase | ||||
| class JsonObjectBase : public Printable | ||||
| { | ||||
| public: | ||||
|  | ||||
| @@ -18,6 +19,6 @@ public: | ||||
|         return writeTo(sb); | ||||
|     } | ||||
|  | ||||
|     virtual size_t writeTo(Print& p) = 0; | ||||
|     virtual size_t writeTo(Print& p) const = 0; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -8,12 +8,12 @@ | ||||
| #include <cstdio> | ||||
| #include <cstring> | ||||
|  | ||||
| size_t JsonValue::writeBooleanTo(Print& p) | ||||
| size_t JsonValue::writeBooleanTo(Print& p) const | ||||
| { | ||||
|     return p.write(content.boolean ? "true" : "false"); | ||||
| } | ||||
|  | ||||
| size_t JsonValue::writeNumberTo(Print& p) | ||||
| size_t JsonValue::writeNumberTo(Print& p) const | ||||
| { | ||||
|     char tmp[16]; | ||||
|  | ||||
| @@ -22,7 +22,7 @@ size_t JsonValue::writeNumberTo(Print& p) | ||||
|     return p.write(tmp); | ||||
| } | ||||
|  | ||||
| size_t JsonValue::writeObjectTo(Print& p) | ||||
| size_t JsonValue::writeObjectTo(Print& p) const | ||||
| { | ||||
|     if (content.object) | ||||
|         return ((JsonObjectBase*)content.object)->writeTo(p); | ||||
| @@ -30,7 +30,7 @@ size_t JsonValue::writeObjectTo(Print& p) | ||||
|         return p.write("null"); | ||||
| } | ||||
|  | ||||
| size_t JsonValue::writeStringTo(Print& p) | ||||
| size_t JsonValue::writeStringTo(Print& p) const | ||||
| { | ||||
|     auto s = content.string; | ||||
|  | ||||
|   | ||||
| @@ -5,11 +5,10 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include "Printable.h" | ||||
| #include "StringBuilder.h" | ||||
|  | ||||
| class JsonObjectBase; | ||||
|  | ||||
| class JsonValue | ||||
| class JsonValue : public Printable | ||||
| {     | ||||
| public: | ||||
|  | ||||
| @@ -35,13 +34,13 @@ public: | ||||
|         content.boolean = value; | ||||
|     } | ||||
|  | ||||
|     JsonValue(JsonObjectBase& value) | ||||
|     JsonValue(Printable& value) | ||||
|         : implementation(&JsonValue::writeObjectTo) | ||||
|     { | ||||
|         content.object = &value; | ||||
|     } | ||||
|  | ||||
|     size_t writeTo(Print& p) | ||||
|     virtual size_t writeTo(Print& p) const | ||||
|     { | ||||
|         // handmade polymorphism | ||||
|         return (this->*implementation)(p); | ||||
| @@ -51,18 +50,18 @@ private: | ||||
|      | ||||
|     union Content | ||||
|     { | ||||
|         bool            boolean; | ||||
|         double          number; | ||||
|         JsonObjectBase* object; | ||||
|         const char*     string; | ||||
|         bool        boolean; | ||||
|         double      number; | ||||
|         Printable*  object; | ||||
|         const char* string; | ||||
|     }; | ||||
|  | ||||
|     Content content; | ||||
|  | ||||
|     size_t(JsonValue::*implementation)(Print& p); | ||||
|     size_t(JsonValue::*implementation)(Print& p)const; | ||||
|  | ||||
|     size_t writeBooleanTo(Print& p); | ||||
|     size_t writeNumberTo(Print& p); | ||||
|     size_t writeObjectTo(Print& p); | ||||
|     size_t writeStringTo(Print& p); | ||||
|     size_t writeBooleanTo(Print& p) const; | ||||
|     size_t writeNumberTo(Print& p) const; | ||||
|     size_t writeObjectTo(Print& p) const; | ||||
|     size_t writeStringTo(Print& p) const; | ||||
| }; | ||||
							
								
								
									
										16
									
								
								JsonGeneratorTests/Printable.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								JsonGeneratorTests/Printable.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| /* | ||||
|  * Arduino JSON library | ||||
|  * Benoit Blanchon 2014 - MIT License | ||||
|  */ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| class Print; | ||||
|  | ||||
| class Printable | ||||
| { | ||||
| public: | ||||
|  | ||||
|     virtual size_t writeTo(Print& p) const = 0; | ||||
| }; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user