From 525649c4169d4862e88c8f30ed7925b0cd5f6474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Blanchon?= Date: Wed, 9 Jul 2014 12:57:50 +0200 Subject: [PATCH] Reduced the size of EscapedString::printTo() by 26 bytes --- JsonGenerator/EscapedString.cpp | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/JsonGenerator/EscapedString.cpp b/JsonGenerator/EscapedString.cpp index 107b3589..bf7c461c 100644 --- a/JsonGenerator/EscapedString.cpp +++ b/JsonGenerator/EscapedString.cpp @@ -9,31 +9,19 @@ using namespace ArduinoJson::Internals; static inline char getSpecialChar(char c) { - switch (c) + // Optimized for code size on a 8-bit AVR + + const char* specials = "\"\"\\\\\bb\ff\nn\rr\tt"; + + while (true) { - case '"': - return '"'; + if (specials[0] == 0) + return 0; - case '\\': - return '\\'; + if (specials[0] == c) + return specials[1]; - case '\b': - return 'b'; - - case '\f': - return 'f'; - - case '\n': - return 'n'; - - case '\r': - return 'r'; - - case '\t': - return 't'; - - default: - return 0; + specials += 2; } }