diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-17 12:34:29 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-03-17 14:20:17 +0100 |
commit | 1cc5e1fe01d83ead385ec14411e744b6cd145c85 (patch) | |
tree | 2756facd84b1919e59b70335634518beee1f09f0 /src/plugins/cpptools/cppfindreferences.cpp | |
parent | 6ed0cd5d32febfce07ae43d6d67624a46ce2fa82 (diff) | |
download | qt-creator-1cc5e1fe01d83ead385ec14411e744b6cd145c85.tar.gz |
Put the include depenency table into a separate class, and cache it when possible.
Diffstat (limited to 'src/plugins/cpptools/cppfindreferences.cpp')
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index e714fa28ab..3a034b0a85 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -178,6 +178,7 @@ static void find_helper(QFutureInterface<Usage> &future, const CppTools::CppModelManagerInterface::WorkingCopy workingCopy, Snapshot snapshot, Document::Ptr symbolDocument, + DependencyTable dependencyTable, Symbol *symbol) { QTime tm; @@ -200,7 +201,7 @@ static void find_helper(QFutureInterface<Usage> &future, files.append(doc->fileName()); } } else { - files += snapshot.filesDependingOn(sourceFile); + files += dependencyTable.filesDependingOn(sourceFile); } files.removeDuplicates(); //qDebug() << "done in:" << tm.elapsed() << "number of files to parse:" << files.size(); @@ -215,6 +216,15 @@ static void find_helper(QFutureInterface<Usage> &future, future.setProgressValue(files.size()); } +void CppFindReferences::updateDependencyTable(const Snapshot &snapshot) +{ + if (!m_deps.isValidFor(snapshot)) { + DependencyTable newDeps; + newDeps.build(snapshot); + m_deps = newDeps; + } +} + void CppFindReferences::findUsages(Document::Ptr symbolDocument, Symbol *symbol) { Find::SearchResult *search = _resultWindow->startNewSearch(Find::SearchResultWindow::SearchOnly); @@ -255,9 +265,11 @@ void CppFindReferences::findAll_helper(Document::Ptr symbolDocument, Symbol *sym Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); + updateDependencyTable(snapshot); + QFuture<Usage> result; - result = QtConcurrent::run(&find_helper, workingCopy, snapshot, symbolDocument, symbol); + result = QtConcurrent::run(&find_helper, workingCopy, snapshot, symbolDocument, m_deps, symbol); m_watcher.setFuture(result); Core::FutureProgress *progress = progressManager->addTask(result, tr("Searching..."), @@ -375,11 +387,12 @@ public: static void findMacroUses_helper(QFutureInterface<Usage> &future, const CppTools::CppModelManagerInterface::WorkingCopy workingCopy, const Snapshot snapshot, + DependencyTable dependencyTable, const Macro macro) { const QString& sourceFile = macro.fileName(); QStringList files(sourceFile); - files += snapshot.filesDependingOn(sourceFile); + files += dependencyTable.filesDependingOn(sourceFile); files.removeDuplicates(); future.setProgressRange(0, files.size()); @@ -411,8 +424,10 @@ void CppFindReferences::findMacroUses(const Macro ¯o) source.mid(macro.offset(), macro.length()), 0, macro.length()); } + updateDependencyTable(snapshot); + QFuture<Usage> result; - result = QtConcurrent::run(&findMacroUses_helper, workingCopy, snapshot, macro); + result = QtConcurrent::run(&findMacroUses_helper, workingCopy, snapshot, m_deps, macro); m_watcher.setFuture(result); Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); |