MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / simplifyString

Method simplifyString

lib/tokenize.cpp:9217–9254  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9215}
9216
9217std::string Tokenizer::simplifyString(const std::string &source)
9218{
9219 std::string str = source;
9220
9221 for (std::string::size_type i = 0; i + 1U < str.size(); ++i) {
9222 if (str[i] != '\\')
9223 continue;
9224
9225 int c = 'a'; // char
9226 int sz = 0; // size of stringdata
9227 if (str[i+1] == 'x') {
9228 sz = 2;
9229 while (sz < 4 && std::isxdigit(static_cast<unsigned char>(str[i+sz])))
9230 sz++;
9231 if (sz > 2) {
9232 std::istringstream istr(str.substr(i+2, sz-2));
9233 istr >> std::hex >> c;
9234 }
9235 } else if (MathLib::isOctalDigit(str[i+1])) {
9236 sz = 2;
9237 while (sz < 4 && MathLib::isOctalDigit(str[i+sz]))
9238 sz++;
9239 std::istringstream istr(str.substr(i+1, sz-1));
9240 istr >> std::oct >> c;
9241 str = str.replace(i, sz, std::string(1U, static_cast<char>(c)));
9242 continue;
9243 }
9244
9245 if (sz <= 2)
9246 i++;
9247 else if (i+sz < str.size())
9248 str.replace(i, sz, std::string(1U, static_cast<char>(c)));
9249 else
9250 str.replace(i, str.size() - i - 1U, "a");
9251 }
9252
9253 return str;
9254}
9255
9256void Tokenizer::simplifyFunctionTryCatch()
9257{

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.45
replaceMethod · 0.45

Tested by

no test coverage detected