From 0045bb3e3519a0016c195620e9520b0b77f74823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Blanchon?= Date: Wed, 9 Jul 2014 13:40:09 +0200 Subject: [PATCH] Reduced the size of JsonArrayBase::printTo() by 18 bytes --- JsonGenerator/JsonArrayBase.cpp | 15 ++++++++++----- JsonGenerator/JsonHashTableBase.cpp | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/JsonGenerator/JsonArrayBase.cpp b/JsonGenerator/JsonArrayBase.cpp index 4d7f9380..2c620b00 100644 --- a/JsonGenerator/JsonArrayBase.cpp +++ b/JsonGenerator/JsonArrayBase.cpp @@ -6,6 +6,7 @@ #include "JsonArrayBase.h" using namespace ArduinoJson::Generator; +using namespace ArduinoJson::Internals; size_t JsonArrayBase::printTo(Print& p) const { @@ -13,14 +14,18 @@ size_t JsonArrayBase::printTo(Print& p) const n += p.write('['); - for (int i = 0; i < count; i++) - { - if (i > 0) + // NB: the code has been optimized for a small size on a 8-bit AVR + + const JsonValue* current = items; + for (int i = count; i > 0; i--) + { + n += current->printTo(p); + current++; + + if (i > 1) { n += p.write(','); } - - n += items[i].printTo(p); } n += p.write(']'); diff --git a/JsonGenerator/JsonHashTableBase.cpp b/JsonGenerator/JsonHashTableBase.cpp index 24a997a1..27bb3977 100644 --- a/JsonGenerator/JsonHashTableBase.cpp +++ b/JsonGenerator/JsonHashTableBase.cpp @@ -15,7 +15,7 @@ size_t JsonHashTableBase::printTo(Print& p) const // NB: the code has been optimized for a small size on a 8-bit AVR - KeyValuePair* current = items; + const KeyValuePair* current = items; for (int i = count; i > 0; i--) { n += current->key.printTo(p);