Clang: Extend clang query

It's a first step to introduce clang query.

Change-Id: I4d001a8883f56066765ce6bc561fa3f49611c0a4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tim Jenssen
2016-11-23 13:13:38 +01:00
parent 52fc4a4ebd
commit 7f757884c5
70 changed files with 1921 additions and 653 deletions

View File

@@ -48,8 +48,9 @@ void RefactoringClient::sourceLocationsForRenamingMessage(
void RefactoringClient::sourceRangesAndDiagnosticsForQueryMessage(
ClangBackEnd::SourceRangesAndDiagnosticsForQueryMessage &&message)
{
++resultCounter_;
addSearchResults(message.sourceRanges());
sendSearchIsFinished();
setResultCounterAndSendSearchIsFinishedIfFinished();
}
void RefactoringClient::setLocalRenamingCallback(
@@ -63,14 +64,14 @@ void RefactoringClient::setRefactoringEngine(RefactoringEngine *refactoringEngin
this->refactoringEngine = refactoringEngine;
}
void RefactoringClient::setSearchHandle(SearchHandleInterface *searchHandleInterface)
void RefactoringClient::setSearchHandle(SearchHandle *searchHandle)
{
this->searchHandleInterface = searchHandleInterface;
this->searchHandle_ = searchHandle;
}
SearchHandleInterface *RefactoringClient::searchHandle() const
SearchHandle *RefactoringClient::searchHandle() const
{
return searchHandleInterface;
return searchHandle_;
}
bool RefactoringClient::hasValidLocalRenamingCallback() const
@@ -78,6 +79,23 @@ bool RefactoringClient::hasValidLocalRenamingCallback() const
return bool(localRenamingCallback);
}
void RefactoringClient::setExpectedResultCount(uint count)
{
expectedResultCount_ = count;
resultCounter_ = 0;
searchHandle_->setExpectedResultCount(count);
}
uint RefactoringClient::expectedResultCount() const
{
return expectedResultCount_;
}
uint RefactoringClient::resultCounter() const
{
return resultCounter_;
}
namespace {
Utils::SmallString concatenateFilePath(const ClangBackEnd::FilePath &filePath)
@@ -122,16 +140,19 @@ void RefactoringClient::addSearchResults(const ClangBackEnd::SourceRangesContain
void RefactoringClient::addSearchResult(const ClangBackEnd::SourceRangeWithTextContainer &sourceRangeWithText,
std::unordered_map<uint, QString> &filePaths)
{
searchHandleInterface->addResult(filePaths[sourceRangeWithText.fileHash()],
int(sourceRangeWithText.start().line()),
sourceRangeWithText.text(),
int(sourceRangeWithText.start().column()),
int(sourceRangeWithText.end().column()));
searchHandle_->addResult(filePaths[sourceRangeWithText.fileHash()],
sourceRangeWithText.text(),
{{int(sourceRangeWithText.start().line()),
int(sourceRangeWithText.start().column())},
{int(sourceRangeWithText.end().line()),
int(sourceRangeWithText.end().column())}});
}
void RefactoringClient::sendSearchIsFinished()
void RefactoringClient::setResultCounterAndSendSearchIsFinishedIfFinished()
{
searchHandleInterface->finishSearch();
searchHandle_->setResultCounter(resultCounter_);
if (resultCounter_ == expectedResultCount_)
searchHandle_->finishSearch();
}
} // namespace ClangRefactoring