mirror of
https://github.com/bblanchon/ArduinoJson.git
synced 2025-07-04 06:06:36 +02:00
43 lines
853 B
C++
43 lines
853 B
C++
// Copyright Benoit Blanchon 2014-2017
|
|
// MIT License
|
|
//
|
|
// Arduino JSON library
|
|
// https://github.com/bblanchon/ArduinoJson
|
|
// If you like this project, please add a star!
|
|
|
|
#pragma once
|
|
|
|
#include "../Print.hpp"
|
|
|
|
namespace ArduinoJson {
|
|
namespace Internals {
|
|
|
|
class Encoding {
|
|
public:
|
|
// Optimized for code size on a 8-bit AVR
|
|
static char escapeChar(char c) {
|
|
const char *p = escapeTable(false);
|
|
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(true);
|
|
for (;;) {
|
|
if (p[0] == '\0') return c;
|
|
if (p[0] == c) return p[1];
|
|
p += 2;
|
|
}
|
|
}
|
|
|
|
private:
|
|
static const char *escapeTable(bool excludeIdenticals) {
|
|
return &"\"\"\\\\b\bf\fn\nr\rt\t"[excludeIdenticals ? 4 : 0];
|
|
}
|
|
};
|
|
}
|
|
}
|