Clang-format: set DerivePointerAlignment to false

This commit is contained in:
Benoit Blanchon
2022-08-09 16:52:17 +02:00
parent 62e83133cd
commit 8002722f3b
53 changed files with 514 additions and 513 deletions

View File

@ -5,6 +5,7 @@ Standard: Cpp03
AllowShortFunctionsOnASingleLine: Empty AllowShortFunctionsOnASingleLine: Empty
IncludeBlocks: Preserve IncludeBlocks: Preserve
IndentPPDirectives: AfterHash IndentPPDirectives: AfterHash
DerivePointerAlignment: false
# Always break after if to get accurate coverage # Always break after if to get accurate coverage
AllowShortIfStatementsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false

View File

@ -1,6 +1,6 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
DeserializationError error = deserializeJson(doc, data, size); DeserializationError error = deserializeJson(doc, data, size);
if (!error) { if (!error) {

View File

@ -1,6 +1,6 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
DeserializationError error = deserializeMsgPack(doc, data, size); DeserializationError error = deserializeMsgPack(doc, data, size);
if (!error) { if (!error) {

View File

@ -5,8 +5,8 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <catch.hpp> #include <catch.hpp>
static void eraseString(std::string &str) { static void eraseString(std::string& str) {
char *p = const_cast<char *>(str.c_str()); char* p = const_cast<char*>(str.c_str());
while (*p) *p++ = '*'; while (*p) *p++ = '*';
} }

View File

@ -10,7 +10,7 @@ using namespace ARDUINOJSON_NAMESPACE;
TEST_CASE("ElementProxy::add()") { TEST_CASE("ElementProxy::add()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.add(); doc.add();
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("add(int)") { SECTION("add(int)") {
ep.add(42); ep.add(42);
@ -36,7 +36,7 @@ TEST_CASE("ElementProxy::add()") {
TEST_CASE("ElementProxy::clear()") { TEST_CASE("ElementProxy::clear()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.add(); doc.add();
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("size goes back to zero") { SECTION("size goes back to zero") {
ep.add(42); ep.add(42);
@ -96,7 +96,7 @@ TEST_CASE("ElementProxy::operator==()") {
TEST_CASE("ElementProxy::remove()") { TEST_CASE("ElementProxy::remove()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.add(); doc.add();
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("remove(int)") { SECTION("remove(int)") {
ep.add(1); ep.add(1);
@ -143,7 +143,7 @@ TEST_CASE("ElementProxy::remove()") {
TEST_CASE("ElementProxy::set()") { TEST_CASE("ElementProxy::set()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("set(int)") { SECTION("set(int)") {
ep.set(42); ep.set(42);
@ -169,7 +169,7 @@ TEST_CASE("ElementProxy::set()") {
TEST_CASE("ElementProxy::size()") { TEST_CASE("ElementProxy::size()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.add(); doc.add();
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("returns 0") { SECTION("returns 0") {
REQUIRE(ep.size() == 0); REQUIRE(ep.size() == 0);
@ -191,7 +191,7 @@ TEST_CASE("ElementProxy::size()") {
TEST_CASE("ElementProxy::memoryUsage()") { TEST_CASE("ElementProxy::memoryUsage()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.add(); doc.add();
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
SECTION("returns 0 for null") { SECTION("returns 0 for null") {
REQUIRE(ep.memoryUsage() == 0); REQUIRE(ep.memoryUsage() == 0);
@ -205,7 +205,7 @@ TEST_CASE("ElementProxy::memoryUsage()") {
TEST_CASE("ElementProxy::operator[]") { TEST_CASE("ElementProxy::operator[]") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
ElementProxy<JsonDocument &> ep = doc[1]; ElementProxy<JsonDocument&> ep = doc[1];
SECTION("set member") { SECTION("set member") {
ep["world"] = 42; ep["world"] = 42;
@ -224,7 +224,7 @@ TEST_CASE("ElementProxy cast to JsonVariantConst") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc[0] = "world"; doc[0] = "world";
const ElementProxy<JsonDocument &> ep = doc[0]; const ElementProxy<JsonDocument&> ep = doc[0];
JsonVariantConst var = ep; JsonVariantConst var = ep;
@ -235,7 +235,7 @@ TEST_CASE("ElementProxy cast to JsonVariant") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc[0] = "world"; doc[0] = "world";
ElementProxy<JsonDocument &> ep = doc[0]; ElementProxy<JsonDocument&> ep = doc[0];
JsonVariant var = ep; JsonVariant var = ep;

View File

@ -9,7 +9,7 @@ using namespace ARDUINOJSON_NAMESPACE;
TEST_CASE("MemberProxy::add()") { TEST_CASE("MemberProxy::add()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("add(int)") { SECTION("add(int)") {
mp.add(42); mp.add(42);
@ -26,7 +26,7 @@ TEST_CASE("MemberProxy::add()") {
TEST_CASE("MemberProxy::clear()") { TEST_CASE("MemberProxy::clear()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("size goes back to zero") { SECTION("size goes back to zero") {
mp.add(42); mp.add(42);
@ -85,7 +85,7 @@ TEST_CASE("MemberProxy::operator==()") {
TEST_CASE("MemberProxy::containsKey()") { TEST_CASE("MemberProxy::containsKey()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("containsKey(const char*)") { SECTION("containsKey(const char*)") {
mp["key"] = "value"; mp["key"] = "value";
@ -115,9 +115,9 @@ TEST_CASE("MemberProxy::operator|()") {
SECTION("Issue #1411") { SECTION("Issue #1411") {
doc["sensor"] = "gps"; doc["sensor"] = "gps";
const char *test = "test"; // <- the literal must be captured in a variable const char* test = "test"; // <- the literal must be captured in a variable
// to trigger the bug // to trigger the bug
const char *sensor = doc["sensor"] | test; // "gps" const char* sensor = doc["sensor"] | test; // "gps"
REQUIRE(sensor == std::string("gps")); REQUIRE(sensor == std::string("gps"));
} }
@ -136,7 +136,7 @@ TEST_CASE("MemberProxy::operator|()") {
TEST_CASE("MemberProxy::remove()") { TEST_CASE("MemberProxy::remove()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("remove(int)") { SECTION("remove(int)") {
mp.add(1); mp.add(1);
@ -183,7 +183,7 @@ TEST_CASE("MemberProxy::remove()") {
TEST_CASE("MemberProxy::set()") { TEST_CASE("MemberProxy::set()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("set(int)") { SECTION("set(int)") {
mp.set(42); mp.set(42);
@ -208,7 +208,7 @@ TEST_CASE("MemberProxy::set()") {
TEST_CASE("MemberProxy::size()") { TEST_CASE("MemberProxy::size()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("returns 0") { SECTION("returns 0") {
REQUIRE(mp.size() == 0); REQUIRE(mp.size() == 0);
@ -231,7 +231,7 @@ TEST_CASE("MemberProxy::size()") {
TEST_CASE("MemberProxy::memoryUsage()") { TEST_CASE("MemberProxy::memoryUsage()") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("returns 0 when null") { SECTION("returns 0 when null") {
REQUIRE(mp.memoryUsage() == 0); REQUIRE(mp.memoryUsage() == 0);
@ -245,7 +245,7 @@ TEST_CASE("MemberProxy::memoryUsage()") {
TEST_CASE("MemberProxy::operator[]") { TEST_CASE("MemberProxy::operator[]") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
SECTION("set member") { SECTION("set member") {
mp["world"] = 42; mp["world"] = 42;
@ -264,7 +264,7 @@ TEST_CASE("MemberProxy cast to JsonVariantConst") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc["hello"] = "world"; doc["hello"] = "world";
const MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; const MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
JsonVariantConst var = mp; JsonVariantConst var = mp;
@ -275,7 +275,7 @@ TEST_CASE("MemberProxy cast to JsonVariant") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc["hello"] = "world"; doc["hello"] = "world";
MemberProxy<JsonDocument &, const char *> mp = doc["hello"]; MemberProxy<JsonDocument&, const char*> mp = doc["hello"];
JsonVariant var = mp; JsonVariant var = mp;

View File

@ -5,8 +5,8 @@
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <catch.hpp> #include <catch.hpp>
static void eraseString(std::string &str) { static void eraseString(std::string& str) {
char *p = const_cast<char *>(str.c_str()); char* p = const_cast<char*>(str.c_str());
while (*p) *p++ = '*'; while (*p) *p++ = '*';
} }

View File

@ -14,18 +14,18 @@ class CustomWriter {
return 1; return 1;
} }
size_t write(const uint8_t *s, size_t n) { size_t write(const uint8_t* s, size_t n) {
_str.append(reinterpret_cast<const char *>(s), n); _str.append(reinterpret_cast<const char*>(s), n);
return n; return n;
} }
const std::string &str() const { const std::string& str() const {
return _str; return _str;
} }
private: private:
CustomWriter(const CustomWriter &); // non-copiable CustomWriter(const CustomWriter&); // non-copiable
CustomWriter &operator=(const CustomWriter &); CustomWriter& operator=(const CustomWriter&);
std::string _str; std::string _str;
}; };

View File

@ -23,7 +23,7 @@ TEST_CASE("serializeJson(JsonArray)") {
} }
SECTION("Null") { SECTION("Null") {
array.add(static_cast<char *>(0)); array.add(static_cast<char*>(0));
check(array, "[null]"); check(array, "[null]");
} }

View File

@ -6,7 +6,7 @@
#include <catch.hpp> #include <catch.hpp>
#include <string> #include <string>
static void checkObject(const JsonObject obj, const std::string &expected) { static void checkObject(const JsonObject obj, const std::string& expected) {
char actual[256]; char actual[256];
memset(actual, '!', sizeof(actual)); memset(actual, '!', sizeof(actual));
@ -84,8 +84,8 @@ TEST_CASE("serializeJson(JsonObject)") {
} }
SECTION("TwoNull") { SECTION("TwoNull") {
obj["a"] = static_cast<char *>(0); obj["a"] = static_cast<char*>(0);
obj["b"] = static_cast<char *>(0); obj["b"] = static_cast<char*>(0);
checkObject(obj, "{\"a\":null,\"b\":null}"); checkObject(obj, "{\"a\":null,\"b\":null}");
} }

View File

@ -7,7 +7,7 @@
#include <limits> #include <limits>
template <typename T> template <typename T>
void check(T value, const std::string &expected) { void check(T value, const std::string& expected) {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.to<JsonVariant>().set(value); doc.to<JsonVariant>().set(value);
char buffer[256] = ""; char buffer[256] = "";
@ -22,7 +22,7 @@ TEST_CASE("serializeJson(JsonVariant)") {
} }
SECTION("Null string") { SECTION("Null string") {
check(static_cast<char *>(0), "null"); check(static_cast<char*>(0), "null");
} }
SECTION("const char*") { SECTION("const char*") {

View File

@ -19,7 +19,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<JsonVariant>() == false); CHECK(variant.is<JsonVariant>() == false);
CHECK(variant.is<JsonVariantConst>() == false); CHECK(variant.is<JsonVariantConst>() == false);
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
@ -34,7 +34,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<JsonObject>() == false); CHECK(variant.is<JsonObject>() == false);
CHECK(variant.is<JsonArray>() == false); CHECK(variant.is<JsonArray>() == false);
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
@ -50,7 +50,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<JsonVariantConst>() == true); CHECK(variant.is<JsonVariantConst>() == true);
CHECK(variant.is<JsonObject>() == false); CHECK(variant.is<JsonObject>() == false);
CHECK(variant.is<JsonArray>() == false); CHECK(variant.is<JsonArray>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
@ -66,7 +66,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<JsonVariantConst>() == true); CHECK(variant.is<JsonVariantConst>() == true);
CHECK(variant.is<JsonObject>() == false); CHECK(variant.is<JsonObject>() == false);
CHECK(variant.is<JsonArray>() == false); CHECK(variant.is<JsonArray>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
@ -88,7 +88,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<JsonObject>() == false); CHECK(variant.is<JsonObject>() == false);
CHECK(variant.is<JsonArray>() == false); CHECK(variant.is<JsonArray>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
} }
@ -103,7 +103,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<JsonObject>() == false); CHECK(variant.is<JsonObject>() == false);
CHECK(variant.is<JsonArray>() == false); CHECK(variant.is<JsonArray>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<std::string>() == false); CHECK(variant.is<std::string>() == false);
CHECK(variant.is<JsonString>() == false); CHECK(variant.is<JsonString>() == false);
@ -113,8 +113,8 @@ TEST_CASE("JsonVariant::is<T>()") {
SECTION("const char*") { SECTION("const char*") {
variant.set("4.2"); variant.set("4.2");
CHECK(variant.is<const char *>() == true); CHECK(variant.is<const char*>() == true);
CHECK(variant.is<const char *>() == true); CHECK(variant.is<const char*>() == true);
CHECK(variant.is<std::string>() == true); CHECK(variant.is<std::string>() == true);
CHECK(variant.is<JsonString>() == true); CHECK(variant.is<JsonString>() == true);
CHECK(variant.is<JsonVariant>() == true); CHECK(variant.is<JsonVariant>() == true);
@ -140,7 +140,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<float>() == false); CHECK(variant.is<float>() == false);
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<MYENUM2>() == false); CHECK(variant.is<MYENUM2>() == false);
} }
@ -156,7 +156,7 @@ TEST_CASE("JsonVariant::is<T>()") {
CHECK(variant.is<int>() == false); CHECK(variant.is<int>() == false);
CHECK(variant.is<float>() == false); CHECK(variant.is<float>() == false);
CHECK(variant.is<bool>() == false); CHECK(variant.is<bool>() == false);
CHECK(variant.is<const char *>() == false); CHECK(variant.is<const char*>() == false);
CHECK(variant.is<MYENUM2>() == false); CHECK(variant.is<MYENUM2>() == false);
CHECK(variant.is<JsonVariant>() == true); CHECK(variant.is<JsonVariant>() == true);
CHECK(variant.is<JsonVariantConst>() == true); CHECK(variant.is<JsonVariantConst>() == true);
@ -178,7 +178,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<JsonVariantConst>() == false); CHECK(cvariant.is<JsonVariantConst>() == false);
CHECK(cvariant.is<bool>() == false); CHECK(cvariant.is<bool>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
@ -192,7 +192,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonArray>() == false); CHECK(cvariant.is<JsonArray>() == false);
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<bool>() == false); CHECK(cvariant.is<bool>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
@ -208,7 +208,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<JsonObject>() == false); CHECK(cvariant.is<JsonObject>() == false);
CHECK(cvariant.is<JsonArray>() == false); CHECK(cvariant.is<JsonArray>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
@ -224,7 +224,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<JsonObject>() == false); CHECK(cvariant.is<JsonObject>() == false);
CHECK(cvariant.is<JsonArray>() == false); CHECK(cvariant.is<JsonArray>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
@ -246,7 +246,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonObject>() == false); CHECK(cvariant.is<JsonObject>() == false);
CHECK(cvariant.is<JsonArray>() == false); CHECK(cvariant.is<JsonArray>() == false);
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
} }
@ -261,7 +261,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<JsonObject>() == false); CHECK(cvariant.is<JsonObject>() == false);
CHECK(cvariant.is<JsonArray>() == false); CHECK(cvariant.is<JsonArray>() == false);
CHECK(cvariant.is<JsonVariant>() == false); CHECK(cvariant.is<JsonVariant>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<std::string>() == false); CHECK(cvariant.is<std::string>() == false);
CHECK(cvariant.is<JsonString>() == false); CHECK(cvariant.is<JsonString>() == false);
@ -271,8 +271,8 @@ TEST_CASE("JsonVariantConst::is<T>()") {
SECTION("const char*") { SECTION("const char*") {
variant.set("4.2"); variant.set("4.2");
CHECK(cvariant.is<const char *>() == true); CHECK(cvariant.is<const char*>() == true);
CHECK(cvariant.is<const char *>() == true); CHECK(cvariant.is<const char*>() == true);
CHECK(cvariant.is<std::string>() == true); CHECK(cvariant.is<std::string>() == true);
CHECK(cvariant.is<JsonString>() == true); CHECK(cvariant.is<JsonString>() == true);
CHECK(cvariant.is<double>() == false); CHECK(cvariant.is<double>() == false);
@ -297,7 +297,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<float>() == false); CHECK(cvariant.is<float>() == false);
CHECK(cvariant.is<bool>() == false); CHECK(cvariant.is<bool>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<MYENUM2>() == false); CHECK(cvariant.is<MYENUM2>() == false);
} }
@ -313,7 +313,7 @@ TEST_CASE("JsonVariantConst::is<T>()") {
CHECK(cvariant.is<int>() == false); CHECK(cvariant.is<int>() == false);
CHECK(cvariant.is<float>() == false); CHECK(cvariant.is<float>() == false);
CHECK(cvariant.is<bool>() == false); CHECK(cvariant.is<bool>() == false);
CHECK(cvariant.is<const char *>() == false); CHECK(cvariant.is<const char*>() == false);
CHECK(cvariant.is<MYENUM2>() == false); CHECK(cvariant.is<MYENUM2>() == false);
} }
} }

View File

@ -15,7 +15,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
char str[16]; char str[16];
strcpy(str, "hello"); strcpy(str, "hello");
bool result = variant.set(static_cast<const char *>(str)); bool result = variant.set(static_cast<const char*>(str));
strcpy(str, "world"); strcpy(str, "world");
REQUIRE(result == true); REQUIRE(result == true);
@ -23,7 +23,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
} }
SECTION("(const char*)0") { SECTION("(const char*)0") {
bool result = variant.set(static_cast<const char *>(0)); bool result = variant.set(static_cast<const char*>(0));
REQUIRE(result == true); REQUIRE(result == true);
REQUIRE(variant.isNull()); REQUIRE(variant.isNull());
@ -41,7 +41,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
} }
SECTION("(char*)0") { SECTION("(char*)0") {
bool result = variant.set(static_cast<char *>(0)); bool result = variant.set(static_cast<char*>(0));
REQUIRE(result == true); REQUIRE(result == true);
REQUIRE(variant.isNull()); REQUIRE(variant.isNull());
@ -51,7 +51,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
char str[16]; char str[16];
strcpy(str, "hello"); strcpy(str, "hello");
bool result = variant.set(reinterpret_cast<unsigned char *>(str)); bool result = variant.set(reinterpret_cast<unsigned char*>(str));
strcpy(str, "world"); strcpy(str, "world");
REQUIRE(result == true); REQUIRE(result == true);
@ -62,7 +62,7 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
char str[16]; char str[16];
strcpy(str, "hello"); strcpy(str, "hello");
bool result = variant.set(reinterpret_cast<signed char *>(str)); bool result = variant.set(reinterpret_cast<signed char*>(str));
strcpy(str, "world"); strcpy(str, "world");
REQUIRE(result == true); REQUIRE(result == true);

View File

@ -17,9 +17,9 @@ void checkValue(T expected) {
} }
template <typename T> template <typename T>
void checkReference(T &expected) { void checkReference(T& expected) {
JsonVariant variant = expected; JsonVariant variant = expected;
REQUIRE(expected == variant.as<T &>()); REQUIRE(expected == variant.as<T&>());
} }
template <typename T> template <typename T>
@ -46,10 +46,10 @@ TEST_CASE("JsonVariant set()/get()") {
#endif #endif
SECTION("Null") { SECTION("Null") {
checkValue<const char *>(NULL); checkValue<const char*>(NULL);
} }
SECTION("const char*") { SECTION("const char*") {
checkValue<const char *>("hello"); checkValue<const char*>("hello");
} }
SECTION("std::string") { SECTION("std::string") {
checkValue<std::string>("hello"); checkValue<std::string>("hello");

View File

@ -22,7 +22,7 @@ TEST_CASE("MemoryPool::clear()") {
} }
SECTION("Discards allocated strings") { SECTION("Discards allocated strings") {
pool.saveString(adaptString(const_cast<char *>("123456789"))); pool.saveString(adaptString(const_cast<char*>("123456789")));
REQUIRE(pool.size() == 10); REQUIRE(pool.size() == 10);
pool.clear(); pool.clear();

View File

@ -8,11 +8,11 @@
using namespace ARDUINOJSON_NAMESPACE; using namespace ARDUINOJSON_NAMESPACE;
static const char *saveString(MemoryPool &pool, const char *s) { static const char* saveString(MemoryPool& pool, const char* s) {
return pool.saveString(adaptString(const_cast<char *>(s))); return pool.saveString(adaptString(const_cast<char*>(s)));
} }
static const char *saveString(MemoryPool &pool, const char *s, size_t n) { static const char* saveString(MemoryPool& pool, const char* s, size_t n) {
return pool.saveString(adaptString(s, n)); return pool.saveString(adaptString(s, n));
} }
@ -21,36 +21,36 @@ TEST_CASE("MemoryPool::saveString()") {
MemoryPool pool(buffer, 32); MemoryPool pool(buffer, 32);
SECTION("Duplicates different strings") { SECTION("Duplicates different strings") {
const char *a = saveString(pool, "hello"); const char* a = saveString(pool, "hello");
const char *b = saveString(pool, "world"); const char* b = saveString(pool, "world");
REQUIRE(a != b); REQUIRE(a != b);
REQUIRE(pool.size() == 6 + 6); REQUIRE(pool.size() == 6 + 6);
} }
SECTION("Deduplicates identical strings") { SECTION("Deduplicates identical strings") {
const char *a = saveString(pool, "hello"); const char* a = saveString(pool, "hello");
const char *b = saveString(pool, "hello"); const char* b = saveString(pool, "hello");
REQUIRE(a == b); REQUIRE(a == b);
REQUIRE(pool.size() == 6); REQUIRE(pool.size() == 6);
} }
SECTION("Deduplicates identical strings that contain NUL") { SECTION("Deduplicates identical strings that contain NUL") {
const char *a = saveString(pool, "hello\0world", 11); const char* a = saveString(pool, "hello\0world", 11);
const char *b = saveString(pool, "hello\0world", 11); const char* b = saveString(pool, "hello\0world", 11);
REQUIRE(a == b); REQUIRE(a == b);
REQUIRE(pool.size() == 12); REQUIRE(pool.size() == 12);
} }
SECTION("Reuse part of a string if it ends with NUL") { SECTION("Reuse part of a string if it ends with NUL") {
const char *a = saveString(pool, "hello\0world", 11); const char* a = saveString(pool, "hello\0world", 11);
const char *b = saveString(pool, "hello"); const char* b = saveString(pool, "hello");
REQUIRE(a == b); REQUIRE(a == b);
REQUIRE(pool.size() == 12); REQUIRE(pool.size() == 12);
} }
SECTION("Don't stop on first NUL") { SECTION("Don't stop on first NUL") {
const char *a = saveString(pool, "hello"); const char* a = saveString(pool, "hello");
const char *b = saveString(pool, "hello\0world", 11); const char* b = saveString(pool, "hello\0world", 11);
REQUIRE(a != b); REQUIRE(a != b);
REQUIRE(pool.size() == 18); REQUIRE(pool.size() == 18);
} }
@ -58,16 +58,16 @@ TEST_CASE("MemoryPool::saveString()") {
SECTION("Returns NULL when full") { SECTION("Returns NULL when full") {
REQUIRE(pool.capacity() == 32); REQUIRE(pool.capacity() == 32);
const void *p1 = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); const void* p1 = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
REQUIRE(p1 != 0); REQUIRE(p1 != 0);
REQUIRE(pool.size() == 32); REQUIRE(pool.size() == 32);
const void *p2 = saveString(pool, "b"); const void* p2 = saveString(pool, "b");
REQUIRE(p2 == 0); REQUIRE(p2 == 0);
} }
SECTION("Returns NULL when pool is too small") { SECTION("Returns NULL when pool is too small") {
const void *p = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); const void* p = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
REQUIRE(0 == p); REQUIRE(0 == p);
} }
@ -82,15 +82,15 @@ TEST_CASE("MemoryPool::saveString()") {
} }
SECTION("Returns same address after clear()") { SECTION("Returns same address after clear()") {
const void *a = saveString(pool, "hello"); const void* a = saveString(pool, "hello");
pool.clear(); pool.clear();
const void *b = saveString(pool, "world"); const void* b = saveString(pool, "world");
REQUIRE(a == b); REQUIRE(a == b);
} }
SECTION("Can use full capacity when fresh") { SECTION("Can use full capacity when fresh") {
const void *a = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); const void* a = saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
REQUIRE(a != 0); REQUIRE(a != 0);
} }
@ -99,7 +99,7 @@ TEST_CASE("MemoryPool::saveString()") {
saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); saveString(pool, "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
pool.clear(); pool.clear();
const void *a = saveString(pool, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); const void* a = saveString(pool, "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
REQUIRE(a != 0); REQUIRE(a != 0);
} }

View File

@ -9,7 +9,7 @@ TEST_CASE("serialize MsgPack to various destination types") {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
JsonObject object = doc.to<JsonObject>(); JsonObject object = doc.to<JsonObject>();
object["hello"] = "world"; object["hello"] = "world";
const char *expected_result = "\x81\xA5hello\xA5world"; const char* expected_result = "\x81\xA5hello\xA5world";
const size_t expected_length = 13; const size_t expected_length = 13;
SECTION("std::string") { SECTION("std::string") {

View File

@ -3,7 +3,7 @@
#include <limits> #include <limits>
template <typename T> template <typename T>
void check(T value, const std::string &expected) { void check(T value, const std::string& expected) {
DynamicJsonDocument doc(4096); DynamicJsonDocument doc(4096);
doc.to<JsonVariant>().set(value); doc.to<JsonVariant>().set(value);
char buffer[256] = ""; char buffer[256] = "";

View File

@ -8,7 +8,7 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
inline VariantData *arrayAdd(CollectionData *arr, MemoryPool *pool) { inline VariantData* arrayAdd(CollectionData* arr, MemoryPool* pool) {
return arr ? arr->addElement(pool) : 0; return arr ? arr->addElement(pool) : 0;
} }

View File

@ -11,13 +11,13 @@ namespace ARDUINOJSON_NAMESPACE {
class VariantPtr { class VariantPtr {
public: public:
VariantPtr(MemoryPool *pool, VariantData *data) : _variant(pool, data) {} VariantPtr(MemoryPool* pool, VariantData* data) : _variant(pool, data) {}
VariantRef *operator->() { VariantRef* operator->() {
return &_variant; return &_variant;
} }
VariantRef &operator*() { VariantRef& operator*() {
return _variant; return _variant;
} }
@ -28,7 +28,7 @@ class VariantPtr {
class ArrayIterator { class ArrayIterator {
public: public:
ArrayIterator() : _slot(0) {} ArrayIterator() : _slot(0) {}
explicit ArrayIterator(MemoryPool *pool, VariantSlot *slot) explicit ArrayIterator(MemoryPool* pool, VariantSlot* slot)
: _pool(pool), _slot(slot) {} : _pool(pool), _slot(slot) {}
VariantRef operator*() const { VariantRef operator*() const {
@ -38,42 +38,42 @@ class ArrayIterator {
return VariantPtr(_pool, _slot->data()); return VariantPtr(_pool, _slot->data());
} }
bool operator==(const ArrayIterator &other) const { bool operator==(const ArrayIterator& other) const {
return _slot == other._slot; return _slot == other._slot;
} }
bool operator!=(const ArrayIterator &other) const { bool operator!=(const ArrayIterator& other) const {
return _slot != other._slot; return _slot != other._slot;
} }
ArrayIterator &operator++() { ArrayIterator& operator++() {
_slot = _slot->next(); _slot = _slot->next();
return *this; return *this;
} }
ArrayIterator &operator+=(size_t distance) { ArrayIterator& operator+=(size_t distance) {
_slot = _slot->next(distance); _slot = _slot->next(distance);
return *this; return *this;
} }
VariantSlot *internal() { VariantSlot* internal() {
return _slot; return _slot;
} }
private: private:
MemoryPool *_pool; MemoryPool* _pool;
VariantSlot *_slot; VariantSlot* _slot;
}; };
class VariantConstPtr { class VariantConstPtr {
public: public:
VariantConstPtr(const VariantData *data) : _variant(data) {} VariantConstPtr(const VariantData* data) : _variant(data) {}
VariantConstRef *operator->() { VariantConstRef* operator->() {
return &_variant; return &_variant;
} }
VariantConstRef &operator*() { VariantConstRef& operator*() {
return _variant; return _variant;
} }
@ -84,7 +84,7 @@ class VariantConstPtr {
class ArrayConstRefIterator { class ArrayConstRefIterator {
public: public:
ArrayConstRefIterator() : _slot(0) {} ArrayConstRefIterator() : _slot(0) {}
explicit ArrayConstRefIterator(const VariantSlot *slot) : _slot(slot) {} explicit ArrayConstRefIterator(const VariantSlot* slot) : _slot(slot) {}
VariantConstRef operator*() const { VariantConstRef operator*() const {
return VariantConstRef(_slot->data()); return VariantConstRef(_slot->data());
@ -93,29 +93,29 @@ class ArrayConstRefIterator {
return VariantConstPtr(_slot->data()); return VariantConstPtr(_slot->data());
} }
bool operator==(const ArrayConstRefIterator &other) const { bool operator==(const ArrayConstRefIterator& other) const {
return _slot == other._slot; return _slot == other._slot;
} }
bool operator!=(const ArrayConstRefIterator &other) const { bool operator!=(const ArrayConstRefIterator& other) const {
return _slot != other._slot; return _slot != other._slot;
} }
ArrayConstRefIterator &operator++() { ArrayConstRefIterator& operator++() {
_slot = _slot->next(); _slot = _slot->next();
return *this; return *this;
} }
ArrayConstRefIterator &operator+=(size_t distance) { ArrayConstRefIterator& operator+=(size_t distance) {
_slot = _slot->next(distance); _slot = _slot->next(distance);
return *this; return *this;
} }
const VariantSlot *internal() { const VariantSlot* internal() {
return _slot; return _slot;
} }
private: private:
const VariantSlot *_slot; const VariantSlot* _slot;
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -30,20 +30,20 @@ class ArrayShortcuts {
// TValue = bool, long, int, short, float, double, serialized, VariantRef, // TValue = bool, long, int, short, float, double, serialized, VariantRef,
// std::string, String, ObjectRef // std::string, String, ObjectRef
template <typename T> template <typename T>
FORCE_INLINE bool add(const T &value) const { FORCE_INLINE bool add(const T& value) const {
return impl()->add().set(value); return impl()->add().set(value);
} }
// //
// bool add(TValue); // bool add(TValue);
// TValue = char*, const char*, const __FlashStringHelper* // TValue = char*, const char*, const __FlashStringHelper*
template <typename T> template <typename T>
FORCE_INLINE bool add(T *value) const { FORCE_INLINE bool add(T* value) const {
return impl()->add().set(value); return impl()->add().set(value);
} }
private: private:
const TArray *impl() const { const TArray* impl() const {
return static_cast<const TArray *>(this); return static_cast<const TArray*>(this);
} }
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -16,8 +16,8 @@ class VariantData;
class VariantSlot; class VariantSlot;
class CollectionData { class CollectionData {
VariantSlot *_head; VariantSlot* _head;
VariantSlot *_tail; VariantSlot* _tail;
public: public:
// Must be a POD! // Must be a POD!
@ -28,24 +28,24 @@ class CollectionData {
// Array only // Array only
VariantData *addElement(MemoryPool *pool); VariantData* addElement(MemoryPool* pool);
VariantData *getElement(size_t index) const; VariantData* getElement(size_t index) const;
VariantData *getOrAddElement(size_t index, MemoryPool *pool); VariantData* getOrAddElement(size_t index, MemoryPool* pool);
void removeElement(size_t index); void removeElement(size_t index);
// Object only // Object only
template <typename TAdaptedString, typename TStoragePolicy> template <typename TAdaptedString, typename TStoragePolicy>
VariantData *addMember(TAdaptedString key, MemoryPool *pool, TStoragePolicy); VariantData* addMember(TAdaptedString key, MemoryPool* pool, TStoragePolicy);
template <typename TAdaptedString> template <typename TAdaptedString>
VariantData *getMember(TAdaptedString key) const; VariantData* getMember(TAdaptedString key) const;
template <typename TAdaptedString, typename TStoragePolicy> template <typename TAdaptedString, typename TStoragePolicy>
VariantData *getOrAddMember(TAdaptedString key, MemoryPool *pool, VariantData* getOrAddMember(TAdaptedString key, MemoryPool* pool,
TStoragePolicy); TStoragePolicy);
template <typename TAdaptedString> template <typename TAdaptedString>
@ -54,7 +54,7 @@ class CollectionData {
} }
template <typename TAdaptedString> template <typename TAdaptedString>
bool containsKey(const TAdaptedString &key) const; bool containsKey(const TAdaptedString& key) const;
// Generic // Generic
@ -62,34 +62,34 @@ class CollectionData {
size_t memoryUsage() const; size_t memoryUsage() const;
size_t size() const; size_t size() const;
VariantSlot *addSlot(MemoryPool *); VariantSlot* addSlot(MemoryPool*);
void removeSlot(VariantSlot *slot); void removeSlot(VariantSlot* slot);
bool copyFrom(const CollectionData &src, MemoryPool *pool); bool copyFrom(const CollectionData& src, MemoryPool* pool);
VariantSlot *head() const { VariantSlot* head() const {
return _head; return _head;
} }
void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance); void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance);
private: private:
VariantSlot *getSlot(size_t index) const; VariantSlot* getSlot(size_t index) const;
template <typename TAdaptedString> template <typename TAdaptedString>
VariantSlot *getSlot(TAdaptedString key) const; VariantSlot* getSlot(TAdaptedString key) const;
VariantSlot *getPreviousSlot(VariantSlot *) const; VariantSlot* getPreviousSlot(VariantSlot*) const;
}; };
inline const VariantData *collectionToVariant( inline const VariantData* collectionToVariant(
const CollectionData *collection) { const CollectionData* collection) {
const void *data = collection; // prevent warning cast-align const void* data = collection; // prevent warning cast-align
return reinterpret_cast<const VariantData *>(data); return reinterpret_cast<const VariantData*>(data);
} }
inline VariantData *collectionToVariant(CollectionData *collection) { inline VariantData* collectionToVariant(CollectionData* collection) {
void *data = collection; // prevent warning cast-align void* data = collection; // prevent warning cast-align
return reinterpret_cast<VariantData *>(data); return reinterpret_cast<VariantData*>(data);
} }
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -14,7 +14,7 @@ namespace ARDUINOJSON_NAMESPACE {
template <template <typename, typename> class TDeserializer, typename TReader, template <template <typename, typename> class TDeserializer, typename TReader,
typename TWriter> typename TWriter>
TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool *pool, TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool* pool,
TReader reader, TReader reader,
TWriter writer) { TWriter writer) {
ARDUINOJSON_ASSERT(pool != 0); ARDUINOJSON_ASSERT(pool != 0);
@ -29,11 +29,11 @@ TDeserializer<TReader, TWriter> makeDeserializer(MemoryPool *pool,
template <template <typename, typename> class TDeserializer, typename TString, template <template <typename, typename> class TDeserializer, typename TString,
typename TFilter> typename TFilter>
typename enable_if<!is_array<TString>::value, DeserializationError>::type typename enable_if<!is_array<TString>::value, DeserializationError>::type
deserialize(JsonDocument &doc, const TString &input, NestingLimit nestingLimit, deserialize(JsonDocument& doc, const TString& input, NestingLimit nestingLimit,
TFilter filter) { TFilter filter) {
Reader<TString> reader(input); Reader<TString> reader(input);
VariantData *data = VariantAttorney::getData(doc); VariantData* data = VariantAttorney::getData(doc);
MemoryPool *pool = VariantAttorney::getPool(doc); MemoryPool* pool = VariantAttorney::getPool(doc);
doc.clear(); doc.clear();
return makeDeserializer<TDeserializer>(pool, reader, return makeDeserializer<TDeserializer>(pool, reader,
makeStringStorage(input, pool)) makeStringStorage(input, pool))
@ -45,12 +45,12 @@ deserialize(JsonDocument &doc, const TString &input, NestingLimit nestingLimit,
// deserialize(JsonDocument&, const __FlashStringHelper*, size_t, NL, Filter); // deserialize(JsonDocument&, const __FlashStringHelper*, size_t, NL, Filter);
template <template <typename, typename> class TDeserializer, typename TChar, template <template <typename, typename> class TDeserializer, typename TChar,
typename TFilter> typename TFilter>
DeserializationError deserialize(JsonDocument &doc, TChar *input, DeserializationError deserialize(JsonDocument& doc, TChar* input,
size_t inputSize, NestingLimit nestingLimit, size_t inputSize, NestingLimit nestingLimit,
TFilter filter) { TFilter filter) {
BoundedReader<TChar *> reader(input, inputSize); BoundedReader<TChar*> reader(input, inputSize);
VariantData *data = VariantAttorney::getData(doc); VariantData* data = VariantAttorney::getData(doc);
MemoryPool *pool = VariantAttorney::getPool(doc); MemoryPool* pool = VariantAttorney::getPool(doc);
doc.clear(); doc.clear();
return makeDeserializer<TDeserializer>(pool, reader, return makeDeserializer<TDeserializer>(pool, reader,
makeStringStorage(input, pool)) makeStringStorage(input, pool))
@ -61,11 +61,11 @@ DeserializationError deserialize(JsonDocument &doc, TChar *input,
// deserialize(JsonDocument&, Stream&, NestingLimit, Filter); // deserialize(JsonDocument&, Stream&, NestingLimit, Filter);
template <template <typename, typename> class TDeserializer, typename TStream, template <template <typename, typename> class TDeserializer, typename TStream,
typename TFilter> typename TFilter>
DeserializationError deserialize(JsonDocument &doc, TStream &input, DeserializationError deserialize(JsonDocument& doc, TStream& input,
NestingLimit nestingLimit, TFilter filter) { NestingLimit nestingLimit, TFilter filter) {
Reader<TStream> reader(input); Reader<TStream> reader(input);
VariantData *data = VariantAttorney::getData(doc); VariantData* data = VariantAttorney::getData(doc);
MemoryPool *pool = VariantAttorney::getPool(doc); MemoryPool* pool = VariantAttorney::getPool(doc);
doc.clear(); doc.clear();
return makeDeserializer<TDeserializer>(pool, reader, return makeDeserializer<TDeserializer>(pool, reader,
makeStringStorage(input, pool)) makeStringStorage(input, pool))

View File

@ -12,7 +12,7 @@ class EscapeSequence {
public: public:
// Optimized for code size on a 8-bit AVR // Optimized for code size on a 8-bit AVR
static char escapeChar(char c) { static char escapeChar(char c) {
const char *p = escapeTable(true); const char* p = escapeTable(true);
while (p[0] && p[1] != c) { while (p[0] && p[1] != c) {
p += 2; p += 2;
} }
@ -21,7 +21,7 @@ class EscapeSequence {
// Optimized for code size on a 8-bit AVR // Optimized for code size on a 8-bit AVR
static char unescapeChar(char c) { static char unescapeChar(char c) {
const char *p = escapeTable(false); const char* p = escapeTable(false);
for (;;) { for (;;) {
if (p[0] == '\0') if (p[0] == '\0')
return 0; return 0;
@ -32,7 +32,7 @@ class EscapeSequence {
} }
private: private:
static const char *escapeTable(bool excludeSolidus) { static const char* escapeTable(bool excludeSolidus) {
return &"//\"\"\\\\b\bf\fn\nr\rt\t"[excludeSolidus ? 2 : 0]; return &"//\"\"\\\\b\bf\fn\nr\rt\t"[excludeSolidus ? 2 : 0];
} }
}; };

View File

@ -20,7 +20,7 @@ namespace ARDUINOJSON_NAMESPACE {
template <typename TReader, typename TStringStorage> template <typename TReader, typename TStringStorage>
class JsonDeserializer { class JsonDeserializer {
public: public:
JsonDeserializer(MemoryPool *pool, TReader reader, JsonDeserializer(MemoryPool* pool, TReader reader,
TStringStorage stringStorage) TStringStorage stringStorage)
: _stringStorage(stringStorage), : _stringStorage(stringStorage),
_foundSomething(false), _foundSomething(false),
@ -28,7 +28,7 @@ class JsonDeserializer {
_pool(pool) {} _pool(pool) {}
template <typename TFilter> template <typename TFilter>
DeserializationError parse(VariantData &variant, TFilter filter, DeserializationError parse(VariantData& variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -59,7 +59,7 @@ class JsonDeserializer {
} }
template <typename TFilter> template <typename TFilter>
DeserializationError::Code parseVariant(VariantData &variant, TFilter filter, DeserializationError::Code parseVariant(VariantData& variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -143,7 +143,7 @@ class JsonDeserializer {
} }
template <typename TFilter> template <typename TFilter>
DeserializationError::Code parseArray(CollectionData &array, TFilter filter, DeserializationError::Code parseArray(CollectionData& array, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -169,7 +169,7 @@ class JsonDeserializer {
for (;;) { for (;;) {
if (memberFilter.allow()) { if (memberFilter.allow()) {
// Allocate slot in array // Allocate slot in array
VariantData *value = array.addElement(_pool); VariantData* value = array.addElement(_pool);
if (!value) if (!value)
return DeserializationError::NoMemory; return DeserializationError::NoMemory;
@ -227,7 +227,7 @@ class JsonDeserializer {
} }
template <typename TFilter> template <typename TFilter>
DeserializationError::Code parseObject(CollectionData &object, TFilter filter, DeserializationError::Code parseObject(CollectionData& object, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -268,14 +268,14 @@ class JsonDeserializer {
TFilter memberFilter = filter[key.c_str()]; TFilter memberFilter = filter[key.c_str()];
if (memberFilter.allow()) { if (memberFilter.allow()) {
VariantData *variant = object.getMember(adaptString(key.c_str())); VariantData* variant = object.getMember(adaptString(key.c_str()));
if (!variant) { if (!variant) {
// Save key in memory pool. // Save key in memory pool.
// This MUST be done before adding the slot. // This MUST be done before adding the slot.
key = _stringStorage.save(); key = _stringStorage.save();
// Allocate slot in object // Allocate slot in object
VariantSlot *slot = object.addSlot(_pool); VariantSlot* slot = object.addSlot(_pool);
if (!slot) if (!slot)
return DeserializationError::NoMemory; return DeserializationError::NoMemory;
@ -378,7 +378,7 @@ class JsonDeserializer {
} }
} }
DeserializationError::Code parseStringValue(VariantData &variant) { DeserializationError::Code parseStringValue(VariantData& variant) {
DeserializationError::Code err; DeserializationError::Code err;
_stringStorage.startString(); _stringStorage.startString();
@ -503,7 +503,7 @@ class JsonDeserializer {
return DeserializationError::Ok; return DeserializationError::Ok;
} }
DeserializationError::Code parseNumericValue(VariantData &result) { DeserializationError::Code parseNumericValue(VariantData& result) {
uint8_t n = 0; uint8_t n = 0;
char c = current(); char c = current();
@ -529,7 +529,7 @@ class JsonDeserializer {
return DeserializationError::Ok; return DeserializationError::Ok;
} }
DeserializationError::Code parseHex4(uint16_t &result) { DeserializationError::Code parseHex4(uint16_t& result) {
result = 0; result = 0;
for (uint8_t i = 0; i < 4; ++i) { for (uint8_t i = 0; i < 4; ++i) {
char digit = current(); char digit = current();
@ -639,7 +639,7 @@ class JsonDeserializer {
} }
} }
DeserializationError::Code skipKeyword(const char *s) { DeserializationError::Code skipKeyword(const char* s) {
while (*s) { while (*s) {
char c = current(); char c = current();
if (c == '\0') if (c == '\0')
@ -655,7 +655,7 @@ class JsonDeserializer {
TStringStorage _stringStorage; TStringStorage _stringStorage;
bool _foundSomething; bool _foundSomething;
Latch<TReader> _latch; Latch<TReader> _latch;
MemoryPool *_pool; MemoryPool* _pool;
char _buffer[64]; // using a member instead of a local variable because it char _buffer[64]; // using a member instead of a local variable because it
// ended in the recursive path after compiler inlined the // ended in the recursive path after compiler inlined the
// code // code
@ -667,7 +667,7 @@ class JsonDeserializer {
// ... = NestingLimit // ... = NestingLimit
template <typename TString> template <typename TString>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, const TString &input, JsonDocument& doc, const TString& input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, return deserialize<JsonDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -675,13 +675,13 @@ DeserializationError deserializeJson(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TString> template <typename TString>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, const TString &input, Filter filter, JsonDocument& doc, const TString& input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TString> template <typename TString>
DeserializationError deserializeJson(JsonDocument &doc, const TString &input, DeserializationError deserializeJson(JsonDocument& doc, const TString& input,
NestingLimit nestingLimit, Filter filter) { NestingLimit nestingLimit, Filter filter) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
@ -692,7 +692,7 @@ DeserializationError deserializeJson(JsonDocument &doc, const TString &input,
// ... = NestingLimit // ... = NestingLimit
template <typename TStream> template <typename TStream>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TStream &input, JsonDocument& doc, TStream& input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, return deserialize<JsonDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -700,13 +700,13 @@ DeserializationError deserializeJson(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TStream> template <typename TStream>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TStream &input, Filter filter, JsonDocument& doc, TStream& input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TStream> template <typename TStream>
DeserializationError deserializeJson(JsonDocument &doc, TStream &input, DeserializationError deserializeJson(JsonDocument& doc, TStream& input,
NestingLimit nestingLimit, Filter filter) { NestingLimit nestingLimit, Filter filter) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
@ -717,7 +717,7 @@ DeserializationError deserializeJson(JsonDocument &doc, TStream &input,
// ... = NestingLimit // ... = NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TChar *input, JsonDocument& doc, TChar* input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, return deserialize<JsonDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -725,13 +725,13 @@ DeserializationError deserializeJson(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TChar *input, Filter filter, JsonDocument& doc, TChar* input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson(JsonDocument &doc, TChar *input, DeserializationError deserializeJson(JsonDocument& doc, TChar* input,
NestingLimit nestingLimit, Filter filter) { NestingLimit nestingLimit, Filter filter) {
return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter); return deserialize<JsonDeserializer>(doc, input, nestingLimit, filter);
} }
@ -742,7 +742,7 @@ DeserializationError deserializeJson(JsonDocument &doc, TChar *input,
// ... = NestingLimit // ... = NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TChar *input, size_t inputSize, JsonDocument& doc, TChar* input, size_t inputSize,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit, return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -750,14 +750,14 @@ DeserializationError deserializeJson(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson( DeserializationError deserializeJson(
JsonDocument &doc, TChar *input, size_t inputSize, Filter filter, JsonDocument& doc, TChar* input, size_t inputSize, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit, return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit,
filter); filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TChar> template <typename TChar>
DeserializationError deserializeJson(JsonDocument &doc, TChar *input, DeserializationError deserializeJson(JsonDocument& doc, TChar* input,
size_t inputSize, size_t inputSize,
NestingLimit nestingLimit, Filter filter) { NestingLimit nestingLimit, Filter filter) {
return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit, return deserialize<JsonDeserializer>(doc, input, inputSize, nestingLimit,

View File

@ -18,10 +18,10 @@ class JsonSerializer : public Visitor<size_t> {
JsonSerializer(TWriter writer) : _formatter(writer) {} JsonSerializer(TWriter writer) : _formatter(writer) {}
FORCE_INLINE size_t visitArray(const CollectionData &array) { FORCE_INLINE size_t visitArray(const CollectionData& array) {
write('['); write('[');
const VariantSlot *slot = array.head(); const VariantSlot* slot = array.head();
while (slot != 0) { while (slot != 0) {
slot->data()->accept(*this); slot->data()->accept(*this);
@ -37,10 +37,10 @@ class JsonSerializer : public Visitor<size_t> {
return bytesWritten(); return bytesWritten();
} }
size_t visitObject(const CollectionData &object) { size_t visitObject(const CollectionData& object) {
write('{'); write('{');
const VariantSlot *slot = object.head(); const VariantSlot* slot = object.head();
while (slot != 0) { while (slot != 0) {
_formatter.writeString(slot->key()); _formatter.writeString(slot->key());
@ -63,17 +63,17 @@ class JsonSerializer : public Visitor<size_t> {
return bytesWritten(); return bytesWritten();
} }
size_t visitString(const char *value) { size_t visitString(const char* value) {
_formatter.writeString(value); _formatter.writeString(value);
return bytesWritten(); return bytesWritten();
} }
size_t visitString(const char *value, size_t n) { size_t visitString(const char* value, size_t n) {
_formatter.writeString(value, n); _formatter.writeString(value, n);
return bytesWritten(); return bytesWritten();
} }
size_t visitRawJson(const char *data, size_t n) { size_t visitRawJson(const char* data, size_t n) {
_formatter.writeRaw(data, n); _formatter.writeRaw(data, n);
return bytesWritten(); return bytesWritten();
} }
@ -107,7 +107,7 @@ class JsonSerializer : public Visitor<size_t> {
_formatter.writeRaw(c); _formatter.writeRaw(c);
} }
void write(const char *s) { void write(const char* s) {
_formatter.writeRaw(s); _formatter.writeRaw(s);
} }
@ -116,11 +116,11 @@ class JsonSerializer : public Visitor<size_t> {
}; };
template <typename TDestination> template <typename TDestination>
size_t serializeJson(VariantConstRef source, TDestination &destination) { size_t serializeJson(VariantConstRef source, TDestination& destination) {
return serialize<JsonSerializer>(source, destination); return serialize<JsonSerializer>(source, destination);
} }
inline size_t serializeJson(VariantConstRef source, void *buffer, inline size_t serializeJson(VariantConstRef source, void* buffer,
size_t bufferSize) { size_t bufferSize) {
return serialize<JsonSerializer>(source, buffer, bufferSize); return serialize<JsonSerializer>(source, buffer, bufferSize);
} }
@ -132,8 +132,8 @@ inline size_t measureJson(VariantConstRef source) {
#if ARDUINOJSON_ENABLE_STD_STREAM #if ARDUINOJSON_ENABLE_STD_STREAM
template <typename T> template <typename T>
inline typename enable_if<is_convertible<T, VariantConstRef>::value, inline typename enable_if<is_convertible<T, VariantConstRef>::value,
std::ostream &>::type std::ostream&>::type
operator<<(std::ostream &os, const T &source) { operator<<(std::ostream& os, const T& source) {
serializeJson(source, os); serializeJson(source, os);
return os; return os;
} }

View File

@ -18,8 +18,8 @@ class PrettyJsonSerializer : public JsonSerializer<TWriter> {
public: public:
PrettyJsonSerializer(TWriter writer) : base(writer), _nesting(0) {} PrettyJsonSerializer(TWriter writer) : base(writer), _nesting(0) {}
size_t visitArray(const CollectionData &array) { size_t visitArray(const CollectionData& array) {
const VariantSlot *slot = array.head(); const VariantSlot* slot = array.head();
if (slot) { if (slot) {
base::write("[\r\n"); base::write("[\r\n");
_nesting++; _nesting++;
@ -39,8 +39,8 @@ class PrettyJsonSerializer : public JsonSerializer<TWriter> {
return this->bytesWritten(); return this->bytesWritten();
} }
size_t visitObject(const CollectionData &object) { size_t visitObject(const CollectionData& object) {
const VariantSlot *slot = object.head(); const VariantSlot* slot = object.head();
if (slot) { if (slot) {
base::write("{\r\n"); base::write("{\r\n");
_nesting++; _nesting++;
@ -71,11 +71,11 @@ class PrettyJsonSerializer : public JsonSerializer<TWriter> {
}; };
template <typename TDestination> template <typename TDestination>
size_t serializeJsonPretty(VariantConstRef source, TDestination &destination) { size_t serializeJsonPretty(VariantConstRef source, TDestination& destination) {
return serialize<PrettyJsonSerializer>(source, destination); return serialize<PrettyJsonSerializer>(source, destination);
} }
inline size_t serializeJsonPretty(VariantConstRef source, void *buffer, inline size_t serializeJsonPretty(VariantConstRef source, void* buffer,
size_t bufferSize) { size_t bufferSize) {
return serialize<PrettyJsonSerializer>(source, buffer, bufferSize); return serialize<PrettyJsonSerializer>(source, buffer, bufferSize);
} }

View File

@ -34,14 +34,14 @@ class TextFormatter {
writeRaw("false"); writeRaw("false");
} }
void writeString(const char *value) { void writeString(const char* value) {
ARDUINOJSON_ASSERT(value != NULL); ARDUINOJSON_ASSERT(value != NULL);
writeRaw('\"'); writeRaw('\"');
while (*value) writeChar(*value++); while (*value) writeChar(*value++);
writeRaw('\"'); writeRaw('\"');
} }
void writeString(const char *value, size_t n) { void writeString(const char* value, size_t n) {
ARDUINOJSON_ASSERT(value != NULL); ARDUINOJSON_ASSERT(value != NULL);
writeRaw('\"'); writeRaw('\"');
while (n--) writeChar(*value++); while (n--) writeChar(*value++);
@ -111,8 +111,8 @@ class TextFormatter {
template <typename T> template <typename T>
typename enable_if<is_unsigned<T>::value>::type writeInteger(T value) { typename enable_if<is_unsigned<T>::value>::type writeInteger(T value) {
char buffer[22]; char buffer[22];
char *end = buffer + sizeof(buffer); char* end = buffer + sizeof(buffer);
char *begin = end; char* begin = end;
// write the string in reverse order // write the string in reverse order
do { do {
@ -127,8 +127,8 @@ class TextFormatter {
void writeDecimals(uint32_t value, int8_t width) { void writeDecimals(uint32_t value, int8_t width) {
// buffer should be big enough for all digits and the dot // buffer should be big enough for all digits and the dot
char buffer[16]; char buffer[16];
char *end = buffer + sizeof(buffer); char* end = buffer + sizeof(buffer);
char *begin = end; char* begin = end;
// write the string in reverse order // write the string in reverse order
while (width--) { while (width--) {
@ -141,22 +141,22 @@ class TextFormatter {
writeRaw(begin, end); writeRaw(begin, end);
} }
void writeRaw(const char *s) { void writeRaw(const char* s) {
_writer.write(reinterpret_cast<const uint8_t *>(s), strlen(s)); _writer.write(reinterpret_cast<const uint8_t*>(s), strlen(s));
} }
void writeRaw(const char *s, size_t n) { void writeRaw(const char* s, size_t n) {
_writer.write(reinterpret_cast<const uint8_t *>(s), n); _writer.write(reinterpret_cast<const uint8_t*>(s), n);
} }
void writeRaw(const char *begin, const char *end) { void writeRaw(const char* begin, const char* end) {
_writer.write(reinterpret_cast<const uint8_t *>(begin), _writer.write(reinterpret_cast<const uint8_t*>(begin),
static_cast<size_t>(end - begin)); static_cast<size_t>(end - begin));
} }
template <size_t N> template <size_t N>
void writeRaw(const char (&s)[N]) { void writeRaw(const char (&s)[N]) {
_writer.write(reinterpret_cast<const uint8_t *>(s), N - 1); _writer.write(reinterpret_cast<const uint8_t*>(s), N - 1);
} }
void writeRaw(char c) { void writeRaw(char c) {
_writer.write(static_cast<uint8_t>(c)); _writer.write(static_cast<uint8_t>(c));
@ -166,6 +166,6 @@ class TextFormatter {
CountingDecorator<TWriter> _writer; CountingDecorator<TWriter> _writer;
private: private:
TextFormatter &operator=(const TextFormatter &); // cannot be assigned TextFormatter& operator=(const TextFormatter&); // cannot be assigned
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -13,19 +13,19 @@ namespace ARDUINOJSON_NAMESPACE {
#if ARDUINOJSON_ENABLE_ALIGNMENT #if ARDUINOJSON_ENABLE_ALIGNMENT
inline bool isAligned(size_t value) { inline bool isAligned(size_t value) {
const size_t mask = sizeof(void *) - 1; const size_t mask = sizeof(void*) - 1;
size_t addr = value; size_t addr = value;
return (addr & mask) == 0; return (addr & mask) == 0;
} }
inline size_t addPadding(size_t bytes) { inline size_t addPadding(size_t bytes) {
const size_t mask = sizeof(void *) - 1; const size_t mask = sizeof(void*) - 1;
return (bytes + mask) & ~mask; return (bytes + mask) & ~mask;
} }
template <size_t bytes> template <size_t bytes>
struct AddPadding { struct AddPadding {
static const size_t mask = sizeof(void *) - 1; static const size_t mask = sizeof(void*) - 1;
static const size_t value = (bytes + mask) & ~mask; static const size_t value = (bytes + mask) & ~mask;
}; };
@ -47,14 +47,14 @@ struct AddPadding {
#endif #endif
template <typename T> template <typename T>
inline bool isAligned(T *ptr) { inline bool isAligned(T* ptr) {
return isAligned(reinterpret_cast<size_t>(ptr)); return isAligned(reinterpret_cast<size_t>(ptr));
} }
template <typename T> template <typename T>
inline T *addPadding(T *p) { inline T* addPadding(T* p) {
size_t address = addPadding(reinterpret_cast<size_t>(p)); size_t address = addPadding(reinterpret_cast<size_t>(p));
return reinterpret_cast<T *>(address); return reinterpret_cast<T*>(address);
} }
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -16,7 +16,7 @@ namespace ARDUINOJSON_NAMESPACE {
template <typename TReader, typename TStringStorage> template <typename TReader, typename TStringStorage>
class MsgPackDeserializer { class MsgPackDeserializer {
public: public:
MsgPackDeserializer(MemoryPool *pool, TReader reader, MsgPackDeserializer(MemoryPool* pool, TReader reader,
TStringStorage stringStorage) TStringStorage stringStorage)
: _pool(pool), : _pool(pool),
_reader(reader), _reader(reader),
@ -24,7 +24,7 @@ class MsgPackDeserializer {
_foundSomething(false) {} _foundSomething(false) {}
template <typename TFilter> template <typename TFilter>
DeserializationError parse(VariantData &variant, TFilter filter, DeserializationError parse(VariantData& variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
err = parseVariant(&variant, filter, nestingLimit); err = parseVariant(&variant, filter, nestingLimit);
@ -33,7 +33,7 @@ class MsgPackDeserializer {
private: private:
template <typename TFilter> template <typename TFilter>
DeserializationError::Code parseVariant(VariantData *variant, TFilter filter, DeserializationError::Code parseVariant(VariantData* variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -222,7 +222,7 @@ class MsgPackDeserializer {
return DeserializationError::Ok; return DeserializationError::Ok;
} }
DeserializationError::Code readByte(uint8_t &value) { DeserializationError::Code readByte(uint8_t& value) {
int c = _reader.read(); int c = _reader.read();
if (c < 0) if (c < 0)
return DeserializationError::IncompleteInput; return DeserializationError::IncompleteInput;
@ -230,15 +230,15 @@ class MsgPackDeserializer {
return DeserializationError::Ok; return DeserializationError::Ok;
} }
DeserializationError::Code readBytes(uint8_t *p, size_t n) { DeserializationError::Code readBytes(uint8_t* p, size_t n) {
if (_reader.readBytes(reinterpret_cast<char *>(p), n) == n) if (_reader.readBytes(reinterpret_cast<char*>(p), n) == n)
return DeserializationError::Ok; return DeserializationError::Ok;
return DeserializationError::IncompleteInput; return DeserializationError::IncompleteInput;
} }
template <typename T> template <typename T>
DeserializationError::Code readBytes(T &value) { DeserializationError::Code readBytes(T& value) {
return readBytes(reinterpret_cast<uint8_t *>(&value), sizeof(value)); return readBytes(reinterpret_cast<uint8_t*>(&value), sizeof(value));
} }
DeserializationError::Code skipBytes(size_t n) { DeserializationError::Code skipBytes(size_t n) {
@ -250,7 +250,7 @@ class MsgPackDeserializer {
} }
template <typename T> template <typename T>
DeserializationError::Code readInteger(T &value) { DeserializationError::Code readInteger(T& value) {
DeserializationError::Code err; DeserializationError::Code err;
err = readBytes(value); err = readBytes(value);
@ -263,7 +263,7 @@ class MsgPackDeserializer {
} }
template <typename T> template <typename T>
DeserializationError::Code readInteger(VariantData *variant) { DeserializationError::Code readInteger(VariantData* variant) {
DeserializationError::Code err; DeserializationError::Code err;
T value; T value;
@ -278,7 +278,7 @@ class MsgPackDeserializer {
template <typename T> template <typename T>
typename enable_if<sizeof(T) == 4, DeserializationError::Code>::type typename enable_if<sizeof(T) == 4, DeserializationError::Code>::type
readFloat(VariantData *variant) { readFloat(VariantData* variant) {
DeserializationError::Code err; DeserializationError::Code err;
T value; T value;
@ -294,7 +294,7 @@ class MsgPackDeserializer {
template <typename T> template <typename T>
typename enable_if<sizeof(T) == 8, DeserializationError::Code>::type typename enable_if<sizeof(T) == 8, DeserializationError::Code>::type
readDouble(VariantData *variant) { readDouble(VariantData* variant) {
DeserializationError::Code err; DeserializationError::Code err;
T value; T value;
@ -310,11 +310,11 @@ class MsgPackDeserializer {
template <typename T> template <typename T>
typename enable_if<sizeof(T) == 4, DeserializationError::Code>::type typename enable_if<sizeof(T) == 4, DeserializationError::Code>::type
readDouble(VariantData *variant) { readDouble(VariantData* variant) {
DeserializationError::Code err; DeserializationError::Code err;
uint8_t i[8]; // input is 8 bytes uint8_t i[8]; // input is 8 bytes
T value; // output is 4 bytes T value; // output is 4 bytes
uint8_t *o = reinterpret_cast<uint8_t *>(&value); uint8_t* o = reinterpret_cast<uint8_t*>(&value);
err = readBytes(i, 8); err = readBytes(i, 8);
if (err) if (err)
@ -328,7 +328,7 @@ class MsgPackDeserializer {
} }
template <typename T> template <typename T>
DeserializationError::Code readString(VariantData *variant) { DeserializationError::Code readString(VariantData* variant) {
DeserializationError::Code err; DeserializationError::Code err;
T size; T size;
@ -363,7 +363,7 @@ class MsgPackDeserializer {
return skipBytes(size); return skipBytes(size);
} }
DeserializationError::Code readString(VariantData *variant, size_t n) { DeserializationError::Code readString(VariantData* variant, size_t n) {
DeserializationError::Code err; DeserializationError::Code err;
err = readString(n); err = readString(n);
@ -395,7 +395,7 @@ class MsgPackDeserializer {
} }
template <typename TSize, typename TFilter> template <typename TSize, typename TFilter>
DeserializationError::Code readArray(VariantData *variant, TFilter filter, DeserializationError::Code readArray(VariantData* variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
TSize size; TSize size;
@ -408,7 +408,7 @@ class MsgPackDeserializer {
} }
template <typename TFilter> template <typename TFilter>
DeserializationError::Code readArray(VariantData *variant, size_t n, DeserializationError::Code readArray(VariantData* variant, size_t n,
TFilter filter, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -418,12 +418,12 @@ class MsgPackDeserializer {
bool allowArray = filter.allowArray(); bool allowArray = filter.allowArray();
CollectionData *array = allowArray ? &variant->toArray() : 0; CollectionData* array = allowArray ? &variant->toArray() : 0;
TFilter memberFilter = filter[0U]; TFilter memberFilter = filter[0U];
for (; n; --n) { for (; n; --n) {
VariantData *value; VariantData* value;
if (memberFilter.allow()) { if (memberFilter.allow()) {
value = array->addElement(_pool); value = array->addElement(_pool);
@ -442,7 +442,7 @@ class MsgPackDeserializer {
} }
template <typename TSize, typename TFilter> template <typename TSize, typename TFilter>
DeserializationError::Code readObject(VariantData *variant, TFilter filter, DeserializationError::Code readObject(VariantData* variant, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
TSize size; TSize size;
@ -455,7 +455,7 @@ class MsgPackDeserializer {
} }
template <typename TFilter> template <typename TFilter>
DeserializationError::Code readObject(VariantData *variant, size_t n, DeserializationError::Code readObject(VariantData* variant, size_t n,
TFilter filter, TFilter filter,
NestingLimit nestingLimit) { NestingLimit nestingLimit) {
DeserializationError::Code err; DeserializationError::Code err;
@ -463,7 +463,7 @@ class MsgPackDeserializer {
if (nestingLimit.reached()) if (nestingLimit.reached())
return DeserializationError::TooDeep; return DeserializationError::TooDeep;
CollectionData *object = filter.allowObject() ? &variant->toObject() : 0; CollectionData* object = filter.allowObject() ? &variant->toObject() : 0;
for (; n; --n) { for (; n; --n) {
err = readKey(); err = readKey();
@ -472,7 +472,7 @@ class MsgPackDeserializer {
String key = _stringStorage.str(); String key = _stringStorage.str();
TFilter memberFilter = filter[key.c_str()]; TFilter memberFilter = filter[key.c_str()];
VariantData *member; VariantData* member;
if (memberFilter.allow()) { if (memberFilter.allow()) {
ARDUINOJSON_ASSERT(object); ARDUINOJSON_ASSERT(object);
@ -481,7 +481,7 @@ class MsgPackDeserializer {
// This MUST be done before adding the slot. // This MUST be done before adding the slot.
key = _stringStorage.save(); key = _stringStorage.save();
VariantSlot *slot = object->addSlot(_pool); VariantSlot* slot = object->addSlot(_pool);
if (!slot) if (!slot)
return DeserializationError::NoMemory; return DeserializationError::NoMemory;
@ -538,7 +538,7 @@ class MsgPackDeserializer {
return skipBytes(size + 1U); return skipBytes(size + 1U);
} }
MemoryPool *_pool; MemoryPool* _pool;
TReader _reader; TReader _reader;
TStringStorage _stringStorage; TStringStorage _stringStorage;
bool _foundSomething; bool _foundSomething;
@ -550,7 +550,7 @@ class MsgPackDeserializer {
// ... = NestingLimit // ... = NestingLimit
template <typename TString> template <typename TString>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, const TString &input, JsonDocument& doc, const TString& input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, return deserialize<MsgPackDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -558,13 +558,13 @@ DeserializationError deserializeMsgPack(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TString> template <typename TString>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, const TString &input, Filter filter, JsonDocument& doc, const TString& input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TString> template <typename TString>
DeserializationError deserializeMsgPack(JsonDocument &doc, const TString &input, DeserializationError deserializeMsgPack(JsonDocument& doc, const TString& input,
NestingLimit nestingLimit, NestingLimit nestingLimit,
Filter filter) { Filter filter) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
@ -576,7 +576,7 @@ DeserializationError deserializeMsgPack(JsonDocument &doc, const TString &input,
// ... = NestingLimit // ... = NestingLimit
template <typename TStream> template <typename TStream>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TStream &input, JsonDocument& doc, TStream& input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, return deserialize<MsgPackDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -584,13 +584,13 @@ DeserializationError deserializeMsgPack(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TStream> template <typename TStream>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TStream &input, Filter filter, JsonDocument& doc, TStream& input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TStream> template <typename TStream>
DeserializationError deserializeMsgPack(JsonDocument &doc, TStream &input, DeserializationError deserializeMsgPack(JsonDocument& doc, TStream& input,
NestingLimit nestingLimit, NestingLimit nestingLimit,
Filter filter) { Filter filter) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
@ -602,7 +602,7 @@ DeserializationError deserializeMsgPack(JsonDocument &doc, TStream &input,
// ... = NestingLimit // ... = NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TChar *input, JsonDocument& doc, TChar* input,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, return deserialize<MsgPackDeserializer>(doc, input, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -610,13 +610,13 @@ DeserializationError deserializeMsgPack(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TChar *input, Filter filter, JsonDocument& doc, TChar* input, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack(JsonDocument &doc, TChar *input, DeserializationError deserializeMsgPack(JsonDocument& doc, TChar* input,
NestingLimit nestingLimit, NestingLimit nestingLimit,
Filter filter) { Filter filter) {
return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter); return deserialize<MsgPackDeserializer>(doc, input, nestingLimit, filter);
@ -628,7 +628,7 @@ DeserializationError deserializeMsgPack(JsonDocument &doc, TChar *input,
// ... = NestingLimit // ... = NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TChar *input, size_t inputSize, JsonDocument& doc, TChar* input, size_t inputSize,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, inputSize, nestingLimit, return deserialize<MsgPackDeserializer>(doc, input, inputSize, nestingLimit,
AllowAllFilter()); AllowAllFilter());
@ -636,14 +636,14 @@ DeserializationError deserializeMsgPack(
// ... = Filter, NestingLimit // ... = Filter, NestingLimit
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack( DeserializationError deserializeMsgPack(
JsonDocument &doc, TChar *input, size_t inputSize, Filter filter, JsonDocument& doc, TChar* input, size_t inputSize, Filter filter,
NestingLimit nestingLimit = NestingLimit()) { NestingLimit nestingLimit = NestingLimit()) {
return deserialize<MsgPackDeserializer>(doc, input, inputSize, nestingLimit, return deserialize<MsgPackDeserializer>(doc, input, inputSize, nestingLimit,
filter); filter);
} }
// ... = NestingLimit, Filter // ... = NestingLimit, Filter
template <typename TChar> template <typename TChar>
DeserializationError deserializeMsgPack(JsonDocument &doc, TChar *input, DeserializationError deserializeMsgPack(JsonDocument& doc, TChar* input,
size_t inputSize, size_t inputSize,
NestingLimit nestingLimit, NestingLimit nestingLimit,
Filter filter) { Filter filter) {

View File

@ -9,38 +9,38 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
#if ARDUINOJSON_LITTLE_ENDIAN #if ARDUINOJSON_LITTLE_ENDIAN
inline void swapBytes(uint8_t &a, uint8_t &b) { inline void swapBytes(uint8_t& a, uint8_t& b) {
uint8_t t(a); uint8_t t(a);
a = b; a = b;
b = t; b = t;
} }
inline void fixEndianess(uint8_t *p, integral_constant<size_t, 8>) { inline void fixEndianess(uint8_t* p, integral_constant<size_t, 8>) {
swapBytes(p[0], p[7]); swapBytes(p[0], p[7]);
swapBytes(p[1], p[6]); swapBytes(p[1], p[6]);
swapBytes(p[2], p[5]); swapBytes(p[2], p[5]);
swapBytes(p[3], p[4]); swapBytes(p[3], p[4]);
} }
inline void fixEndianess(uint8_t *p, integral_constant<size_t, 4>) { inline void fixEndianess(uint8_t* p, integral_constant<size_t, 4>) {
swapBytes(p[0], p[3]); swapBytes(p[0], p[3]);
swapBytes(p[1], p[2]); swapBytes(p[1], p[2]);
} }
inline void fixEndianess(uint8_t *p, integral_constant<size_t, 2>) { inline void fixEndianess(uint8_t* p, integral_constant<size_t, 2>) {
swapBytes(p[0], p[1]); swapBytes(p[0], p[1]);
} }
inline void fixEndianess(uint8_t *, integral_constant<size_t, 1>) {} inline void fixEndianess(uint8_t*, integral_constant<size_t, 1>) {}
template <typename T> template <typename T>
inline void fixEndianess(T &value) { inline void fixEndianess(T& value) {
fixEndianess(reinterpret_cast<uint8_t *>(&value), fixEndianess(reinterpret_cast<uint8_t*>(&value),
integral_constant<size_t, sizeof(T)>()); integral_constant<size_t, sizeof(T)>());
} }
#else #else
template <typename T> template <typename T>
inline void fixEndianess(T &) {} inline void fixEndianess(T&) {}
#endif #endif
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -20,7 +20,7 @@ enum CompareResult {
}; };
template <typename T> template <typename T>
CompareResult arithmeticCompare(const T &lhs, const T &rhs) { CompareResult arithmeticCompare(const T& lhs, const T& rhs) {
if (lhs < rhs) if (lhs < rhs)
return COMPARE_RESULT_LESS; return COMPARE_RESULT_LESS;
else if (lhs > rhs) else if (lhs > rhs)
@ -31,38 +31,38 @@ CompareResult arithmeticCompare(const T &lhs, const T &rhs) {
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_integral<T1>::value && is_integral<T2>::value && typename enable_if<is_integral<T1>::value && is_integral<T2>::value &&
sizeof(T1) < sizeof(T2), sizeof(T1) < sizeof(T2),
int // Using int instead of void to avoid C2572 on int // Using int instead of void to avoid C2572 on
// Visual Studio 2012, 2013, and 2015 // Visual Studio 2012, 2013, and 2015
>::type * = 0) { >::type* = 0) {
return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs); return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs);
} }
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_integral<T1>::value && is_integral<T2>::value && typename enable_if<is_integral<T1>::value && is_integral<T2>::value &&
sizeof(T2) < sizeof(T1)>::type * = 0) { sizeof(T2) < sizeof(T1)>::type* = 0) {
return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs)); return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
} }
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_integral<T1>::value && is_integral<T2>::value && typename enable_if<is_integral<T1>::value && is_integral<T2>::value &&
is_signed<T1>::value == is_signed<T2>::value && is_signed<T1>::value == is_signed<T2>::value &&
sizeof(T2) == sizeof(T1)>::type * = 0) { sizeof(T2) == sizeof(T1)>::type* = 0) {
return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs)); return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
} }
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_integral<T1>::value && is_integral<T2>::value && typename enable_if<is_integral<T1>::value && is_integral<T2>::value &&
is_unsigned<T1>::value && is_signed<T2>::value && is_unsigned<T1>::value && is_signed<T2>::value &&
sizeof(T2) == sizeof(T1)>::type * = 0) { sizeof(T2) == sizeof(T1)>::type* = 0) {
if (rhs < 0) if (rhs < 0)
return COMPARE_RESULT_GREATER; return COMPARE_RESULT_GREATER;
return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs)); return arithmeticCompare<T1>(lhs, static_cast<T1>(rhs));
@ -70,10 +70,10 @@ CompareResult arithmeticCompare(
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_integral<T1>::value && is_integral<T2>::value && typename enable_if<is_integral<T1>::value && is_integral<T2>::value &&
is_signed<T1>::value && is_unsigned<T2>::value && is_signed<T1>::value && is_unsigned<T2>::value &&
sizeof(T2) == sizeof(T1)>::type * = 0) { sizeof(T2) == sizeof(T1)>::type* = 0) {
if (lhs < 0) if (lhs < 0)
return COMPARE_RESULT_LESS; return COMPARE_RESULT_LESS;
return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs); return arithmeticCompare<T2>(static_cast<T2>(lhs), rhs);
@ -81,23 +81,23 @@ CompareResult arithmeticCompare(
template <typename T1, typename T2> template <typename T1, typename T2>
CompareResult arithmeticCompare( CompareResult arithmeticCompare(
const T1 &lhs, const T2 &rhs, const T1& lhs, const T2& rhs,
typename enable_if<is_floating_point<T1>::value || typename enable_if<is_floating_point<T1>::value ||
is_floating_point<T2>::value>::type * = 0) { is_floating_point<T2>::value>::type* = 0) {
return arithmeticCompare<double>(static_cast<double>(lhs), return arithmeticCompare<double>(static_cast<double>(lhs),
static_cast<double>(rhs)); static_cast<double>(rhs));
} }
template <typename T2> template <typename T2>
CompareResult arithmeticCompareNegateLeft( CompareResult arithmeticCompareNegateLeft(
UInt, const T2 &, typename enable_if<is_unsigned<T2>::value>::type * = 0) { UInt, const T2&, typename enable_if<is_unsigned<T2>::value>::type* = 0) {
return COMPARE_RESULT_LESS; return COMPARE_RESULT_LESS;
} }
template <typename T2> template <typename T2>
CompareResult arithmeticCompareNegateLeft( CompareResult arithmeticCompareNegateLeft(
UInt lhs, const T2 &rhs, UInt lhs, const T2& rhs,
typename enable_if<is_signed<T2>::value>::type * = 0) { typename enable_if<is_signed<T2>::value>::type* = 0) {
if (rhs > 0) if (rhs > 0)
return COMPARE_RESULT_LESS; return COMPARE_RESULT_LESS;
return arithmeticCompare(-rhs, static_cast<T2>(lhs)); return arithmeticCompare(-rhs, static_cast<T2>(lhs));
@ -105,14 +105,14 @@ CompareResult arithmeticCompareNegateLeft(
template <typename T1> template <typename T1>
CompareResult arithmeticCompareNegateRight( CompareResult arithmeticCompareNegateRight(
const T1 &, UInt, typename enable_if<is_unsigned<T1>::value>::type * = 0) { const T1&, UInt, typename enable_if<is_unsigned<T1>::value>::type* = 0) {
return COMPARE_RESULT_GREATER; return COMPARE_RESULT_GREATER;
} }
template <typename T1> template <typename T1>
CompareResult arithmeticCompareNegateRight( CompareResult arithmeticCompareNegateRight(
const T1 &lhs, UInt rhs, const T1& lhs, UInt rhs,
typename enable_if<is_signed<T1>::value>::type * = 0) { typename enable_if<is_signed<T1>::value>::type* = 0) {
if (lhs > 0) if (lhs > 0)
return COMPARE_RESULT_GREATER; return COMPARE_RESULT_GREATER;
return arithmeticCompare(static_cast<T1>(rhs), -lhs); return arithmeticCompare(static_cast<T1>(rhs), -lhs);

View File

@ -31,21 +31,21 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
FORCE_INLINE MemberProxy(TObject variant, TStringRef key) FORCE_INLINE MemberProxy(TObject variant, TStringRef key)
: _object(variant), _key(key) {} : _object(variant), _key(key) {}
FORCE_INLINE MemberProxy(const MemberProxy &src) FORCE_INLINE MemberProxy(const MemberProxy& src)
: _object(src._object), _key(src._key) {} : _object(src._object), _key(src._key) {}
FORCE_INLINE operator VariantConstRef() const { FORCE_INLINE operator VariantConstRef() const {
return getUpstreamMemberConst(); return getUpstreamMemberConst();
} }
FORCE_INLINE this_type &operator=(const this_type &src) { FORCE_INLINE this_type& operator=(const this_type& src) {
getOrAddUpstreamMember().set(src); getOrAddUpstreamMember().set(src);
return *this; return *this;
} }
template <typename TValue> template <typename TValue>
FORCE_INLINE typename enable_if<!is_array<TValue>::value, this_type &>::type FORCE_INLINE typename enable_if<!is_array<TValue>::value, this_type&>::type
operator=(const TValue &src) { operator=(const TValue& src) {
getOrAddUpstreamMember().set(src); getOrAddUpstreamMember().set(src);
return *this; return *this;
} }
@ -54,7 +54,7 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
// operator=(const char*) // operator=(const char*)
// operator=(const __FlashStringHelper*) // operator=(const __FlashStringHelper*)
template <typename TChar> template <typename TChar>
FORCE_INLINE this_type &operator=(TChar *src) { FORCE_INLINE this_type& operator=(TChar* src) {
getOrAddUpstreamMember().set(src); getOrAddUpstreamMember().set(src);
return *this; return *this;
} }
@ -68,7 +68,7 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<!is_same<T, char *>::value && FORCE_INLINE typename enable_if<!is_same<T, char*>::value &&
!ConverterNeedsWriteableRef<T>::value, !ConverterNeedsWriteableRef<T>::value,
T>::type T>::type
as() const { as() const {
@ -82,10 +82,10 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<is_same<T, char *>::value, const char *>::type FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type
ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()") ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()")
as() const { as() const {
return as<const char *>(); return as<const char*>();
} }
template <typename T> template <typename T>
@ -122,15 +122,15 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
// remove(const char*) const // remove(const char*) const
// remove(const __FlashStringHelper*) const // remove(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE typename enable_if<IsString<TChar *>::value>::type remove( FORCE_INLINE typename enable_if<IsString<TChar*>::value>::type remove(
TChar *key) const { TChar* key) const {
getUpstreamMember().remove(key); getUpstreamMember().remove(key);
} }
// remove(const std::string&) const // remove(const std::string&) const
// remove(const String&) const // remove(const String&) const
template <typename TString> template <typename TString>
FORCE_INLINE typename enable_if<IsString<TString>::value>::type remove( FORCE_INLINE typename enable_if<IsString<TString>::value>::type remove(
const TString &key) const { const TString& key) const {
getUpstreamMember().remove(key); getUpstreamMember().remove(key);
} }
@ -144,7 +144,7 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
} }
template <typename TValue> template <typename TValue>
FORCE_INLINE bool set(const TValue &value) { FORCE_INLINE bool set(const TValue& value) {
return getOrAddUpstreamMember().set(value); return getOrAddUpstreamMember().set(value);
} }
@ -152,7 +152,7 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
// set(const char*) const // set(const char*) const
// set(const __FlashStringHelper*) const // set(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE bool set(TChar *value) { FORCE_INLINE bool set(TChar* value) {
return getOrAddUpstreamMember().set(value); return getOrAddUpstreamMember().set(value);
} }
@ -163,16 +163,16 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
using ArrayShortcuts<MemberProxy<TObject, TStringRef> >::add; using ArrayShortcuts<MemberProxy<TObject, TStringRef> >::add;
protected: protected:
FORCE_INLINE MemoryPool *getPool() const { FORCE_INLINE MemoryPool* getPool() const {
return VariantAttorney::getPool(_object); return VariantAttorney::getPool(_object);
} }
FORCE_INLINE VariantData *getData() const { FORCE_INLINE VariantData* getData() const {
return variantGetMember(VariantAttorney::getData(_object), return variantGetMember(VariantAttorney::getData(_object),
adaptString(_key)); adaptString(_key));
} }
FORCE_INLINE VariantData *getOrCreateData() const { FORCE_INLINE VariantData* getOrCreateData() const {
return variantGetOrAddMember(VariantAttorney::getOrCreateData(_object), return variantGetOrAddMember(VariantAttorney::getOrCreateData(_object),
_key, VariantAttorney::getPool(_object)); _key, VariantAttorney::getPool(_object));
} }
@ -190,7 +190,7 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
return VariantRef(getPool(), getOrCreateData()); return VariantRef(getPool(), getOrCreateData());
} }
friend void convertToJson(const this_type &src, VariantRef dst) { friend void convertToJson(const this_type& src, VariantRef dst) {
dst.set(src.getUpstreamMemberConst()); dst.set(src.getUpstreamMemberConst());
} }

View File

@ -9,7 +9,7 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
template <typename TAdaptedString> template <typename TAdaptedString>
inline VariantData *objectGetMember(const CollectionData *obj, inline VariantData* objectGetMember(const CollectionData* obj,
TAdaptedString key) { TAdaptedString key) {
if (!obj) if (!obj)
return 0; return 0;
@ -17,7 +17,7 @@ inline VariantData *objectGetMember(const CollectionData *obj,
} }
template <typename TAdaptedString> template <typename TAdaptedString>
void objectRemove(CollectionData *obj, TAdaptedString key) { void objectRemove(CollectionData* obj, TAdaptedString key) {
if (!obj) if (!obj)
return; return;
obj->removeMember(key); obj->removeMember(key);

View File

@ -11,13 +11,13 @@ namespace ARDUINOJSON_NAMESPACE {
class PairPtr { class PairPtr {
public: public:
PairPtr(MemoryPool *pool, VariantSlot *slot) : _pair(pool, slot) {} PairPtr(MemoryPool* pool, VariantSlot* slot) : _pair(pool, slot) {}
const Pair *operator->() const { const Pair* operator->() const {
return &_pair; return &_pair;
} }
const Pair &operator*() const { const Pair& operator*() const {
return _pair; return _pair;
} }
@ -29,7 +29,7 @@ class ObjectIterator {
public: public:
ObjectIterator() : _slot(0) {} ObjectIterator() : _slot(0) {}
explicit ObjectIterator(MemoryPool *pool, VariantSlot *slot) explicit ObjectIterator(MemoryPool* pool, VariantSlot* slot)
: _pool(pool), _slot(slot) {} : _pool(pool), _slot(slot) {}
Pair operator*() const { Pair operator*() const {
@ -39,42 +39,42 @@ class ObjectIterator {
return PairPtr(_pool, _slot); return PairPtr(_pool, _slot);
} }
bool operator==(const ObjectIterator &other) const { bool operator==(const ObjectIterator& other) const {
return _slot == other._slot; return _slot == other._slot;
} }
bool operator!=(const ObjectIterator &other) const { bool operator!=(const ObjectIterator& other) const {
return _slot != other._slot; return _slot != other._slot;
} }
ObjectIterator &operator++() { ObjectIterator& operator++() {
_slot = _slot->next(); _slot = _slot->next();
return *this; return *this;
} }
ObjectIterator &operator+=(size_t distance) { ObjectIterator& operator+=(size_t distance) {
_slot = _slot->next(distance); _slot = _slot->next(distance);
return *this; return *this;
} }
VariantSlot *internal() { VariantSlot* internal() {
return _slot; return _slot;
} }
private: private:
MemoryPool *_pool; MemoryPool* _pool;
VariantSlot *_slot; VariantSlot* _slot;
}; };
class PairConstPtr { class PairConstPtr {
public: public:
PairConstPtr(const VariantSlot *slot) : _pair(slot) {} PairConstPtr(const VariantSlot* slot) : _pair(slot) {}
const PairConst *operator->() const { const PairConst* operator->() const {
return &_pair; return &_pair;
} }
const PairConst &operator*() const { const PairConst& operator*() const {
return _pair; return _pair;
} }
@ -86,7 +86,7 @@ class ObjectConstIterator {
public: public:
ObjectConstIterator() : _slot(0) {} ObjectConstIterator() : _slot(0) {}
explicit ObjectConstIterator(const VariantSlot *slot) : _slot(slot) {} explicit ObjectConstIterator(const VariantSlot* slot) : _slot(slot) {}
PairConst operator*() const { PairConst operator*() const {
return PairConst(_slot); return PairConst(_slot);
@ -95,29 +95,29 @@ class ObjectConstIterator {
return PairConstPtr(_slot); return PairConstPtr(_slot);
} }
bool operator==(const ObjectConstIterator &other) const { bool operator==(const ObjectConstIterator& other) const {
return _slot == other._slot; return _slot == other._slot;
} }
bool operator!=(const ObjectConstIterator &other) const { bool operator!=(const ObjectConstIterator& other) const {
return _slot != other._slot; return _slot != other._slot;
} }
ObjectConstIterator &operator++() { ObjectConstIterator& operator++() {
_slot = _slot->next(); _slot = _slot->next();
return *this; return *this;
} }
ObjectConstIterator &operator+=(size_t distance) { ObjectConstIterator& operator+=(size_t distance) {
_slot = _slot->next(distance); _slot = _slot->next(distance);
return *this; return *this;
} }
const VariantSlot *internal() { const VariantSlot* internal() {
return _slot; return _slot;
} }
private: private:
const VariantSlot *_slot; const VariantSlot* _slot;
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -19,55 +19,55 @@ class ObjectShortcuts {
// containsKey(const String&) const // containsKey(const String&) const
template <typename TString> template <typename TString>
FORCE_INLINE typename enable_if<IsString<TString>::value, bool>::type FORCE_INLINE typename enable_if<IsString<TString>::value, bool>::type
containsKey(const TString &key) const; containsKey(const TString& key) const;
// containsKey(char*) const // containsKey(char*) const
// containsKey(const char*) const // containsKey(const char*) const
// containsKey(const __FlashStringHelper*) const // containsKey(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE typename enable_if<IsString<TChar *>::value, bool>::type FORCE_INLINE typename enable_if<IsString<TChar*>::value, bool>::type
containsKey(TChar *key) const; containsKey(TChar* key) const;
// operator[](const std::string&) const // operator[](const std::string&) const
// operator[](const String&) const // operator[](const String&) const
template <typename TString> template <typename TString>
FORCE_INLINE typename enable_if<IsString<TString>::value, FORCE_INLINE typename enable_if<IsString<TString>::value,
MemberProxy<TObject, TString> >::type MemberProxy<TObject, TString> >::type
operator[](const TString &key) const; operator[](const TString& key) const;
// operator[](char*) const // operator[](char*) const
// operator[](const char*) const // operator[](const char*) const
// operator[](const __FlashStringHelper*) const // operator[](const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE typename enable_if<IsString<TChar *>::value, FORCE_INLINE typename enable_if<IsString<TChar*>::value,
MemberProxy<TObject, TChar *> >::type MemberProxy<TObject, TChar*> >::type
operator[](TChar *key) const; operator[](TChar* key) const;
// createNestedArray(const std::string&) const // createNestedArray(const std::string&) const
// createNestedArray(const String&) const // createNestedArray(const String&) const
template <typename TString> template <typename TString>
FORCE_INLINE ArrayRef createNestedArray(const TString &key) const; FORCE_INLINE ArrayRef createNestedArray(const TString& key) const;
// createNestedArray(char*) const // createNestedArray(char*) const
// createNestedArray(const char*) const // createNestedArray(const char*) const
// createNestedArray(const __FlashStringHelper*) const // createNestedArray(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE ArrayRef createNestedArray(TChar *key) const; FORCE_INLINE ArrayRef createNestedArray(TChar* key) const;
// createNestedObject(const std::string&) const // createNestedObject(const std::string&) const
// createNestedObject(const String&) const // createNestedObject(const String&) const
template <typename TString> template <typename TString>
ObjectRef createNestedObject(const TString &key) const; ObjectRef createNestedObject(const TString& key) const;
// createNestedObject(char*) const // createNestedObject(char*) const
// createNestedObject(const char*) const // createNestedObject(const char*) const
// createNestedObject(const __FlashStringHelper*) const // createNestedObject(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
ObjectRef createNestedObject(TChar *key) const; ObjectRef createNestedObject(TChar* key) const;
private: private:
const TObject *impl() const { const TObject* impl() const {
return static_cast<const TObject *>(this); return static_cast<const TObject*>(this);
} }
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -16,11 +16,11 @@ class is_base_of {
typedef char Yes[1]; typedef char Yes[1];
typedef char No[2]; typedef char No[2];
static Yes &probe(const TBase *); static Yes& probe(const TBase*);
static No &probe(...); static No& probe(...);
public: public:
static const bool value = static const bool value =
sizeof(probe(reinterpret_cast<TDerived *>(0))) == sizeof(Yes); sizeof(probe(reinterpret_cast<TDerived*>(0))) == sizeof(Yes);
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -15,9 +15,9 @@ struct is_class {
typedef char No[2]; typedef char No[2];
template <typename U> template <typename U>
static Yes &probe(void (U::*)(void)); static Yes& probe(void (U::*)(void));
template <typename> template <typename>
static No &probe(...); static No& probe(...);
public: public:
static const bool value = sizeof(probe<T>(0)) == sizeof(Yes); static const bool value = sizeof(probe<T>(0)) == sizeof(Yes);

View File

@ -27,10 +27,10 @@ struct is_convertible {
typedef char Yes[1]; typedef char Yes[1];
typedef char No[2]; typedef char No[2];
static Yes &probe(To); static Yes& probe(To);
static No &probe(...); static No& probe(...);
static From &_from; static From& _from;
public: public:
static const bool value = sizeof(probe(_from)) == sizeof(Yes); static const bool value = sizeof(probe(_from)) == sizeof(Yes);

View File

@ -13,7 +13,7 @@ class Writer< ::String, void> {
static const size_t bufferCapacity = ARDUINOJSON_STRING_BUFFER_SIZE; static const size_t bufferCapacity = ARDUINOJSON_STRING_BUFFER_SIZE;
public: public:
explicit Writer(::String &str) : _destination(&str) { explicit Writer(::String& str) : _destination(&str) {
_size = 0; _size = 0;
} }
@ -29,7 +29,7 @@ class Writer< ::String, void> {
return 1; return 1;
} }
size_t write(const uint8_t *s, size_t n) { size_t write(const uint8_t* s, size_t n) {
for (size_t i = 0; i < n; i++) { for (size_t i = 0; i < n; i++) {
write(s[i]); write(s[i]);
} }
@ -45,7 +45,7 @@ class Writer< ::String, void> {
} }
private: private:
::String *_destination; ::String* _destination;
char _buffer[bufferCapacity]; char _buffer[bufferCapacity];
size_t _size; size_t _size;
}; };

View File

@ -10,7 +10,7 @@ namespace ARDUINOJSON_NAMESPACE {
class StaticStringWriter { class StaticStringWriter {
public: public:
StaticStringWriter(char *buf, size_t size) : end(buf + size), p(buf) {} StaticStringWriter(char* buf, size_t size) : end(buf + size), p(buf) {}
size_t write(uint8_t c) { size_t write(uint8_t c) {
if (p >= end) if (p >= end)
@ -19,8 +19,8 @@ class StaticStringWriter {
return 1; return 1;
} }
size_t write(const uint8_t *s, size_t n) { size_t write(const uint8_t* s, size_t n) {
char *begin = p; char* begin = p;
while (p < end && n > 0) { while (p < end && n > 0) {
*p++ = static_cast<char>(*s++); *p++ = static_cast<char>(*s++);
n--; n--;
@ -29,7 +29,7 @@ class StaticStringWriter {
} }
private: private:
char *end; char* end;
char *p; char* p;
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -22,19 +22,19 @@ template <typename TDestination>
class Writer<TDestination, class Writer<TDestination,
typename enable_if<is_std_string<TDestination>::value>::type> { typename enable_if<is_std_string<TDestination>::value>::type> {
public: public:
Writer(TDestination &str) : _str(&str) {} Writer(TDestination& str) : _str(&str) {}
size_t write(uint8_t c) { size_t write(uint8_t c) {
_str->operator+=(static_cast<char>(c)); _str->operator+=(static_cast<char>(c));
return 1; return 1;
} }
size_t write(const uint8_t *s, size_t n) { size_t write(const uint8_t* s, size_t n) {
_str->append(reinterpret_cast<const char *>(s), n); _str->append(reinterpret_cast<const char*>(s), n);
return n; return n;
} }
private: private:
TDestination *_str; TDestination* _str;
}; };
} // namespace ARDUINOJSON_NAMESPACE } // namespace ARDUINOJSON_NAMESPACE

View File

@ -16,26 +16,26 @@ size_t doSerialize(VariantConstRef source, TWriter writer) {
} }
template <template <typename> class TSerializer, typename TDestination> template <template <typename> class TSerializer, typename TDestination>
size_t serialize(VariantConstRef source, TDestination &destination) { size_t serialize(VariantConstRef source, TDestination& destination) {
Writer<TDestination> writer(destination); Writer<TDestination> writer(destination);
return doSerialize<TSerializer>(source, writer); return doSerialize<TSerializer>(source, writer);
} }
template <template <typename> class TSerializer> template <template <typename> class TSerializer>
typename enable_if<!TSerializer<StaticStringWriter>::producesText, size_t>::type typename enable_if<!TSerializer<StaticStringWriter>::producesText, size_t>::type
serialize(VariantConstRef source, void *buffer, size_t bufferSize) { serialize(VariantConstRef source, void* buffer, size_t bufferSize) {
StaticStringWriter writer(reinterpret_cast<char *>(buffer), bufferSize); StaticStringWriter writer(reinterpret_cast<char*>(buffer), bufferSize);
return doSerialize<TSerializer>(source, writer); return doSerialize<TSerializer>(source, writer);
} }
template <template <typename> class TSerializer> template <template <typename> class TSerializer>
typename enable_if<TSerializer<StaticStringWriter>::producesText, size_t>::type typename enable_if<TSerializer<StaticStringWriter>::producesText, size_t>::type
serialize(VariantConstRef source, void *buffer, size_t bufferSize) { serialize(VariantConstRef source, void* buffer, size_t bufferSize) {
StaticStringWriter writer(reinterpret_cast<char *>(buffer), bufferSize); StaticStringWriter writer(reinterpret_cast<char*>(buffer), bufferSize);
size_t n = doSerialize<TSerializer>(source, writer); size_t n = doSerialize<TSerializer>(source, writer);
// add null-terminator for text output (not counted in the size) // add null-terminator for text output (not counted in the size)
if (n < bufferSize) if (n < bufferSize)
reinterpret_cast<char *>(buffer)[n] = 0; reinterpret_cast<char*>(buffer)[n] = 0;
return n; return n;
} }

View File

@ -11,7 +11,7 @@ namespace ARDUINOJSON_NAMESPACE {
struct LinkStringStoragePolicy { struct LinkStringStoragePolicy {
template <typename TAdaptedString, typename TCallback> template <typename TAdaptedString, typename TCallback>
bool store(TAdaptedString str, MemoryPool *, TCallback callback) { bool store(TAdaptedString str, MemoryPool*, TCallback callback) {
String storedString(str.data(), str.size(), String::Linked); String storedString(str.data(), str.size(), String::Linked);
callback(storedString); callback(storedString);
return !str.isNull(); return !str.isNull();
@ -20,7 +20,7 @@ struct LinkStringStoragePolicy {
struct CopyStringStoragePolicy { struct CopyStringStoragePolicy {
template <typename TAdaptedString, typename TCallback> template <typename TAdaptedString, typename TCallback>
bool store(TAdaptedString str, MemoryPool *pool, TCallback callback); bool store(TAdaptedString str, MemoryPool* pool, TCallback callback);
}; };
class LinkOrCopyStringStoragePolicy : LinkStringStoragePolicy, class LinkOrCopyStringStoragePolicy : LinkStringStoragePolicy,
@ -29,7 +29,7 @@ class LinkOrCopyStringStoragePolicy : LinkStringStoragePolicy,
LinkOrCopyStringStoragePolicy(bool link) : _link(link) {} LinkOrCopyStringStoragePolicy(bool link) : _link(link) {}
template <typename TAdaptedString, typename TCallback> template <typename TAdaptedString, typename TCallback>
bool store(TAdaptedString str, MemoryPool *pool, TCallback callback) { bool store(TAdaptedString str, MemoryPool* pool, TCallback callback) {
if (_link) if (_link)
return LinkStringStoragePolicy::store(str, pool, callback); return LinkStringStoragePolicy::store(str, pool, callback);
else else
@ -41,15 +41,15 @@ class LinkOrCopyStringStoragePolicy : LinkStringStoragePolicy,
}; };
template <typename T> template <typename T>
inline CopyStringStoragePolicy getStringStoragePolicy(const T &) { inline CopyStringStoragePolicy getStringStoragePolicy(const T&) {
return CopyStringStoragePolicy(); return CopyStringStoragePolicy();
} }
inline LinkStringStoragePolicy getStringStoragePolicy(const char *) { inline LinkStringStoragePolicy getStringStoragePolicy(const char*) {
return LinkStringStoragePolicy(); return LinkStringStoragePolicy();
} }
inline LinkOrCopyStringStoragePolicy getStringStoragePolicy(const String &s) { inline LinkOrCopyStringStoragePolicy getStringStoragePolicy(const String& s) {
return LinkOrCopyStringStoragePolicy(s.isLinked()); return LinkOrCopyStringStoragePolicy(s.isLinked());
} }

View File

@ -20,30 +20,30 @@ class VariantAttorney {
typedef char Yes[1]; typedef char Yes[1];
typedef char No[2]; typedef char No[2];
static Yes &probe(const VariantData *); static Yes& probe(const VariantData*);
static No &probe(VariantData *); static No& probe(VariantData*);
static TClient &client; static TClient& client;
public: public:
typedef typename conditional<sizeof(probe(client.getData())) == sizeof(Yes), typedef typename conditional<sizeof(probe(client.getData())) == sizeof(Yes),
const VariantData *, VariantData *>::type type; const VariantData*, VariantData*>::type type;
}; };
public: public:
template <typename TClient> template <typename TClient>
FORCE_INLINE static MemoryPool *getPool(TClient &client) { FORCE_INLINE static MemoryPool* getPool(TClient& client) {
return client.getPool(); return client.getPool();
} }
template <typename TClient> template <typename TClient>
FORCE_INLINE static typename ResultOfGetData<TClient>::type getData( FORCE_INLINE static typename ResultOfGetData<TClient>::type getData(
TClient &client) { TClient& client) {
return client.getData(); return client.getData();
} }
template <typename TClient> template <typename TClient>
FORCE_INLINE static VariantData *getOrCreateData(TClient &client) { FORCE_INLINE static VariantData* getOrCreateData(TClient& client) {
return client.getOrCreateData(); return client.getOrCreateData();
} }
}; };

View File

@ -26,7 +26,7 @@ struct Comparer<T, typename enable_if<IsString<T>::value>::type>
explicit Comparer(T value) : rhs(value) {} explicit Comparer(T value) : rhs(value) {}
CompareResult visitString(const char *lhs, size_t n) { CompareResult visitString(const char* lhs, size_t n) {
int i = stringCompare(adaptString(rhs), adaptString(lhs, n)); int i = stringCompare(adaptString(rhs), adaptString(lhs, n));
if (i < 0) if (i < 0)
return COMPARE_RESULT_GREATER; return COMPARE_RESULT_GREATER;
@ -83,11 +83,11 @@ struct Comparer<decltype(nullptr), void> : NullComparer {
#endif #endif
struct ArrayComparer : ComparerBase { struct ArrayComparer : ComparerBase {
const CollectionData *_rhs; const CollectionData* _rhs;
explicit ArrayComparer(const CollectionData &rhs) : _rhs(&rhs) {} explicit ArrayComparer(const CollectionData& rhs) : _rhs(&rhs) {}
CompareResult visitArray(const CollectionData &lhs) { CompareResult visitArray(const CollectionData& lhs) {
if (ArrayConstRef(&lhs) == ArrayConstRef(_rhs)) if (ArrayConstRef(&lhs) == ArrayConstRef(_rhs))
return COMPARE_RESULT_EQUAL; return COMPARE_RESULT_EQUAL;
else else
@ -96,11 +96,11 @@ struct ArrayComparer : ComparerBase {
}; };
struct ObjectComparer : ComparerBase { struct ObjectComparer : ComparerBase {
const CollectionData *_rhs; const CollectionData* _rhs;
explicit ObjectComparer(const CollectionData &rhs) : _rhs(&rhs) {} explicit ObjectComparer(const CollectionData& rhs) : _rhs(&rhs) {}
CompareResult visitObject(const CollectionData &lhs) { CompareResult visitObject(const CollectionData& lhs) {
if (ObjectConstRef(&lhs) == ObjectConstRef(_rhs)) if (ObjectConstRef(&lhs) == ObjectConstRef(_rhs))
return COMPARE_RESULT_EQUAL; return COMPARE_RESULT_EQUAL;
else else
@ -109,13 +109,13 @@ struct ObjectComparer : ComparerBase {
}; };
struct RawComparer : ComparerBase { struct RawComparer : ComparerBase {
const char *_rhsData; const char* _rhsData;
size_t _rhsSize; size_t _rhsSize;
explicit RawComparer(const char *rhsData, size_t rhsSize) explicit RawComparer(const char* rhsData, size_t rhsSize)
: _rhsData(rhsData), _rhsSize(rhsSize) {} : _rhsData(rhsData), _rhsSize(rhsSize) {}
CompareResult visitRawJson(const char *lhsData, size_t lhsSize) { CompareResult visitRawJson(const char* lhsData, size_t lhsSize) {
size_t size = _rhsSize < lhsSize ? _rhsSize : lhsSize; size_t size = _rhsSize < lhsSize ? _rhsSize : lhsSize;
int n = memcmp(lhsData, _rhsData, size); int n = memcmp(lhsData, _rhsData, size);
if (n < 0) if (n < 0)
@ -132,12 +132,12 @@ struct VariantComparer : ComparerBase {
explicit VariantComparer(VariantConstRef value) : rhs(value) {} explicit VariantComparer(VariantConstRef value) : rhs(value) {}
CompareResult visitArray(const CollectionData &lhs) { CompareResult visitArray(const CollectionData& lhs) {
ArrayComparer comparer(lhs); ArrayComparer comparer(lhs);
return accept(comparer); return accept(comparer);
} }
CompareResult visitObject(const CollectionData &lhs) { CompareResult visitObject(const CollectionData& lhs) {
ObjectComparer comparer(lhs); ObjectComparer comparer(lhs);
return accept(comparer); return accept(comparer);
} }
@ -147,12 +147,12 @@ struct VariantComparer : ComparerBase {
return accept(comparer); return accept(comparer);
} }
CompareResult visitString(const char *lhs, size_t) { CompareResult visitString(const char* lhs, size_t) {
Comparer<const char *> comparer(lhs); Comparer<const char*> comparer(lhs);
return accept(comparer); return accept(comparer);
} }
CompareResult visitRawJson(const char *lhsData, size_t lhsSize) { CompareResult visitRawJson(const char* lhsData, size_t lhsSize) {
RawComparer comparer(lhsData, lhsSize); RawComparer comparer(lhsData, lhsSize);
return accept(comparer); return accept(comparer);
} }
@ -179,7 +179,7 @@ struct VariantComparer : ComparerBase {
private: private:
template <typename TComparer> template <typename TComparer>
CompareResult accept(TComparer &comparer) { CompareResult accept(TComparer& comparer) {
CompareResult reversedResult = CompareResult reversedResult =
variantAccept(VariantAttorney::getData(rhs), comparer); variantAccept(VariantAttorney::getData(rhs), comparer);
switch (reversedResult) { switch (reversedResult) {
@ -197,12 +197,12 @@ template <typename T>
struct Comparer< struct Comparer<
T, typename enable_if<is_convertible<T, VariantConstRef>::value>::type> T, typename enable_if<is_convertible<T, VariantConstRef>::value>::type>
: VariantComparer { : VariantComparer {
explicit Comparer(const T &value) explicit Comparer(const T& value)
: VariantComparer(value.operator VariantConstRef()) {} : VariantComparer(value.operator VariantConstRef()) {}
}; };
template <typename T> template <typename T>
CompareResult compare(VariantConstRef lhs, const T &rhs) { CompareResult compare(VariantConstRef lhs, const T& rhs) {
Comparer<T> comparer(rhs); Comparer<T> comparer(rhs);
return variantAccept(VariantAttorney::getData(lhs), comparer); return variantAccept(VariantAttorney::getData(lhs), comparer);
} }

View File

@ -39,7 +39,7 @@ enum {
}; };
struct RawData { struct RawData {
const char *data; const char* data;
size_t size; size_t size;
}; };
@ -50,7 +50,7 @@ union VariantContent {
Integer asSignedInteger; Integer asSignedInteger;
CollectionData asCollection; CollectionData asCollection;
struct { struct {
const char *data; const char* data;
size_t size; size_t size;
} asString; } asString;
}; };

View File

@ -37,13 +37,13 @@ class VariantData {
_flags = VALUE_IS_NULL; _flags = VALUE_IS_NULL;
} }
void operator=(const VariantData &src) { void operator=(const VariantData& src) {
_content = src._content; _content = src._content;
_flags = uint8_t((_flags & OWNED_KEY_BIT) | (src._flags & ~OWNED_KEY_BIT)); _flags = uint8_t((_flags & OWNED_KEY_BIT) | (src._flags & ~OWNED_KEY_BIT));
} }
template <typename TVisitor> template <typename TVisitor>
typename TVisitor::result_type accept(TVisitor &visitor) const { typename TVisitor::result_type accept(TVisitor& visitor) const {
switch (type()) { switch (type()) {
case VALUE_IS_FLOAT: case VALUE_IS_FLOAT:
return visitor.visitFloat(_content.asFloat); return visitor.visitFloat(_content.asFloat);
@ -88,27 +88,27 @@ class VariantData {
bool asBoolean() const; bool asBoolean() const;
CollectionData *asArray() { CollectionData* asArray() {
return isArray() ? &_content.asCollection : 0; return isArray() ? &_content.asCollection : 0;
} }
const CollectionData *asArray() const { const CollectionData* asArray() const {
return const_cast<VariantData *>(this)->asArray(); return const_cast<VariantData*>(this)->asArray();
} }
const CollectionData *asCollection() const { const CollectionData* asCollection() const {
return isCollection() ? &_content.asCollection : 0; return isCollection() ? &_content.asCollection : 0;
} }
CollectionData *asObject() { CollectionData* asObject() {
return isObject() ? &_content.asCollection : 0; return isObject() ? &_content.asCollection : 0;
} }
const CollectionData *asObject() const { const CollectionData* asObject() const {
return const_cast<VariantData *>(this)->asObject(); return const_cast<VariantData*>(this)->asObject();
} }
bool copyFrom(const VariantData &src, MemoryPool *pool); bool copyFrom(const VariantData& src, MemoryPool* pool);
bool isArray() const { bool isArray() const {
return (_flags & VALUE_IS_ARRAY) != 0; return (_flags & VALUE_IS_ARRAY) != 0;
@ -177,7 +177,7 @@ class VariantData {
_content.asFloat = value; _content.asFloat = value;
} }
void setLinkedRaw(SerializedValue<const char *> value) { void setLinkedRaw(SerializedValue<const char*> value) {
if (value.data()) { if (value.data()) {
setType(VALUE_IS_LINKED_RAW); setType(VALUE_IS_LINKED_RAW);
_content.asString.data = value.data(); _content.asString.data = value.data();
@ -188,8 +188,8 @@ class VariantData {
} }
template <typename T> template <typename T>
bool storeOwnedRaw(SerializedValue<T> value, MemoryPool *pool) { bool storeOwnedRaw(SerializedValue<T> value, MemoryPool* pool) {
const char *dup = pool->saveString(adaptString(value.data(), value.size())); const char* dup = pool->saveString(adaptString(value.data(), value.size()));
if (dup) { if (dup) {
setType(VALUE_IS_OWNED_RAW); setType(VALUE_IS_OWNED_RAW);
_content.asString.data = dup; _content.asString.data = dup;
@ -227,13 +227,13 @@ class VariantData {
_content.asString.size = s.size(); _content.asString.size = s.size();
} }
CollectionData &toArray() { CollectionData& toArray() {
setType(VALUE_IS_ARRAY); setType(VALUE_IS_ARRAY);
_content.asCollection.clear(); _content.asCollection.clear();
return _content.asCollection; return _content.asCollection;
} }
CollectionData &toObject() { CollectionData& toObject() {
setType(VALUE_IS_OBJECT); setType(VALUE_IS_OBJECT);
_content.asCollection.clear(); _content.asCollection.clear();
return _content.asCollection; return _content.asCollection;
@ -258,7 +258,7 @@ class VariantData {
return isCollection() ? _content.asCollection.size() : 0; return isCollection() ? _content.asCollection.size() : 0;
} }
VariantData *addElement(MemoryPool *pool) { VariantData* addElement(MemoryPool* pool) {
if (isNull()) if (isNull())
toArray(); toArray();
if (!isArray()) if (!isArray())
@ -266,12 +266,12 @@ class VariantData {
return _content.asCollection.addElement(pool); return _content.asCollection.addElement(pool);
} }
VariantData *getElement(size_t index) const { VariantData* getElement(size_t index) const {
const CollectionData *col = asArray(); const CollectionData* col = asArray();
return col ? col->getElement(index) : 0; return col ? col->getElement(index) : 0;
} }
VariantData *getOrAddElement(size_t index, MemoryPool *pool) { VariantData* getOrAddElement(size_t index, MemoryPool* pool) {
if (isNull()) if (isNull())
toArray(); toArray();
if (!isArray()) if (!isArray())
@ -280,13 +280,13 @@ class VariantData {
} }
template <typename TAdaptedString> template <typename TAdaptedString>
VariantData *getMember(TAdaptedString key) const { VariantData* getMember(TAdaptedString key) const {
const CollectionData *col = asObject(); const CollectionData* col = asObject();
return col ? col->getMember(key) : 0; return col ? col->getMember(key) : 0;
} }
template <typename TAdaptedString, typename TStoragePolicy> template <typename TAdaptedString, typename TStoragePolicy>
VariantData *getOrAddMember(TAdaptedString key, MemoryPool *pool, VariantData* getOrAddMember(TAdaptedString key, MemoryPool* pool,
TStoragePolicy storage_policy) { TStoragePolicy storage_policy) {
if (isNull()) if (isNull())
toObject(); toObject();
@ -307,7 +307,7 @@ class VariantData {
} }
template <typename TAdaptedString, typename TStoragePolicy> template <typename TAdaptedString, typename TStoragePolicy>
inline bool storeString(TAdaptedString value, MemoryPool *pool, inline bool storeString(TAdaptedString value, MemoryPool* pool,
TStoragePolicy storage) { TStoragePolicy storage) {
if (value.isNull()) { if (value.isNull()) {
setNull(); setNull();
@ -324,7 +324,7 @@ class VariantData {
} }
struct VariantStringSetter { struct VariantStringSetter {
VariantStringSetter(VariantData *instance) : _instance(instance) {} VariantStringSetter(VariantData* instance) : _instance(instance) {}
template <typename TStoredString> template <typename TStoredString>
void operator()(TStoredString s) { void operator()(TStoredString s) {
@ -334,7 +334,7 @@ class VariantData {
_instance->setNull(); _instance->setNull();
} }
VariantData *_instance; VariantData* _instance;
}; };
}; };

View File

@ -12,16 +12,16 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
template <typename TVisitor> template <typename TVisitor>
inline typename TVisitor::result_type variantAccept(const VariantData *var, inline typename TVisitor::result_type variantAccept(const VariantData* var,
TVisitor &visitor) { TVisitor& visitor) {
if (var != 0) if (var != 0)
return var->accept(visitor); return var->accept(visitor);
else else
return visitor.visitNull(); return visitor.visitNull();
} }
inline bool variantCopyFrom(VariantData *dst, const VariantData *src, inline bool variantCopyFrom(VariantData* dst, const VariantData* src,
MemoryPool *pool) { MemoryPool* pool) {
if (!dst) if (!dst)
return false; return false;
if (!src) { if (!src) {
@ -31,51 +31,51 @@ inline bool variantCopyFrom(VariantData *dst, const VariantData *src,
return dst->copyFrom(*src, pool); return dst->copyFrom(*src, pool);
} }
inline void variantSetNull(VariantData *var) { inline void variantSetNull(VariantData* var) {
if (!var) if (!var)
return; return;
var->setNull(); var->setNull();
} }
template <typename TAdaptedString, typename TStoragePolicy> template <typename TAdaptedString, typename TStoragePolicy>
inline bool variantSetString(VariantData *var, TAdaptedString value, inline bool variantSetString(VariantData* var, TAdaptedString value,
MemoryPool *pool, TStoragePolicy storage_policy) { MemoryPool* pool, TStoragePolicy storage_policy) {
return var != 0 ? var->storeString(value, pool, storage_policy) : 0; return var != 0 ? var->storeString(value, pool, storage_policy) : 0;
} }
inline size_t variantSize(const VariantData *var) { inline size_t variantSize(const VariantData* var) {
return var != 0 ? var->size() : 0; return var != 0 ? var->size() : 0;
} }
inline CollectionData *variantToArray(VariantData *var) { inline CollectionData* variantToArray(VariantData* var) {
if (!var) if (!var)
return 0; return 0;
return &var->toArray(); return &var->toArray();
} }
inline CollectionData *variantToObject(VariantData *var) { inline CollectionData* variantToObject(VariantData* var) {
if (!var) if (!var)
return 0; return 0;
return &var->toObject(); return &var->toObject();
} }
inline VariantData *variantGetElement(const VariantData *var, size_t index) { inline VariantData* variantGetElement(const VariantData* var, size_t index) {
return var != 0 ? var->getElement(index) : 0; return var != 0 ? var->getElement(index) : 0;
} }
inline NO_INLINE VariantData *variantAddElement(VariantData *var, inline NO_INLINE VariantData* variantAddElement(VariantData* var,
MemoryPool *pool) { MemoryPool* pool) {
return var != 0 ? var->addElement(pool) : 0; return var != 0 ? var->addElement(pool) : 0;
} }
inline NO_INLINE VariantData *variantGetOrAddElement(VariantData *var, inline NO_INLINE VariantData* variantGetOrAddElement(VariantData* var,
size_t index, size_t index,
MemoryPool *pool) { MemoryPool* pool) {
return var != 0 ? var->getOrAddElement(index, pool) : 0; return var != 0 ? var->getOrAddElement(index, pool) : 0;
} }
template <typename AdaptedString> template <typename AdaptedString>
VariantData *variantGetMember(const VariantData *var, AdaptedString key) { VariantData* variantGetMember(const VariantData* var, AdaptedString key) {
if (!var) if (!var)
return 0; return 0;
return var->getMember(key); return var->getMember(key);
@ -84,8 +84,8 @@ VariantData *variantGetMember(const VariantData *var, AdaptedString key) {
// TODO: this function is inconsitent with the others: // TODO: this function is inconsitent with the others:
// it should take an adapted string // it should take an adapted string
template <typename TChar> template <typename TChar>
VariantData *variantGetOrAddMember(VariantData *var, TChar *key, VariantData* variantGetOrAddMember(VariantData* var, TChar* key,
MemoryPool *pool) { MemoryPool* pool) {
if (!var) if (!var)
return 0; return 0;
return var->getOrAddMember(adaptString(key), pool, return var->getOrAddMember(adaptString(key), pool,
@ -93,28 +93,28 @@ VariantData *variantGetOrAddMember(VariantData *var, TChar *key,
} }
template <typename TString> template <typename TString>
VariantData *variantGetOrAddMember(VariantData *var, const TString &key, VariantData* variantGetOrAddMember(VariantData* var, const TString& key,
MemoryPool *pool) { MemoryPool* pool) {
if (!var) if (!var)
return 0; return 0;
return var->getOrAddMember(adaptString(key), pool, return var->getOrAddMember(adaptString(key), pool,
getStringStoragePolicy(key)); getStringStoragePolicy(key));
} }
inline bool variantIsNull(const VariantData *var) { inline bool variantIsNull(const VariantData* var) {
return var == 0 || var->isNull(); return var == 0 || var->isNull();
} }
inline size_t variantNesting(const VariantData *var) { inline size_t variantNesting(const VariantData* var) {
if (!var) if (!var)
return 0; return 0;
const CollectionData *collection = var->asCollection(); const CollectionData* collection = var->asCollection();
if (!collection) if (!collection)
return 0; return 0;
size_t maxChildNesting = 0; size_t maxChildNesting = 0;
for (const VariantSlot *s = collection->head(); s; s = s->next()) { for (const VariantSlot* s = collection->head(); s; s = s->next()) {
size_t childNesting = variantNesting(s->data()); size_t childNesting = variantNesting(s->data());
if (childNesting > maxChildNesting) if (childNesting > maxChildNesting)
maxChildNesting = childNesting; maxChildNesting = childNesting;

View File

@ -83,7 +83,7 @@ inline String VariantData::asString() const {
} }
} }
inline bool VariantData::copyFrom(const VariantData &src, MemoryPool *pool) { inline bool VariantData::copyFrom(const VariantData& src, MemoryPool* pool) {
switch (src.type()) { switch (src.type()) {
case VALUE_IS_ARRAY: case VALUE_IS_ARRAY:
return toArray().copyFrom(src._content.asCollection, pool); return toArray().copyFrom(src._content.asCollection, pool);
@ -131,9 +131,9 @@ inline bool VariantRef::set(char value) const {
// TODO: move somewhere else // TODO: move somewhere else
template <typename TAdaptedString, typename TCallback> template <typename TAdaptedString, typename TCallback>
bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool *pool, bool CopyStringStoragePolicy::store(TAdaptedString str, MemoryPool* pool,
TCallback callback) { TCallback callback) {
const char *copy = pool->saveString(str); const char* copy = pool->saveString(str);
String storedString(copy, str.size(), String::Copied); String storedString(copy, str.size(), String::Copied);
callback(storedString); callback(storedString);
return copy != 0; return copy != 0;

View File

@ -15,7 +15,7 @@ class VariantConstRef;
template <typename T> template <typename T>
CompareResult compare(VariantConstRef lhs, CompareResult compare(VariantConstRef lhs,
const T &rhs); // VariantCompare.cpp const T& rhs); // VariantCompare.cpp
struct VariantOperatorTag {}; struct VariantOperatorTag {};
@ -29,7 +29,7 @@ struct VariantOperators : VariantOperatorTag {
template <typename T> template <typename T>
friend friend
typename enable_if<!IsVariant<T>::value && !is_array<T>::value, T>::type typename enable_if<!IsVariant<T>::value && !is_array<T>::value, T>::type
operator|(const TVariant &variant, const T &defaultValue) { operator|(const TVariant& variant, const T& defaultValue) {
if (variant.template is<T>()) if (variant.template is<T>())
return variant.template as<T>(); return variant.template as<T>();
else else
@ -37,10 +37,10 @@ struct VariantOperators : VariantOperatorTag {
} }
// //
// const char* operator|(JsonVariant, const char*) // const char* operator|(JsonVariant, const char*)
friend const char *operator|(const TVariant &variant, friend const char* operator|(const TVariant& variant,
const char *defaultValue) { const char* defaultValue) {
if (variant.template is<const char *>()) if (variant.template is<const char*>())
return variant.template as<const char *>(); return variant.template as<const char*>();
else else
return defaultValue; return defaultValue;
} }
@ -48,7 +48,7 @@ struct VariantOperators : VariantOperatorTag {
// JsonVariant operator|(JsonVariant, JsonVariant) // JsonVariant operator|(JsonVariant, JsonVariant)
template <typename T> template <typename T>
friend typename enable_if<IsVariant<T>::value, VariantConstRef>::type friend typename enable_if<IsVariant<T>::value, VariantConstRef>::type
operator|(const TVariant &variant, T defaultValue) { operator|(const TVariant& variant, T defaultValue) {
if (variant) if (variant)
return variant; return variant;
else else
@ -57,133 +57,133 @@ struct VariantOperators : VariantOperatorTag {
// value == TVariant // value == TVariant
template <typename T> template <typename T>
friend bool operator==(T *lhs, TVariant rhs) { friend bool operator==(T* lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_EQUAL; return compare(rhs, lhs) == COMPARE_RESULT_EQUAL;
} }
template <typename T> template <typename T>
friend bool operator==(const T &lhs, TVariant rhs) { friend bool operator==(const T& lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_EQUAL; return compare(rhs, lhs) == COMPARE_RESULT_EQUAL;
} }
// TVariant == value // TVariant == value
template <typename T> template <typename T>
friend bool operator==(TVariant lhs, T *rhs) { friend bool operator==(TVariant lhs, T* rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_EQUAL; return compare(lhs, rhs) == COMPARE_RESULT_EQUAL;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator==(TVariant lhs, const T &rhs) { operator==(TVariant lhs, const T& rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_EQUAL; return compare(lhs, rhs) == COMPARE_RESULT_EQUAL;
} }
// value != TVariant // value != TVariant
template <typename T> template <typename T>
friend bool operator!=(T *lhs, TVariant rhs) { friend bool operator!=(T* lhs, TVariant rhs) {
return compare(rhs, lhs) != COMPARE_RESULT_EQUAL; return compare(rhs, lhs) != COMPARE_RESULT_EQUAL;
} }
template <typename T> template <typename T>
friend bool operator!=(const T &lhs, TVariant rhs) { friend bool operator!=(const T& lhs, TVariant rhs) {
return compare(rhs, lhs) != COMPARE_RESULT_EQUAL; return compare(rhs, lhs) != COMPARE_RESULT_EQUAL;
} }
// TVariant != value // TVariant != value
template <typename T> template <typename T>
friend bool operator!=(TVariant lhs, T *rhs) { friend bool operator!=(TVariant lhs, T* rhs) {
return compare(lhs, rhs) != COMPARE_RESULT_EQUAL; return compare(lhs, rhs) != COMPARE_RESULT_EQUAL;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator!=(TVariant lhs, const T &rhs) { operator!=(TVariant lhs, const T& rhs) {
return compare(lhs, rhs) != COMPARE_RESULT_EQUAL; return compare(lhs, rhs) != COMPARE_RESULT_EQUAL;
} }
// value < TVariant // value < TVariant
template <typename T> template <typename T>
friend bool operator<(T *lhs, TVariant rhs) { friend bool operator<(T* lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_GREATER; return compare(rhs, lhs) == COMPARE_RESULT_GREATER;
} }
template <typename T> template <typename T>
friend bool operator<(const T &lhs, TVariant rhs) { friend bool operator<(const T& lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_GREATER; return compare(rhs, lhs) == COMPARE_RESULT_GREATER;
} }
// TVariant < value // TVariant < value
template <typename T> template <typename T>
friend bool operator<(TVariant lhs, T *rhs) { friend bool operator<(TVariant lhs, T* rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_LESS; return compare(lhs, rhs) == COMPARE_RESULT_LESS;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator<(TVariant lhs, const T &rhs) { operator<(TVariant lhs, const T& rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_LESS; return compare(lhs, rhs) == COMPARE_RESULT_LESS;
} }
// value <= TVariant // value <= TVariant
template <typename T> template <typename T>
friend bool operator<=(T *lhs, TVariant rhs) { friend bool operator<=(T* lhs, TVariant rhs) {
return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0; return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
} }
template <typename T> template <typename T>
friend bool operator<=(const T &lhs, TVariant rhs) { friend bool operator<=(const T& lhs, TVariant rhs) {
return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0; return (compare(rhs, lhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
} }
// TVariant <= value // TVariant <= value
template <typename T> template <typename T>
friend bool operator<=(TVariant lhs, T *rhs) { friend bool operator<=(TVariant lhs, T* rhs) {
return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0; return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator<=(TVariant lhs, const T &rhs) { operator<=(TVariant lhs, const T& rhs) {
return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0; return (compare(lhs, rhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
} }
// value > TVariant // value > TVariant
template <typename T> template <typename T>
friend bool operator>(T *lhs, TVariant rhs) { friend bool operator>(T* lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_LESS; return compare(rhs, lhs) == COMPARE_RESULT_LESS;
} }
template <typename T> template <typename T>
friend bool operator>(const T &lhs, TVariant rhs) { friend bool operator>(const T& lhs, TVariant rhs) {
return compare(rhs, lhs) == COMPARE_RESULT_LESS; return compare(rhs, lhs) == COMPARE_RESULT_LESS;
} }
// TVariant > value // TVariant > value
template <typename T> template <typename T>
friend bool operator>(TVariant lhs, T *rhs) { friend bool operator>(TVariant lhs, T* rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_GREATER; return compare(lhs, rhs) == COMPARE_RESULT_GREATER;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator>(TVariant lhs, const T &rhs) { operator>(TVariant lhs, const T& rhs) {
return compare(lhs, rhs) == COMPARE_RESULT_GREATER; return compare(lhs, rhs) == COMPARE_RESULT_GREATER;
} }
// value >= TVariant // value >= TVariant
template <typename T> template <typename T>
friend bool operator>=(T *lhs, TVariant rhs) { friend bool operator>=(T* lhs, TVariant rhs) {
return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0; return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
} }
template <typename T> template <typename T>
friend bool operator>=(const T &lhs, TVariant rhs) { friend bool operator>=(const T& lhs, TVariant rhs) {
return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0; return (compare(rhs, lhs) & COMPARE_RESULT_LESS_OR_EQUAL) != 0;
} }
// TVariant >= value // TVariant >= value
template <typename T> template <typename T>
friend bool operator>=(TVariant lhs, T *rhs) { friend bool operator>=(TVariant lhs, T* rhs) {
return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0; return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
} }
template <typename T> template <typename T>
friend friend
typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type typename enable_if<!is_base_of<VariantOperatorTag, T>::value, bool>::type
operator>=(TVariant lhs, const T &rhs) { operator>=(TVariant lhs, const T& rhs) {
return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0; return (compare(lhs, rhs) & COMPARE_RESULT_GREATER_OR_EQUAL) != 0;
} }
}; };

View File

@ -49,8 +49,8 @@ class VariantRefBase : public VariantTag {
} }
protected: protected:
VariantRefBase(TData *data) : _data(data) {} VariantRefBase(TData* data) : _data(data) {}
TData *_data; TData* _data;
}; };
class VariantConstRef : public VariantRefBase<const VariantData>, class VariantConstRef : public VariantRefBase<const VariantData>,
@ -62,21 +62,21 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
public: public:
VariantConstRef() : base_type(0) {} VariantConstRef() : base_type(0) {}
explicit VariantConstRef(const VariantData *data) : base_type(data) {} explicit VariantConstRef(const VariantData* data) : base_type(data) {}
template <typename T> template <typename T>
FORCE_INLINE FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value, typename enable_if<!is_same<T, char*>::value && !is_same<T, char>::value,
T>::type T>::type
as() const { as() const {
return Converter<T>::fromJson(*this); return Converter<T>::fromJson(*this);
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<is_same<T, char *>::value, const char *>::type FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type
ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()") ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()")
as() const { as() const {
return as<const char *>(); return as<const char*>();
} }
template <typename T> template <typename T>
@ -89,17 +89,17 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
template <typename T> template <typename T>
FORCE_INLINE FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value, typename enable_if<!is_same<T, char*>::value && !is_same<T, char>::value,
bool>::type bool>::type
is() const { is() const {
return Converter<T>::checkJson(*this); return Converter<T>::checkJson(*this);
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<is_same<T, char *>::value, bool>::type FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type
ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()") ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()")
is() const { is() const {
return is<const char *>(); return is<const char*>();
} }
template <typename T> template <typename T>
@ -124,7 +124,7 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
template <typename TString> template <typename TString>
FORCE_INLINE FORCE_INLINE
typename enable_if<IsString<TString>::value, VariantConstRef>::type typename enable_if<IsString<TString>::value, VariantConstRef>::type
operator[](const TString &key) const { operator[](const TString& key) const {
return VariantConstRef(variantGetMember(_data, adaptString(key))); return VariantConstRef(variantGetMember(_data, adaptString(key)));
} }
@ -133,13 +133,13 @@ class VariantConstRef : public VariantRefBase<const VariantData>,
// operator[](const __FlashStringHelper*) const // operator[](const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE FORCE_INLINE
typename enable_if<IsString<TChar *>::value, VariantConstRef>::type typename enable_if<IsString<TChar*>::value, VariantConstRef>::type
operator[](TChar *key) const { operator[](TChar* key) const {
return VariantConstRef(variantGetMember(_data, adaptString(key))); return VariantConstRef(variantGetMember(_data, adaptString(key)));
} }
protected: protected:
const VariantData *getData() const { const VariantData* getData() const {
return _data; return _data;
} }
}; };
@ -158,7 +158,7 @@ class VariantRef : public VariantRefBase<VariantData>,
public: public:
// Intenal use only // Intenal use only
FORCE_INLINE VariantRef(MemoryPool *pool, VariantData *data) FORCE_INLINE VariantRef(MemoryPool* pool, VariantData* data)
: base_type(data), _pool(pool) {} : base_type(data), _pool(pool) {}
// Creates an uninitialized VariantRef // Creates an uninitialized VariantRef
@ -169,7 +169,7 @@ class VariantRef : public VariantRefBase<VariantData>,
} }
template <typename T> template <typename T>
FORCE_INLINE bool set(const T &value) const { FORCE_INLINE bool set(const T& value) const {
Converter<T>::toJson(value, *this); Converter<T>::toJson(value, *this);
return _pool && !_pool->overflowed(); return _pool && !_pool->overflowed();
} }
@ -179,24 +179,24 @@ class VariantRef : public VariantRefBase<VariantData>,
set(char value) const; set(char value) const;
template <typename T> template <typename T>
FORCE_INLINE bool set(T *value) const { FORCE_INLINE bool set(T* value) const {
Converter<T *>::toJson(value, *this); Converter<T*>::toJson(value, *this);
return _pool && !_pool->overflowed(); return _pool && !_pool->overflowed();
} }
template <typename T> template <typename T>
FORCE_INLINE FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value, typename enable_if<!is_same<T, char*>::value && !is_same<T, char>::value,
T>::type T>::type
as() const { as() const {
return Converter<T>::fromJson(*this); return Converter<T>::fromJson(*this);
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<is_same<T, char *>::value, const char *>::type FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type
ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()") ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()")
as() const { as() const {
return as<const char *>(); return as<const char*>();
} }
template <typename T> template <typename T>
@ -209,17 +209,17 @@ class VariantRef : public VariantRefBase<VariantData>,
template <typename T> template <typename T>
FORCE_INLINE FORCE_INLINE
typename enable_if<!is_same<T, char *>::value && !is_same<T, char>::value, typename enable_if<!is_same<T, char*>::value && !is_same<T, char>::value,
bool>::type bool>::type
is() const { is() const {
return Converter<T>::checkJson(*this); return Converter<T>::checkJson(*this);
} }
template <typename T> template <typename T>
FORCE_INLINE typename enable_if<is_same<T, char *>::value, bool>::type FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type
ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()") ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()")
is() const { is() const {
return is<const char *>(); return is<const char*>();
} }
template <typename T> template <typename T>
@ -268,8 +268,8 @@ class VariantRef : public VariantRefBase<VariantData>,
// remove(const char*) const // remove(const char*) const
// remove(const __FlashStringHelper*) const // remove(const __FlashStringHelper*) const
template <typename TChar> template <typename TChar>
FORCE_INLINE typename enable_if<IsString<TChar *>::value>::type remove( FORCE_INLINE typename enable_if<IsString<TChar*>::value>::type remove(
TChar *key) const { TChar* key) const {
if (_data) if (_data)
_data->remove(adaptString(key)); _data->remove(adaptString(key));
} }
@ -277,7 +277,7 @@ class VariantRef : public VariantRefBase<VariantData>,
// remove(const String&) const // remove(const String&) const
template <typename TString> template <typename TString>
FORCE_INLINE typename enable_if<IsString<TString>::value>::type remove( FORCE_INLINE typename enable_if<IsString<TString>::value>::type remove(
const TString &key) const { const TString& key) const {
if (_data) if (_data)
_data->remove(adaptString(key)); _data->remove(adaptString(key));
} }
@ -285,27 +285,27 @@ class VariantRef : public VariantRefBase<VariantData>,
inline void shallowCopy(VariantConstRef target) { inline void shallowCopy(VariantConstRef target) {
if (!_data) if (!_data)
return; return;
const VariantData *targetData = VariantAttorney::getData(target); const VariantData* targetData = VariantAttorney::getData(target);
if (targetData) if (targetData)
*_data = *targetData; *_data = *targetData;
else else
_data->setNull(); _data->setNull();
} }
MemoryPool *getPool() const { MemoryPool* getPool() const {
return _pool; return _pool;
} }
VariantData *getData() const { VariantData* getData() const {
return _data; return _data;
} }
VariantData *getOrCreateData() const { VariantData* getOrCreateData() const {
return _data; return _data;
} }
private: private:
MemoryPool *_pool; MemoryPool* _pool;
}; };
template <> template <>
@ -322,7 +322,7 @@ struct Converter<VariantRef> : private VariantAttorney {
VariantConstRef); VariantConstRef);
static bool checkJson(VariantRef src) { static bool checkJson(VariantRef src) {
VariantData *data = getData(src); VariantData* data = getData(src);
return !!data; return !!data;
} }
@ -342,7 +342,7 @@ struct Converter<VariantConstRef> : private VariantAttorney {
} }
static bool checkJson(VariantConstRef src) { static bool checkJson(VariantConstRef src) {
const VariantData *data = getData(src); const VariantData* data = getData(src);
return !!data; return !!data;
} }
}; };

View File

@ -14,7 +14,7 @@ template <typename TResult>
struct Visitor { struct Visitor {
typedef TResult result_type; typedef TResult result_type;
TResult visitArray(const CollectionData &) { TResult visitArray(const CollectionData&) {
return TResult(); return TResult();
} }
@ -34,7 +34,7 @@ struct Visitor {
return TResult(); return TResult();
} }
TResult visitObject(const CollectionData &) { TResult visitObject(const CollectionData&) {
return TResult(); return TResult();
} }
@ -42,11 +42,11 @@ struct Visitor {
return TResult(); return TResult();
} }
TResult visitRawJson(const char *, size_t) { TResult visitRawJson(const char*, size_t) {
return TResult(); return TResult();
} }
TResult visitString(const char *, size_t) { TResult visitString(const char*, size_t) {
return TResult(); return TResult();
} }
}; };