summaryrefslogtreecommitdiffstats
path: root/src/tools/moc
diff options
context:
space:
mode:
authorMilian Wolff <milian.wolff@kdab.com>2015-05-30 23:12:44 +0200
committerMilian Wolff <milian.wolff@kdab.com>2015-07-10 12:42:59 +0000
commita576ef4c3d06d54eab8e4e7fbb89b7a00df6eba6 (patch)
tree5f02b54557ffba492725c09ffc5b6cb1d2342c9b /src/tools/moc
parent58f0b6b5a84f93e74ff99bb9481c9142bda32270 (diff)
Optimize moc: Implement fast operator== for Symbols.
Previously, this allocated temporary QByteArrays in the frequent QVector<Symbols>::indexOf calls (macro.arguments.indexOf(s)). Now, the we reuse the fast SubArray::operator== implementation. Change-Id: Idbc6e3cf5fd353e8e36d51ba88d31e4c3bfd121d Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/tools/moc')
-rw-r--r--src/tools/moc/symbols.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/tools/moc/symbols.h b/src/tools/moc/symbols.h
index 13f9ada606..0368a75793 100644
--- a/src/tools/moc/symbols.h
+++ b/src/tools/moc/symbols.h
@@ -113,8 +113,11 @@ struct Symbol
Token token;
inline QByteArray lexem() const { return lex.mid(from, len); }
inline QByteArray unquotedLexem() const { return lex.mid(from+1, len-2); }
- inline operator QByteArray() const { return lex.mid(from, len); }
inline operator SubArray() const { return SubArray(lex, from, len); }
+ bool operator==(const Symbol& o) const
+ {
+ return SubArray(lex, from, len) == SubArray(o.lex, o.from, o.len);
+ }
QByteArray lex;
int from, len;