diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-09-24 16:51:40 +0200 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-09-24 16:51:40 +0200 |
commit | 91a50a74f2dac603df8c80dc9295a4ae8b7aba54 (patch) | |
tree | 15028f2350d9993ac77386c4e3ca64d8e14b0e3c /src | |
parent | e7b96347f144b33d0afbb914e47c8fbffb1ee5a4 (diff) | |
download | qt-creator-91a50a74f2dac603df8c80dc9295a4ae8b7aba54.tar.gz |
Changed the signature of findReferences()
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.cpp | 21 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfindreferences.h | 9 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 6 |
3 files changed, 20 insertions, 16 deletions
diff --git a/src/plugins/cpptools/cppfindreferences.cpp b/src/plugins/cpptools/cppfindreferences.cpp index 4dc797704a..b0097b2066 100644 --- a/src/plugins/cpptools/cppfindreferences.cpp +++ b/src/plugins/cpptools/cppfindreferences.cpp @@ -211,20 +211,20 @@ CppFindReferences::~CppFindReferences() } static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future, - QString word, - QString fileName, - Snapshot snapshot) + Snapshot snapshot, + Symbol *symbol) { QTime tm; tm.start(); + + const QString fileName = QString::fromUtf8(symbol->fileName(), symbol->fileNameLength()); + QStringList files(fileName); files += snapshot.dependsOn(fileName); qDebug() << "done in:" << tm.elapsed() << "number of files to parse:" << files.size(); future.setProgressRange(0, files.size()); - const QByteArray literal = word.toLatin1(); - tm.start(); for (int i = 0; i < files.size(); ++i) { const QString &fn = files.at(i); @@ -238,8 +238,11 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future, Document::Ptr doc = snapshot.documentFromSource(preprocessedCode, fn); doc->tokenize(); + Identifier *symbolId = symbol->identifier(); + Q_ASSERT(symbolId != 0); + Control *control = doc->control(); - if (Identifier *id = control->findIdentifier(literal.constData(), literal.size())) { + if (Identifier *id = control->findIdentifier(symbolId->chars(), symbolId->size())) { doc->check(); TranslationUnit *unit = doc->translationUnit(); Process process(future, doc, snapshot); @@ -249,17 +252,15 @@ static void find_helper(QFutureInterface<Core::Utils::FileSearchResult> &future, future.setProgressValue(files.size()); } -void CppFindReferences::findAll(const QString &fileName, const QString &text) +void CppFindReferences::findAll(const Snapshot &snapshot, Symbol *symbol) { _resultWindow->clearContents(); _resultWindow->popup(true); Core::ProgressManager *progressManager = Core::ICore::instance()->progressManager(); - const Snapshot snapshot = _modelManager->snapshot(); - QFuture<Core::Utils::FileSearchResult> result = - QtConcurrent::run(&find_helper, text, fileName, snapshot); + QtConcurrent::run(&find_helper, snapshot, symbol); m_watcher.setFuture(result); diff --git a/src/plugins/cpptools/cppfindreferences.h b/src/plugins/cpptools/cppfindreferences.h index 1ecca46081..65f48d3619 100644 --- a/src/plugins/cpptools/cppfindreferences.h +++ b/src/plugins/cpptools/cppfindreferences.h @@ -37,9 +37,14 @@ #include <utils/filesearch.h> namespace Find { -class SearchResultWindow; + class SearchResultWindow; } // end of namespace Find +namespace CPlusPlus { + class Snapshot; + class Symbol; +} // end of namespace CPlusPlus + namespace CppTools { namespace Internal { @@ -57,7 +62,7 @@ Q_SIGNALS: void changed(); public: - void findAll(const QString &fileName, const QString &text); + void findAll(const CPlusPlus::Snapshot &snapshot, CPlusPlus::Symbol *symbol); private Q_SLOTS: void displayResult(int); diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 6c2ffd35dd..5d76824ff9 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -720,10 +720,8 @@ void CppModelManager::removeEditorSupport(AbstractEditorSupport *editorSupport) void CppModelManager::findReferences(CPlusPlus::Symbol *symbol) { - if (Identifier *id = symbol->identifier()) { - QString word = QString::fromLatin1(id->chars(), id->size()); - m_findReferences->findAll(symbol->fileName(), word); - } + if (symbol->identifier()) + m_findReferences->findAll(snapshot(), symbol); } QMap<QString, QString> CppModelManager::buildWorkingCopyList() |