Home | History | Annotate | Line # | Download | only in clang-refactor
      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.
     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.
     30   void endTU() {
     31     assert(Diags && "Diags unset");
     32     Diags = nullptr;
     33   }
     34 
     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