clang  5.0.0
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< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
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.
FixItRecompile(std::unique_ptr< FrontendAction > WrappedAction)
bool BeginSourceFileAction(CompilerInstance &CI) override
Callback at the start of processing a single input.
std::unique_ptr< ASTConsumer > CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override
Create the AST consumer object for this action, if supported.
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
bool hasASTFileSupport() const override
Does this action support use with AST files?
bool BeginSourceFileAction(CompilerInstance &CI) override
Callback at the start of processing a single input.
std::unique_ptr< FixItRewriter > Rewriter
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
void EndSourceFileAction() override
Callback at the end of processing a single input.
CompilerInstance - Helper class for managing a single instance of the Clang compiler.
bool BeginInvocation(CompilerInstance &CI) override
Callback before starting processing a single input, giving the opportunity to modify the CompilerInvo...
Emits changes to temporary files and uses them for the original frontend action.
Abstract base class to use for AST consumer-based frontend actions.
void ExecuteAction() override
Callback to run the program action, using the initialized compiler instance.
Abstract base class to use for preprocessor-based frontend actions.
A frontend action which simply wraps some other runtime-specified frontend action.
Defines the clang::FrontendAction interface and various convenience abstract classes (clang::ASTFront...