• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===--- ToolRefactoringResultConsumer.h - ----------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H
10 #define LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H
11 
12 #include "clang/AST/ASTContext.h"
13 #include "clang/Tooling/Refactoring/RefactoringResultConsumer.h"
14 
15 namespace clang {
16 namespace refactor {
17 
18 /// An interface that subclasses the \c RefactoringResultConsumer interface
19 /// that stores the reference to the TU-specific diagnostics engine.
20 class ClangRefactorToolConsumerInterface
21     : public tooling::RefactoringResultConsumer {
22 public:
23   /// Called when a TU is entered.
beginTU(ASTContext & Context)24   void beginTU(ASTContext &Context) {
25     assert(!Diags && "Diags has been set");
26     Diags = &Context.getDiagnostics();
27   }
28 
29   /// Called when the tool is done with a TU.
endTU()30   void endTU() {
31     assert(Diags && "Diags unset");
32     Diags = nullptr;
33   }
34 
getDiags()35   DiagnosticsEngine &getDiags() const {
36     assert(Diags && "no diags");
37     return *Diags;
38   }
39 
40 private:
41   DiagnosticsEngine *Diags = nullptr;
42 };
43 
44 } // end namespace refactor
45 } // end namespace clang
46 
47 #endif // LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H
48