MCPcopy Create free account
hub / github.com/WiVRn/WiVRn / unescape_string

Function unescape_string

dashboard/escape_string.cpp:47–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47std::vector<std::string> unescape_string(const QString & app_string)
48{
49 std::vector<std::string> app;
50 app.emplace_back();
51
52 bool seen_backslash = false;
53 bool seen_single_quote = false;
54 bool seen_double_quote = false;
55 for (auto c: app_string.toStdString())
56 {
57 if (seen_backslash)
58 {
59 app.back() += c;
60 seen_backslash = false;
61 }
62 else if (seen_single_quote)
63 {
64 if (c == '\'')
65 seen_single_quote = false;
66 else if (c == '\\')
67 seen_backslash = true;
68 else
69 app.back() += c;
70 }
71 else if (seen_double_quote)
72 {
73 if (c == '"')
74 seen_double_quote = false;
75 else if (c == '\\')
76 seen_backslash = true;
77 else
78 app.back() += c;
79 }
80 else
81 {
82 switch (c)
83 {
84 case '\\':
85 seen_backslash = true;
86 break;
87 case '\'':
88 seen_single_quote = true;
89 break;
90 case '"':
91 seen_double_quote = true;
92 break;
93 case ' ':
94 if (app.back() != "")
95 app.emplace_back();
96 break;
97 default:
98 app.back() += c;
99 }
100 }
101 }
102
103 if (app.back() == "")
104 app.pop_back();

Callers 1

set_applicationMethod · 0.70

Calls 2

backMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected