Skip to content

Commit b5d1112

Browse files
Fix #314 TokenList::lastLine() is slow for long lines (#319)
1 parent 42090bd commit b5d1112

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

simplecpp.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,14 +1362,18 @@ std::string simplecpp::TokenList::lastLine(int maxsize) const
13621362
if (++count > maxsize)
13631363
return "";
13641364
if (!ret.empty())
1365-
ret.insert(0, 1, ' ');
1365+
ret += ' ';
1366+
// add tokens in reverse for performance reasons
13661367
if (tok->str()[0] == '\"')
1367-
ret.insert(0, "%str%");
1368+
ret += "%rts%"; // %str%
13681369
else if (tok->number)
1369-
ret.insert(0, "%num%");
1370-
else
1371-
ret.insert(0, tok->str());
1370+
ret += "%mun%"; // %num%
1371+
else {
1372+
ret += tok->str();
1373+
std::reverse(ret.end() - tok->str().length(), ret.end());
1374+
}
13721375
}
1376+
std::reverse(ret.begin(), ret.end());
13731377
return ret;
13741378
}
13751379

0 commit comments

Comments
 (0)