clang  9.0.0svn
FrontendActions.h
Go to the documentation of this file.
1 //===-- FrontendActions.h - Useful Frontend Actions -------------*- 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_REWRITE_FRONTEND_FRONTENDACTIONS_H
10 #define LLVM_CLANG_REWRITE_FRONTEND_FRONTENDACTIONS_H
11 
13 #include "llvm/Support/raw_ostream.h"
14 
15 namespace clang {
16 class FixItRewriter;
17 class FixItOptions;
18 
19 //===----------------------------------------------------------------------===//
20 // AST Consumer Actions
21 //===----------------------------------------------------------------------===//
22 
24 protected:
25  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
26  StringRef InFile) override;
27 };
28 
30 protected:
31  std::unique_ptr<FixItRewriter> Rewriter;
32  std::unique_ptr<FixItOptions> FixItOpts;
33 
34  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
35  StringRef InFile) override;
36 
37  bool BeginSourceFileAction(CompilerInstance &CI) override;
38 
39  void EndSourceFileAction() override;
40 
41  bool hasASTFileSupport() const override { return false; }
42 
43 public:
44  FixItAction();
45  ~FixItAction() override;
46 };
47 
48 /// Emits changes to temporary files and uses them for the original
49 /// frontend action.
51 public:
52  FixItRecompile(std::unique_ptr<FrontendAction> WrappedAction)
53  : WrapperFrontendAction(std::move(WrappedAction)) {}
54 
55 protected:
56  bool BeginInvocation(CompilerInstance &CI) override;
57 };
58 
60 protected:
61  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
62  StringRef InFile) override;
63 };
64 
66 protected:
67  void ExecuteAction() override;
68 };
69 
71 protected:
72  void ExecuteAction() override;
73 };
74 
76  std::shared_ptr<raw_ostream> OutputStream;
78 protected:
79  bool BeginSourceFileAction(CompilerInstance &CI) override;
80  void ExecuteAction() override;
81 };
82 
83 } // end namespace clang
84 
85 #endif
std::unique_ptr< FixItOptions > FixItOpts
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
void ExecuteAction() override
Implement the ExecuteAction interface by running Sema on the already-initialized AST consumer...
FixItRecompile(std::unique_ptr< FrontendAction > WrappedAction)
bool hasASTFileSupport() const override
Does this action support use with AST files?
Definition: Format.h:2261
std::unique_ptr< FixItRewriter > Rewriter
virtual bool BeginInvocation(CompilerInstance &CI)
Callback before starting processing a single input, giving the opportunity to modify the CompilerInvo...
virtual void EndSourceFileAction()
Callback at the end of processing a single input.
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
Emits changes to temporary files and uses them for the original frontend action.
Abstract base class to use for AST consumer-based frontend actions.
Abstract base class to use for preprocessor-based frontend actions.
Dataflow Directional Tag Classes.
A frontend action which simply wraps some other runtime-specified frontend action.
virtual bool BeginSourceFileAction(CompilerInstance &CI)
Callback at the start of processing a single input.
Defines the clang::FrontendAction interface and various convenience abstract classes (clang::ASTFront...