| 175 | /// Escape characters not allowed in XML |
| 176 | template <typename T> |
| 177 | std::string EscapeForXML(T const & in) |
| 178 | { |
| 179 | std::string result; |
| 180 | result.reserve(in.size()); |
| 181 | |
| 182 | for (char c : in) |
| 183 | { |
| 184 | switch (c) |
| 185 | { |
| 186 | case '&': result.append("&"); break; |
| 187 | case '<': result.append("<"); break; |
| 188 | case '>': result.append(">"); break; |
| 189 | case '"': result.append("""); break; |
| 190 | case '\'': result.append("'"); break; |
| 191 | default: result.append(1, c); break; |
| 192 | } |
| 193 | } |
| 194 | |
| 195 | return result; |
| 196 | } |
| 197 | |
| 198 | inline std::string DebugPrint(UniString const & s) |
| 199 | { |
no test coverage detected