summaryrefslogtreecommitdiff
path: root/src/libs/cplusplus/pp-engine.cpp
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-03-03 16:19:03 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-03-03 16:19:03 +0100
commit656d70fa7492e91e28056c69ee1a141de672313f (patch)
tree61fdf85888212345bab98849299d6e89fdbb9630 /src/libs/cplusplus/pp-engine.cpp
parent6670cf1fc4ad0f5cb9f6a887ce8240b92203099c (diff)
downloadqt-creator-656d70fa7492e91e28056c69ee1a141de672313f.tar.gz
Introduced expandFunctionLikeMacro().
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r--src/libs/cplusplus/pp-engine.cpp45
1 files changed, 24 insertions, 21 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp
index 43e07619dd..350e610800 100644
--- a/src/libs/cplusplus/pp-engine.cpp
+++ b/src/libs/cplusplus/pp-engine.cpp
@@ -694,8 +694,6 @@ void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &sour
_result->append("\\\n");
else if (_dot->whitespace) {
- TokenIterator begin = _tokens.constBegin();
-
const unsigned endOfPreviousToken = (_dot - 1)->end();
const unsigned beginOfToken = _dot->begin();
@@ -814,26 +812,10 @@ void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &sour
if (_dot->isNot(T_RPAREN)) {
// ### warning expected T_RPAREN
-
- } else {
- const char *beginOfText = startOfToken(*identifierToken);
- const char *endOfText = endOfToken(*_dot);
- ++_dot; // skip T_RPAREN
-
- if (client) {
- const QByteArray text =
- QByteArray::fromRawData(beginOfText,
- endOfText - beginOfText);
-
- client->startExpandingMacro(identifierToken->offset,
- *m, text);
- }
-
- expand(beginOfText, endOfText, _result);
-
- if (client)
- client->stopExpandingMacro(_dot->offset, *m);
}
+
+ else
+ expandFunctionLikeMacro(identifierToken, m);
}
}
}
@@ -846,6 +828,27 @@ void Preprocessor::preprocess(const QByteArray &fileName, const QByteArray &sour
_result = previousResult;
}
+void Preprocessor::expandFunctionLikeMacro(TokenIterator identifierToken, Macro *m)
+{
+ const char *beginOfText = startOfToken(*identifierToken);
+ const char *endOfText = endOfToken(*_dot);
+ ++_dot; // skip T_RPAREN
+
+ if (client) {
+ const QByteArray text =
+ QByteArray::fromRawData(beginOfText,
+ endOfText - beginOfText);
+
+ client->startExpandingMacro(identifierToken->offset,
+ *m, text);
+ }
+
+ expand(beginOfText, endOfText, _result);
+
+ if (client)
+ client->stopExpandingMacro(_dot->offset, *m);
+}
+
const char *Preprocessor::startOfToken(const Token &token) const
{ return _source.constBegin() + token.begin(); }