From ca151d07fa6d97039fed95dcabe206fce41f5769 Mon Sep 17 00:00:00 2001
From: hjk <hjk121@nokiamail.com>
Date: Thu, 6 Nov 2014 09:35:29 +0100
Subject: [PATCH] CPlusPlus: Use QVector<Token> instead of QList

Better suited to avoid the indirection (sizeof(Token) > sizeof(void *))

Change-Id: Ia5f42781e720ef6aa8161f8f81ae8ddd8e58c837
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
---
 src/libs/cplusplus/BackwardsScanner.cpp                |  4 ++--
 src/libs/cplusplus/BackwardsScanner.h                  |  2 +-
 src/libs/cplusplus/SimpleLexer.cpp                     | 10 +++++-----
 src/libs/cplusplus/SimpleLexer.h                       |  9 +++++----
 src/plugins/clangcodemodel/clangcompletion.cpp         |  6 +++---
 src/plugins/cppeditor/cppautocompleter.cpp             |  6 +++---
 src/plugins/cppeditor/cppfollowsymbolundercursor.cpp   |  5 ++---
 src/plugins/cppeditor/cpphighlighter.cpp               |  2 +-
 .../cpptools/builtineditordocumentprocessor.cpp        |  2 +-
 src/plugins/cpptools/cppcodeformatter.cpp              |  2 +-
 src/plugins/cpptools/cppcodeformatter.h                |  6 +++---
 src/plugins/cpptools/cppcompletionassist.cpp           |  6 +++---
 src/plugins/cpptools/doxygengenerator.cpp              |  2 +-
 13 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/src/libs/cplusplus/BackwardsScanner.cpp b/src/libs/cplusplus/BackwardsScanner.cpp
index ddf1e4c5983..67807ff1d25 100644
--- a/src/libs/cplusplus/BackwardsScanner.cpp
+++ b/src/libs/cplusplus/BackwardsScanner.cpp
@@ -59,7 +59,7 @@ BackwardsScanner::BackwardsScanner(const QTextCursor &cursor,
     if (! suffix.isEmpty())
         _text += suffix;
 
-    _tokens.append(_tokenize(_text, previousBlockState(_block)));
+    _tokens += _tokenize(_text, previousBlockState(_block));
 
     _startToken = _tokens.size();
 }
@@ -85,7 +85,7 @@ const Token &BackwardsScanner::fetchToken(int tokenIndex)
             _text.prepend(QLatin1Char('\n'));
             _text.prepend(blockText);
 
-            QList<Token> adaptedTokens;
+            Tokens adaptedTokens;
             for (int i = 0; i < _tokens.size(); ++i) {
                 Token t = _tokens.at(i);
                 t.utf16charOffset += blockText.length() + 1;
diff --git a/src/libs/cplusplus/BackwardsScanner.h b/src/libs/cplusplus/BackwardsScanner.h
index 9ddc26d3edd..38c5e19e203 100644
--- a/src/libs/cplusplus/BackwardsScanner.h
+++ b/src/libs/cplusplus/BackwardsScanner.h
@@ -77,7 +77,7 @@ private:
     const Token &fetchToken(int tokenIndex);
 
 private:
-    QList<Token> _tokens;
+    Tokens _tokens;
     int _offset;
     int _blocksTokenized;
     QTextBlock _block;
diff --git a/src/libs/cplusplus/SimpleLexer.cpp b/src/libs/cplusplus/SimpleLexer.cpp
index cec749eba08..db76bb4c093 100644
--- a/src/libs/cplusplus/SimpleLexer.cpp
+++ b/src/libs/cplusplus/SimpleLexer.cpp
@@ -62,9 +62,9 @@ bool SimpleLexer::endedJoined() const
     return _endedJoined;
 }
 
-QList<Token> SimpleLexer::operator()(const QString &text, int state)
+Tokens SimpleLexer::operator()(const QString &text, int state)
 {
-    QList<Token> tokens;
+    Tokens tokens;
 
     const QByteArray bytes = text.toUtf8();
     const char *firstChar = bytes.constData();
@@ -113,7 +113,7 @@ QList<Token> SimpleLexer::operator()(const QString &text, int state)
     return tokens;
 }
 
-int SimpleLexer::tokenAt(const QList<Token> &tokens, unsigned utf16charsOffset)
+int SimpleLexer::tokenAt(const Tokens &tokens, unsigned utf16charsOffset)
 {
     for (int index = tokens.size() - 1; index >= 0; --index) {
         const Token &tk = tokens.at(index);
@@ -138,12 +138,12 @@ Token SimpleLexer::tokenAt(const QString &text,
     features.cxx11Enabled = qtMocRunEnabled;
     SimpleLexer tokenize;
     tokenize.setLanguageFeatures(features);
-    const QList<Token> tokens = tokenize(text, state);
+    const QVector<Token> tokens = tokenize(text, state);
     const int tokenIdx = tokenAt(tokens, utf16charsOffset);
     return (tokenIdx == -1) ? Token() : tokens.at(tokenIdx);
 }
 
-int SimpleLexer::tokenBefore(const QList<Token> &tokens, unsigned utf16charsOffset)
+int SimpleLexer::tokenBefore(const Tokens &tokens, unsigned utf16charsOffset)
 {
     for (int index = tokens.size() - 1; index >= 0; --index) {
         const Token &tk = tokens.at(index);
diff --git a/src/libs/cplusplus/SimpleLexer.h b/src/libs/cplusplus/SimpleLexer.h
index 8692e7975ee..d4cba997e02 100644
--- a/src/libs/cplusplus/SimpleLexer.h
+++ b/src/libs/cplusplus/SimpleLexer.h
@@ -34,12 +34,13 @@
 #include <cplusplus/Token.h>
 
 #include <QString>
-#include <QList>
+#include <QVector>
 
 namespace CPlusPlus {
 
 class SimpleLexer;
 class Token;
+typedef QVector<Token> Tokens;
 
 class CPLUSPLUS_EXPORT SimpleLexer
 {
@@ -55,18 +56,18 @@ public:
 
     bool endedJoined() const;
 
-    QList<Token> operator()(const QString &text, int state = 0);
+    Tokens operator()(const QString &text, int state = 0);
 
     int state() const
     { return _lastState; }
 
-    static int tokenAt(const QList<Token> &tokens, unsigned utf16charsOffset);
+    static int tokenAt(const Tokens &tokens, unsigned utf16charsOffset);
     static Token tokenAt(const QString &text,
                          unsigned utf16charsOffset,
                          int state,
                          bool qtMocRunEnabled = false);
 
-    static int tokenBefore(const QList<Token> &tokens, unsigned utf16charsOffset);
+    static int tokenBefore(const Tokens &tokens, unsigned utf16charsOffset);
 
 private:
     int _lastState;
diff --git a/src/plugins/clangcodemodel/clangcompletion.cpp b/src/plugins/clangcodemodel/clangcompletion.cpp
index d6019fb6876..3f37f2747c3 100644
--- a/src/plugins/clangcodemodel/clangcompletion.cpp
+++ b/src/plugins/clangcodemodel/clangcompletion.cpp
@@ -321,7 +321,7 @@ int ClangFunctionHintModel::activeArgument(const QString &prefix) const
     int argnr = 0;
     int parcount = 0;
     SimpleLexer tokenize;
-    QList<CPlusPlus::Token> tokens = tokenize(prefix);
+    Tokens tokens = tokenize(prefix);
     for (int i = 0; i < tokens.count(); ++i) {
         const CPlusPlus::Token &tk = tokens.at(i);
         if (tk.is(T_LPAREN))
@@ -747,7 +747,7 @@ int ClangCompletionAssistProcessor::startOfOperator(int pos,
         lf.objCEnabled = true;
         tokenize.setLanguageFeatures(lf);
         tokenize.setSkipComments(false);
-        const QList<CPlusPlus::Token> &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
+        const Tokens &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
         const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1)); // get the token at the left of the cursor
         const CPlusPlus::Token tk = (tokenIdx == -1) ? CPlusPlus::Token() : tokens.at(tokenIdx);
 
@@ -858,7 +858,7 @@ bool ClangCompletionAssistProcessor::accepts() const
                     lf.objCEnabled = true;
                     tokenize.setLanguageFeatures(lf);
                     tokenize.setSkipComments(false);
-                    const QList<CPlusPlus::Token> &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
+                    const Tokens &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
                     const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1));
                     const CPlusPlus::Token tk = (tokenIdx == -1) ? CPlusPlus::Token() : tokens.at(tokenIdx);
 
diff --git a/src/plugins/cppeditor/cppautocompleter.cpp b/src/plugins/cppeditor/cppautocompleter.cpp
index f666a4ea8ee..84dddf735ae 100644
--- a/src/plugins/cppeditor/cppautocompleter.cpp
+++ b/src/plugins/cppeditor/cppautocompleter.cpp
@@ -40,7 +40,7 @@ using namespace CppEditor;
 using namespace Internal;
 using namespace CPlusPlus;
 
-static const Token tokenAtPosition(const QList<Token> &tokens, const unsigned pos)
+static const Token tokenAtPosition(const Tokens &tokens, const unsigned pos)
 {
     for (int i = tokens.size() - 1; i >= 0; --i) {
         const Token tk = tokens.at(i);
@@ -63,7 +63,7 @@ static bool isInCommentHelper(const QTextCursor &cursor, Token *retToken = 0)
     tokenize.setLanguageFeatures(features);
 
     const int prevState = BackwardsScanner::previousBlockState(cursor.block()) & 0xFF;
-    const QList<Token> tokens = tokenize(cursor.block().text(), prevState);
+    const Tokens tokens = tokenize(cursor.block().text(), prevState);
 
     const unsigned pos = cursor.selectionEnd() - cursor.block().position();
 
@@ -98,7 +98,7 @@ static bool isInStringHelper(const QTextCursor &cursor, Token *retToken = 0)
     tokenize.setLanguageFeatures(features);
 
     const int prevState = BackwardsScanner::previousBlockState(cursor.block()) & 0xFF;
-    const QList<Token> tokens = tokenize(cursor.block().text(), prevState);
+    const Tokens tokens = tokenize(cursor.block().text(), prevState);
 
     const unsigned pos = cursor.selectionEnd() - cursor.block().position();
 
diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
index 93278a44f63..0f52de09fa3 100644
--- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
+++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp
@@ -408,7 +408,7 @@ FollowSymbolUnderCursor::~FollowSymbolUnderCursor()
     delete m_virtualFunctionAssistProvider;
 }
 
-static int skipMatchingParentheses(const QList<Token> &tokens, int idx, int initialDepth)
+static int skipMatchingParentheses(const Tokens &tokens, int idx, int initialDepth)
 {
     int j = idx;
     int depth = initialDepth;
@@ -476,8 +476,7 @@ TextEditorWidget::Link FollowSymbolUnderCursor::findLink(const QTextCursor &curs
     SimpleLexer tokenize;
     tokenize.setLanguageFeatures(features);
     const QString blockText = cursor.block().text();
-    const QList<Token> tokens = tokenize(blockText,
-                                         BackwardsScanner::previousBlockState(cursor.block()));
+    const Tokens tokens = tokenize(blockText, BackwardsScanner::previousBlockState(cursor.block()));
 
     bool recognizedQtMethod = false;
 
diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp
index 94263e2b646..f7af5443459 100644
--- a/src/plugins/cppeditor/cpphighlighter.cpp
+++ b/src/plugins/cppeditor/cpphighlighter.cpp
@@ -85,7 +85,7 @@ void CppHighlighter::highlightBlock(const QString &text)
     tokenize.setLanguageFeatures(features);
 
     int initialLexerState = lexerState;
-    const QList<Token> tokens = tokenize(text, initialLexerState);
+    const Tokens tokens = tokenize(text, initialLexerState);
     lexerState = tokenize.state(); // refresh lexer state
 
     initialLexerState &= ~0x80; // discard newline expected bit
diff --git a/src/plugins/cpptools/builtineditordocumentprocessor.cpp b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
index d1e23101a99..3a3ee3eebb6 100644
--- a/src/plugins/cpptools/builtineditordocumentprocessor.cpp
+++ b/src/plugins/cpptools/builtineditordocumentprocessor.cpp
@@ -95,7 +95,7 @@ CppTools::CheckSymbols *createHighlighter(const CPlusPlus::Document::Ptr &doc,
         SimpleLexer tokenize;
         tokenize.setLanguageFeatures(features);
 
-        const QList<Token> tokens = tokenize(name);
+        const Tokens tokens = tokenize(name);
         if (tokens.length() && (tokens.at(0).isKeyword() || tokens.at(0).isObjCAtKeyword()))
             continue;
 
diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp
index 856089ad678..355d59424a2 100644
--- a/src/plugins/cpptools/cppcodeformatter.cpp
+++ b/src/plugins/cpptools/cppcodeformatter.cpp
@@ -1449,7 +1449,7 @@ void QtStyleCodeFormatter::onEnter(int newState, int *indentDepth, int *savedInd
     *savedPaddingDepth = qMax(0, *savedPaddingDepth);
 }
 
-void QtStyleCodeFormatter::adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth, int *paddingDepth) const
+void QtStyleCodeFormatter::adjustIndent(const Tokens &tokens, int lexerState, int *indentDepth, int *paddingDepth) const
 {
     State topState = state();
     State previousState = state(1);
diff --git a/src/plugins/cpptools/cppcodeformatter.h b/src/plugins/cpptools/cppcodeformatter.h
index d2f5799df53..15ddc02a945 100644
--- a/src/plugins/cpptools/cppcodeformatter.h
+++ b/src/plugins/cpptools/cppcodeformatter.h
@@ -74,7 +74,7 @@ public:
 
 protected:
     virtual void onEnter(int newState, int *indentDepth, int *savedIndentDepth, int *paddingDepth, int *savedPaddingDepth) const = 0;
-    virtual void adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth, int *paddingDepth) const = 0;
+    virtual void adjustIndent(const CPlusPlus::Tokens &tokens, int lexerState, int *indentDepth, int *paddingDepth) const = 0;
 
     class State;
     class BlockData
@@ -251,7 +251,7 @@ private:
     QStack<State> m_currentState;
     QStack<State> m_newStates;
 
-    QList<CPlusPlus::Token> m_tokens;
+    CPlusPlus::Tokens m_tokens;
     QString m_currentLine;
     CPlusPlus::Token m_currentToken;
     int m_tokenIndex;
@@ -276,7 +276,7 @@ public:
 
 protected:
     virtual void onEnter(int newState, int *indentDepth, int *savedIndentDepth, int *paddingDepth, int *savedPaddingDepth) const;
-    virtual void adjustIndent(const QList<CPlusPlus::Token> &tokens, int lexerState, int *indentDepth, int *paddingDepth) const;
+    virtual void adjustIndent(const CPlusPlus::Tokens &tokens, int lexerState, int *indentDepth, int *paddingDepth) const;
 
     virtual void saveBlockData(QTextBlock *block, const BlockData &data) const;
     virtual bool loadBlockData(const QTextBlock &block, BlockData *data) const;
diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index cf17e742e56..44743977d49 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -387,7 +387,7 @@ int CppFunctionHintModel::activeArgument(const QString &prefix) const
     int argnr = 0;
     int parcount = 0;
     SimpleLexer tokenize;
-    QList<Token> tokens = tokenize(prefix);
+    Tokens tokens = tokenize(prefix);
     for (int i = 0; i < tokens.count(); ++i) {
         const Token &tk = tokens.at(i);
         if (tk.is(T_LPAREN))
@@ -686,7 +686,7 @@ bool CppCompletionAssistProcessor::accepts() const
                     tokenize.setLanguageFeatures(features);
                     tokenize.setSkipComments(false);
 
-                    const QList<Token> &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
+                    const Tokens &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
                     const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1));
                     const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx);
 
@@ -789,7 +789,7 @@ int CppCompletionAssistProcessor::startOfOperator(int pos,
         SimpleLexer tokenize;
         tokenize.setLanguageFeatures(m_languageFeatures);
         tokenize.setSkipComments(false);
-        const QList<Token> &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
+        const Tokens &tokens = tokenize(tc.block().text(), BackwardsScanner::previousBlockState(tc.block()));
         const int tokenIdx = SimpleLexer::tokenBefore(tokens, qMax(0, tc.positionInBlock() - 1)); // get the token at the left of the cursor
         const Token tk = (tokenIdx == -1) ? Token() : tokens.at(tokenIdx);
 
diff --git a/src/plugins/cpptools/doxygengenerator.cpp b/src/plugins/cpptools/doxygengenerator.cpp
index c8a908d01e6..508a5d45618 100644
--- a/src/plugins/cpptools/doxygengenerator.cpp
+++ b/src/plugins/cpptools/doxygengenerator.cpp
@@ -80,7 +80,7 @@ QString DoxygenGenerator::generate(QTextCursor cursor)
     QTextBlock block = cursor.block();
     while (block.isValid()) {
         const QString &text = block.text();
-        const QList<Token> &tks = lexer(text);
+        const Tokens &tks = lexer(text);
         foreach (const Token &tk, tks) {
             if (tk.is(T_SEMICOLON) || tk.is(T_LBRACE)) {
                 // No need to continue beyond this, we might already have something meaningful.
-- 
GitLab