inline parseLine()

this should be marginally faster and it allows turning a few members
into locals.
This commit is contained in:
Oswald Buddenhagen
2009-07-16 18:11:09 +02:00
parent 67e30ed8c9
commit 81baf03476

View File

@@ -139,7 +139,6 @@ public:
ProBlock *currentBlock();
void updateItem();
void parseLine(const QString &line);
void insertVariable(const ushort **pCur, const ushort *end);
void insertOperator(const char op);
void insertComment(const QString &comment);
@@ -154,9 +153,6 @@ public:
QString m_proitem;
QString m_pendingComment;
ushort *m_proitemPtr;
bool m_contNextLine;
bool m_inQuote;
int m_parens;
enum StrState { NotStarted, Started, PutSpace };
@@ -287,29 +283,17 @@ bool ProFileEvaluator::Private::read(ProFile *pro, QTextStream *ts)
// Parser state
m_block = 0;
m_commentItem = 0;
m_inQuote = false;
m_parens = 0;
m_contNextLine = false;
m_lineNo = 1;
m_blockstack.clear();
m_blockstack.push(pro);
int parens = 0;
bool inQuote = false;
bool escaped = false;
while (!ts->atEnd()) {
QString line = ts->readLine();
parseLine(line);
++m_lineNo;
}
return true;
}
void ProFileEvaluator::Private::parseLine(const QString &line)
{
const ushort *cur = (const ushort *)line.unicode(),
*end = cur + line.length();
int parens = m_parens;
bool inQuote = m_inQuote;
bool escaped = false;
m_proitem.reserve(line.length());
m_proitemPtr = (ushort *)m_proitem.unicode();
nextItem:
@@ -387,17 +371,17 @@ void ProFileEvaluator::Private::parseLine(const QString &line)
}
}
m_proitemPtr = ptr;
m_contNextLine = escaped;
done:
m_inQuote = inQuote;
m_parens = parens;
if (m_contNextLine) {
if (escaped) {
--m_proitemPtr;
updateItem();
} else {
updateItem();
finalizeBlock();
}
++m_lineNo;
}
return true;
}
void ProFileEvaluator::Private::finalizeBlock()