MCPcopy Create free account
hub / github.com/WasmVM/WasmVM / parse_string_to_bytes

Method parse_string_to_bytes

src/lib/parse/ParseContext.cpp:24–53  ·  view source on GitHub ↗

Convert a raw quoted string token (including surrounding quotes) to bytes.

Source from the content-addressed store, hash-verified

22
23// Convert a raw quoted string token (including surrounding quotes) to bytes.
24std::string ParseContext::parse_string_to_bytes(const std::string& raw) {
25 // strip surrounding quotes
26 std::string str = raw.substr(1, raw.size() - 2);
27 std::string datastr;
28 for (auto it = str.begin(); it != str.end(); it = std::next(it)) {
29 if (*it != '\\') { datastr += *it; continue; }
30 it = std::next(it);
31 switch (*it) {
32 case 't': datastr += '\t'; break;
33 case 'n': datastr += '\n'; break;
34 case 'r': datastr += '\r'; break;
35 case '"': datastr += '"'; break;
36 case '\'': datastr += '\''; break;
37 case '\\': datastr += '\\'; break;
38 case 'u': {
39 it = std::next(it, 2); // skip 'u{'
40 std::string valstr;
41 while (*it != '}') { valstr += *it; it = std::next(it); }
42 u32_t val = std::stoul(removeUnderscore(valstr), nullptr, 16);
43 if (val == 0) { datastr += '\0'; }
44 else { while (val) { datastr += (char)(val & 0xff); val >>= 8; } }
45 } break;
46 default: {
47 datastr += (char)std::stoi(std::string() + *it + *std::next(it), nullptr, 16);
48 it = std::next(it);
49 } break;
50 }
51 }
52 return datastr;
53}
54
55// ── Constructor / entry point ────────────────────────────────────────────────
56

Callers

nothing calls this directly

Calls 1

removeUnderscoreFunction · 0.85

Tested by

no test coverage detected