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>
This commit is contained in:
hjk
2014-11-06 09:35:29 +01:00
parent cb1d040c32
commit ca151d07fa
13 changed files with 31 additions and 31 deletions

View File

@@ -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;

View File

@@ -77,7 +77,7 @@ private:
const Token &fetchToken(int tokenIndex);
private:
QList<Token> _tokens;
Tokens _tokens;
int _offset;
int _blocksTokenized;
QTextBlock _block;

View File

@@ -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);

View File

@@ -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;