diff --git a/JsonGeneratorTests/JsonArray.h b/JsonGeneratorTests/JsonArray.h
index 9d612684..cf1bea97 100644
--- a/JsonGeneratorTests/JsonArray.h
+++ b/JsonGeneratorTests/JsonArray.h
@@ -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;
diff --git a/JsonGeneratorTests/JsonGeneratorTests.vcxproj b/JsonGeneratorTests/JsonGeneratorTests.vcxproj
index 3de0894e..67807102 100644
--- a/JsonGeneratorTests/JsonGeneratorTests.vcxproj
+++ b/JsonGeneratorTests/JsonGeneratorTests.vcxproj
@@ -94,6 +94,7 @@
+
diff --git a/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters b/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
index db203657..0ac6b8d9 100644
--- a/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
+++ b/JsonGeneratorTests/JsonGeneratorTests.vcxproj.filters
@@ -50,5 +50,8 @@
Header Files
+
+ Header Files
+
\ No newline at end of file
diff --git a/JsonGeneratorTests/JsonHashTable.h b/JsonGeneratorTests/JsonHashTable.h
index aca50bf7..f2894d73 100644
--- a/JsonGeneratorTests/JsonHashTable.h
+++ b/JsonGeneratorTests/JsonHashTable.h
@@ -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;
diff --git a/JsonGeneratorTests/JsonObjectBase.h b/JsonGeneratorTests/JsonObjectBase.h
index f8ffd3f9..7daad792 100644
--- a/JsonGeneratorTests/JsonObjectBase.h
+++ b/JsonGeneratorTests/JsonObjectBase.h
@@ -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;
};
diff --git a/JsonGeneratorTests/JsonValue.cpp b/JsonGeneratorTests/JsonValue.cpp
index 284fef47..5a23e9b0 100644
--- a/JsonGeneratorTests/JsonValue.cpp
+++ b/JsonGeneratorTests/JsonValue.cpp
@@ -8,12 +8,12 @@
#include
#include
-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;
diff --git a/JsonGeneratorTests/JsonValue.h b/JsonGeneratorTests/JsonValue.h
index 9f98c4dd..5fb506b6 100644
--- a/JsonGeneratorTests/JsonValue.h
+++ b/JsonGeneratorTests/JsonValue.h
@@ -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;
};
\ No newline at end of file
diff --git a/JsonGeneratorTests/Printable.h b/JsonGeneratorTests/Printable.h
new file mode 100644
index 00000000..136aac7d
--- /dev/null
+++ b/JsonGeneratorTests/Printable.h
@@ -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;
+};
+