From 4d2bc3c7520b269180ae42d751dd97ad42fec55e Mon Sep 17 00:00:00 2001 From: Rosen Penev Date: Tue, 18 May 2021 16:27:34 -0700 Subject: [PATCH] some range loop conversions Signed-off-by: Rosen Penev --- samples/Jzon.cpp | 41 +++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/samples/Jzon.cpp b/samples/Jzon.cpp index 10d7b389..b4a0c201 100644 --- a/samples/Jzon.cpp +++ b/samples/Jzon.cpp @@ -27,10 +27,11 @@ THE SOFTWARE. #include "Jzon.h" -#include +#include +#include #include +#include #include -#include namespace Jzon { @@ -357,27 +358,31 @@ namespace Jzon } // This is not the most beautiful place for these, but it'll do - static const char charsUnescaped[] = {'\\', '/', '\"', '\n', '\t', '\b', '\f', '\r'}; - static const char *charsEscaped[] = {"\\\\", "\\/", "\\\"", "\\n", "\\t", "\\b", "\\f", "\\r"}; - static const unsigned int numEscapeChars = 8; - static const char nullUnescaped = '\0'; - static const char *nullEscaped = "\0\0"; - const char *&getEscaped(const char &c) - { - for (unsigned int i = 0; i < numEscapeChars; ++i) { - if (c == charsUnescaped[i]) { - return charsEscaped[i]; + using chrPair = struct + { + char first; + const char *second; + }; + static constexpr std::array chars{ + chrPair{'\\', "\\\\"}, chrPair{'/', "\\/"}, chrPair{'\"', "\\\""}, chrPair{'\n', "\\n"}, + chrPair{'\t', "\\t"}, chrPair{'\b', "\\b"}, chrPair{'\f', "\\f"}, chrPair{'\r', "\\r"}, + }; + static constexpr char nullUnescaped = '\0'; + static constexpr const char *nullEscaped = "\0\0"; + const char *const &getEscaped(const char &c) + { + for (auto &&chr : chars) { + if (chr.first == c) { + return chr.second; } } return nullEscaped; } const char &getUnescaped(const char &c1, const char &c2) { - for (unsigned int i = 0; i < numEscapeChars; ++i) { - const char *&e = charsEscaped[i]; - - if (c1 == e[0] && c2 == e[1]) { - return charsUnescaped[i]; + for (auto &&chr : chars) { + if (c1 == chars[0].first && c2 == chars[1].first) { + return chr.first; } } return nullUnescaped; @@ -388,7 +393,7 @@ namespace Jzon std::string escaped; for (auto &&c : value) { - const char *&a = getEscaped(c); + auto &&a = getEscaped(c); if (a[0] != '\0') { escaped += a[0]; escaped += a[1];