mirror of
https://github.com/eledio-devices/thirdparty-ArduinoJson.git
synced 2025-11-01 16:14:05 +01:00
40 lines
828 B
C++
40 lines
828 B
C++
// ArduinoJson - https://arduinojson.org
|
|
// Copyright Benoit Blanchon 2014-2021
|
|
// MIT License
|
|
|
|
#pragma once
|
|
|
|
#include <ArduinoJson/Namespace.hpp>
|
|
|
|
namespace ARDUINOJSON_NAMESPACE {
|
|
|
|
class EscapeSequence {
|
|
public:
|
|
// Optimized for code size on a 8-bit AVR
|
|
static char escapeChar(char c) {
|
|
const char *p = escapeTable(true);
|
|
while (p[0] && p[1] != c) {
|
|
p += 2;
|
|
}
|
|
return p[0];
|
|
}
|
|
|
|
// Optimized for code size on a 8-bit AVR
|
|
static char unescapeChar(char c) {
|
|
const char *p = escapeTable(false);
|
|
for (;;) {
|
|
if (p[0] == '\0')
|
|
return 0;
|
|
if (p[0] == c)
|
|
return p[1];
|
|
p += 2;
|
|
}
|
|
}
|
|
|
|
private:
|
|
static const char *escapeTable(bool excludeSolidus) {
|
|
return &"//\"\"\\\\b\bf\fn\nr\rt\t"[excludeSolidus ? 2 : 0];
|
|
}
|
|
};
|
|
} // namespace ARDUINOJSON_NAMESPACE
|