clang  6.0.0svn
FrontendActions.h
Go to the documentation of this file.
1 //===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_CLANG_REWRITE_FRONTEND_FRONTENDACTIONS_H
11 #define LLVM_CLANG_REWRITE_FRONTEND_FRONTENDACTIONS_H
12 
14 #include "llvm/Support/raw_ostream.h"
15 
16 namespace clang {
17 class FixItRewriter;
18 class FixItOptions;
19 
20 //===----------------------------------------------------------------------===//
21 // AST Consumer Actions
22 //===----------------------------------------------------------------------===//
23 
25 protected:
26  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
27  StringRef InFile) override;
28 };
29 
31 protected:
32  std::unique_ptr<FixItRewriter> Rewriter;
33  std::unique_ptr<FixItOptions> FixItOpts;
34 
35  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
36  StringRef InFile) override;
37 
38  bool BeginSourceFileAction(CompilerInstance &CI) override;
39 
40  void EndSourceFileAction() override;
41 
42  bool hasASTFileSupport() const override { return false; }
43 
44 public:
45  FixItAction();
46  ~FixItAction() override;
47 };
48 
49 /// \brief Emits changes to temporary files and uses them for the original
50 /// frontend action.
52 public:
53  FixItRecompile(std::unique_ptr<FrontendAction> WrappedAction)
54  : WrapperFrontendAction(std::move(WrappedAction)) {}
55 
56 protected:
57  bool BeginInvocation(CompilerInstance &CI) override;
58 };
59 
61 protected:
62  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
63  StringRef InFile) override;
64 };
65 
67 protected:
68  void ExecuteAction() override;
69 };
70 
72 protected:
73  void ExecuteAction() override;
74 };
75 
77  std::shared_ptr<raw_ostream> OutputStream;
79 protected:
80  bool BeginSourceFileAction(CompilerInstance &CI) override;
81  void ExecuteAction() override;
82 };
83 
84 } // end namespace clang
85 
86 #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:1900
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...