48 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H10#define LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H11 12#include "clang/AST/ASTContext.h"13#include "clang/Tooling/Refactoring/RefactoringResultConsumer.h"14 15namespace clang {16namespace refactor {17 18/// An interface that subclasses the \c RefactoringResultConsumer interface19/// that stores the reference to the TU-specific diagnostics engine.20class ClangRefactorToolConsumerInterface21 : public tooling::RefactoringResultConsumer {22public: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 40private:41 DiagnosticsEngine *Diags = nullptr;42};43 44} // end namespace refactor45} // end namespace clang46 47#endif // LLVM_CLANG_TOOLS_CLANG_REFACTOR_TOOL_REFACTORING_RESULT_CONSUMER_H48