summaryrefslogtreecommitdiff
path: root/src/tools/clangrefactoringbackend/source/refactoringserver.h
diff options
context:
space:
mode:
authorTim Jenssen <tim.jenssen@qt.io>2016-11-15 15:38:12 +0100
committerTim Jenssen <tim.jenssen@qt.io>2016-11-15 15:30:33 +0000
commit9c7ff5199f77ad668eb48891c3d917a97ca7249a (patch)
tree4b9f062291d1932bda9c590bd169061df4da1f30 /src/tools/clangrefactoringbackend/source/refactoringserver.h
parent96187594b52b70951724637bf93ae7ba6cea8733 (diff)
downloadqt-creator-9c7ff5199f77ad668eb48891c3d917a97ca7249a.tar.gz
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>
Diffstat (limited to 'src/tools/clangrefactoringbackend/source/refactoringserver.h')
-rw-r--r--src/tools/clangrefactoringbackend/source/refactoringserver.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/tools/clangrefactoringbackend/source/refactoringserver.h b/src/tools/clangrefactoringbackend/source/refactoringserver.h
index 883a385a95..47615a9f3f 100644
--- a/src/tools/clangrefactoringbackend/source/refactoringserver.h
+++ b/src/tools/clangrefactoringbackend/source/refactoringserver.h
@@ -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