diff options
Diffstat (limited to 'src/libs/cplusplus/pp-engine.cpp')
-rw-r--r-- | src/libs/cplusplus/pp-engine.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libs/cplusplus/pp-engine.cpp b/src/libs/cplusplus/pp-engine.cpp index 5ce662b998..c2bb068bce 100644 --- a/src/libs/cplusplus/pp-engine.cpp +++ b/src/libs/cplusplus/pp-engine.cpp @@ -545,6 +545,9 @@ Preprocessor::Preprocessor(Client *client, Environment *env) : client(client), env(env), _expand(env), + _skipping(MAX_LEVEL), + _trueTest(MAX_LEVEL), + _dot(_tokens.end()), _result(0), _markGeneratedTokens(false), _expandMacros(true) @@ -1268,7 +1271,7 @@ void Preprocessor::processIf(TokenIterator firstToken, TokenIterator lastToken) tokens.constEnd() - 1, condition); - _true_test[iflevel] = ! result.is_zero (); + _trueTest[iflevel] = ! result.is_zero (); _skipping[iflevel] = result.is_zero (); } } @@ -1282,7 +1285,7 @@ void Preprocessor::processElse(TokenIterator firstToken, TokenIterator lastToken } else if (iflevel > 0 && _skipping[iflevel - 1]) { _skipping[iflevel] = true; } else { - _skipping[iflevel] = _true_test[iflevel]; + _skipping[iflevel] = _trueTest[iflevel]; } } @@ -1296,7 +1299,7 @@ void Preprocessor::processElif(TokenIterator firstToken, TokenIterator lastToken // std::cerr << "*** WARNING: " << __FILE__ << __LINE__ << std::endl; } else if (iflevel == 0 && !skipping()) { // std::cerr << "*** WARNING #else without #if" << std::endl; - } else if (!_true_test[iflevel] && !_skipping[iflevel - 1]) { + } else if (!_trueTest[iflevel] && !_skipping[iflevel - 1]) { const char *first = startOfToken(*tk); const char *last = startOfToken(*lastToken); @@ -1312,7 +1315,7 @@ void Preprocessor::processElif(TokenIterator firstToken, TokenIterator lastToken tokens.constEnd() - 1, condition); - _true_test[iflevel] = ! result.is_zero (); + _trueTest[iflevel] = ! result.is_zero (); _skipping[iflevel] = result.is_zero (); } else { _skipping[iflevel] = true; @@ -1325,7 +1328,7 @@ void Preprocessor::processEndif(TokenIterator, TokenIterator) // std::cerr << "*** WARNING #endif without #if" << std::endl; } else { _skipping[iflevel] = false; - _true_test[iflevel] = false; + _trueTest[iflevel] = false; --iflevel; } @@ -1347,7 +1350,7 @@ void Preprocessor::processIfdef(bool checkUndefined, if (checkUndefined) value = ! value; - _true_test[iflevel] = value; + _trueTest[iflevel] = value; _skipping [iflevel] = ! value; } } @@ -1373,7 +1376,7 @@ void Preprocessor::resetIfLevel () { iflevel = 0; _skipping[iflevel] = false; - _true_test[iflevel] = false; + _trueTest[iflevel] = false; } Preprocessor::PP_DIRECTIVE_TYPE Preprocessor::classifyDirective(const QByteArray &directive) const @@ -1431,7 +1434,7 @@ bool Preprocessor::testIfLevel() { const bool result = !_skipping[iflevel++]; _skipping[iflevel] = _skipping[iflevel - 1]; - _true_test[iflevel] = false; + _trueTest[iflevel] = false; return result; } |