Clang: Add clang query

Clang query is mechanism to use AST matcher to search for code. Think
about regular expression but in the context of AST. So you get a semantic
search tool for C++.

Change-Id: I72e882c5b53a0c52f352a3664847c4c3e4f6fc2e
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tim Jenssen
2016-11-15 15:38:12 +01:00
parent 96187594b5
commit 9c7ff5199f
99 changed files with 4603 additions and 246 deletions

View File

@@ -23,22 +23,35 @@
**
****************************************************************************/
#ifndef CLANGBACKEND_REFACTORINGSERVER_H
#define CLANGBACKEND_REFACTORINGSERVER_H
#pragma once
#include <refactoringserverinterface.h>
#include <future>
#include <vector>
namespace ClangBackEnd {
class SourceRangesAndDiagnosticsForQueryMessage;
namespace V2 {
class FileContainer;
}
class RefactoringServer : public RefactoringServerInterface
{
using Future = std::future<SourceRangesAndDiagnosticsForQueryMessage>;
public:
RefactoringServer();
void end() override;
void requestSourceLocationsForRenamingMessage(RequestSourceLocationsForRenamingMessage &&message) override;
void requestSourceRangesAndDiagnosticsForQueryMessage(RequestSourceRangesAndDiagnosticsForQueryMessage &&message) override;
private:
void gatherSourceRangesAndDiagnosticsForQueryMessage(std::vector<V2::FileContainer> &&fileContainers,
Utils::SmallString &&query);
std::size_t waitForNewSourceRangesAndDiagnosticsForQueryMessage(std::vector<Future> &futures);
};
} // namespace ClangBackEnd
#endif // CLANGBACKEND_REFACTORINGSERVER_H