diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-07 13:56:59 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-07 13:57:45 +0200 |
commit | 77aa3064783d64cc7d028772a59f13e5f0cd4780 (patch) | |
tree | fb60c890f6d95be999d0e39afd7291a6dc5e25fe /src/libs/cplusplus/FastPreprocessor.cpp | |
parent | 07f05c8ef09af53e2fdbe4a46823396aecab5f39 (diff) | |
download | qt-creator-77aa3064783d64cc7d028772a59f13e5f0cd4780.tar.gz |
Removed the MacroResolver
Unfortunately, the MacroResolver does not scale and we get pretty bad performances when parsing big projects.
Diffstat (limited to 'src/libs/cplusplus/FastPreprocessor.cpp')
-rw-r--r-- | src/libs/cplusplus/FastPreprocessor.cpp | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/src/libs/cplusplus/FastPreprocessor.cpp b/src/libs/cplusplus/FastPreprocessor.cpp index 4a4c10d732..b61f61cee7 100644 --- a/src/libs/cplusplus/FastPreprocessor.cpp +++ b/src/libs/cplusplus/FastPreprocessor.cpp @@ -34,55 +34,6 @@ using namespace CPlusPlus; -FastMacroResolver::FastMacroResolver(TranslationUnit *unit, const Snapshot &snapshot) - : _unit(unit), _snapshot(snapshot) -{ - const QString fileName = QString::fromUtf8(unit->fileName(), unit->fileNameLength()); - - QSet<QString> processed; - updateCache(fileName, &processed); -} - -bool FastMacroResolver::isMacro(TranslationUnit *unit, unsigned tokenIndex) const -{ - if (unit != _unit){ - qWarning() << Q_FUNC_INFO << "unexpected translation unit:" << unit->fileName(); - return false; - } - - const Token &tk = unit->tokenAt(tokenIndex); - if (tk.isNot(T_IDENTIFIER)) - return false; - - Identifier *id = tk.identifier; - const QByteArray macroName = QByteArray::fromRawData(id->chars(), id->size()); - return _cachedMacros.contains(macroName); -} - -void FastMacroResolver::updateCache(const QString &fileName, QSet<QString> *processed) -{ - if (processed->contains(fileName)) - return; - - processed->insert(fileName); - - if (Document::Ptr doc = _snapshot.value(fileName)) { - const QList<Macro> definedMacros = doc->definedMacros(); - - for (int i = definedMacros.size() - 1; i != -1; --i) { - const Macro ¯o = definedMacros.at(i); - - if (macro.isHidden()) - _cachedMacros.remove(macro.name()); - else - _cachedMacros.insert(macro.name()); - } - - foreach (const Document::Include &incl, doc->includes()) - updateCache(incl.fileName(), processed); - } -} - FastPreprocessor::FastPreprocessor(const Snapshot &snapshot) : _snapshot(snapshot), _preproc(this, &_env) |