diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-07-22 15:07:21 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-07-24 08:51:12 +0000 |
commit | dbf4c6290f90f81ecda6f5f956f9f859222496ac (patch) | |
tree | 2729d5b82306019cd063bb81e72e7f440c875747 /src/tools/qdoc/codemarker.cpp | |
parent | 5fd9fe02ff14438a2d0c93789be138a58583dbe8 (diff) |
Optimize CppCodeMarker::addMarkUp further
This avoids a couple of more string/memory
allocations, giving another 5% speed gain
for qdoc --prepare.
Change-Id: I455f615bb4388d883dca5a8cd31bf50629db23e0
Reviewed-by: Martin Smith <martin.smith@digia.com>
Diffstat (limited to 'src/tools/qdoc/codemarker.cpp')
-rw-r--r-- | src/tools/qdoc/codemarker.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/tools/qdoc/codemarker.cpp b/src/tools/qdoc/codemarker.cpp index e00ebef2db..458799fc27 100644 --- a/src/tools/qdoc/codemarker.cpp +++ b/src/tools/qdoc/codemarker.cpp @@ -194,22 +194,20 @@ QString CodeMarker::protect(const QString& str) return marked; } -QString CodeMarker::protect(const QStringRef& str) +void CodeMarker::appendProtectedString(QString *output, const QStringRef &str) { int n = str.length(); - QString marked; - marked.reserve(n * 2 + 30); + output->reserve(output->size() + n * 2 + 30); const QChar *data = str.constData(); for (int i = 0; i != n; ++i) { switch (data[i].unicode()) { - case '&': marked += samp; break; - case '<': marked += slt; break; - case '>': marked += sgt; break; - case '"': marked += squot; break; - default : marked += data[i]; + case '&': *output += samp; break; + case '<': *output += slt; break; + case '>': *output += sgt; break; + case '"': *output += squot; break; + default : *output += data[i]; } } - return marked; } QString CodeMarker::typified(const QString &string) |