OSDN Git Service

Gen. highlighter: Improve performance (delimiters)
authorLeandro Melo <leandro.melo@nokia.com>
Tue, 7 Dec 2010 08:26:39 +0000 (09:26 +0100)
committerLeandro Melo <leandro.melo@nokia.com>
Tue, 7 Dec 2010 09:17:26 +0000 (10:17 +0100)
Make lookup for a delimiter a bit faster.

src/plugins/texteditor/generichighlighter/highlightdefinition.cpp
src/plugins/texteditor/generichighlighter/highlightdefinition.h

index c06b49d..8777b6f 100644 (file)
@@ -40,11 +40,14 @@ using namespace TextEditor;
 using namespace Internal;
 
 HighlightDefinition::HighlightDefinition() :
-    m_delimiters(QLatin1String(".():!+,-<=>%&/;?[]^{|}~\\*, \t")),
     m_singleLineCommentAfterWhiteSpaces(false),
     m_keywordCaseSensitivity(Qt::CaseSensitive),
     m_indentationBasedFolding(false)
-{}
+{
+    QString s(QLatin1String(".():!+,-<=>%&/;?[]^{|}~\\*, \t"));
+    foreach (const QChar &c, s)
+        m_delimiters.insert(c);
+}
 
 HighlightDefinition::~HighlightDefinition()
 {}
@@ -147,7 +150,7 @@ void HighlightDefinition::addDelimiters(const QString &characters)
 {
     for (int i = 0; i < characters.length(); ++i) {
         if (!m_delimiters.contains(characters.at(i)))
-            m_delimiters.append(characters.at(i));
+            m_delimiters.insert(characters.at(i));
     }
 }
 
index ca7afd9..586025e 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <QtCore/QString>
 #include <QtCore/QHash>
+#include <QtCore/QSet>
 #include <QtCore/QSharedPointer>
 
 namespace TextEditor {
@@ -102,8 +103,6 @@ private:
 
     QString m_initialContext;
 
-    QString m_delimiters;
-
     QString m_singleLineComment;
     bool m_singleLineCommentAfterWhiteSpaces;
 
@@ -114,6 +113,8 @@ private:
     Qt::CaseSensitivity m_keywordCaseSensitivity;
 
     bool m_indentationBasedFolding;
+
+    QSet<QChar> m_delimiters;
 };
 
 } // namespace Internal