7 #ifndef ATLAS_CODECS_PACKED_H 8 #define ATLAS_CODECS_PACKED_H 11 #include <Atlas/Codec.h> 57 void mapIntItem(std::string name, std::int64_t)
override;
83 std::istream &m_istream;
84 std::ostream &m_ostream;
100 std::stack<State> m_state;
114 void parsingBegins(
char);
116 void parseStream(
char);
120 void parseList(
char);
122 void parseMapBegin(
char);
124 void parseListBegin(
char);
128 void parseFloat(
char);
130 void parseString(
char);
132 void parseName(
char);
134 inline std::string hexEncode(std::string data) {
136 for (
size_t i = 0; i < data.size(); i++) {
137 char currentChar = data[i];
139 switch (currentChar) {
151 m_encoded.reserve(data.size() + (data.size() / 4));
152 m_encoded.assign(data, 0, i);
153 for (; i < data.size(); i++) {
154 currentChar = data[i];
156 switch (currentChar) {
171 m_encoded += currentChar;
176 return std::move(m_encoded);
186 inline std::string hexDecode(std::string data) {
189 for (
size_t i = 0; i < data.size(); i++) {
190 char currentChar = data[i];
191 if (currentChar ==
'+') {
194 m_decoded.reserve(data.size());
195 m_decoded.assign(data, 0, i);
197 for (; i < data.size(); i++) {
198 currentChar = data[i];
199 if (currentChar ==
'+') {
205 m_decoded += currentChar;
209 return std::move(m_decoded);
void mapFloatItem(std::string name, double) override
void streamEnd() override
void mapMapItem(std::string name) override
std::string charToHex(char c)
Convert an ASCII char to its hexadecimal value.
void listStringItem(std::string) override
void streamBegin() override
void streamMessage() override
void listListItem() override
void mapStringItem(std::string name, std::string) override
void mapNoneItem(std::string name) override
char hexToChar(const char *hex)
Convert a string with a hexadecimal value (2 characters) to an ASCII char.
void listIntItem(std::int64_t) override
void mapIntItem(std::string name, std::int64_t) override
void listMapItem() override
void mapListItem(std::string name) override
void listFloatItem(double) override
void listNoneItem() override