119102Sse//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
219102Sse//
319102Sse//                     The LLVM Compiler Infrastructure
419102Sse//
519102Sse// This file is distributed under the University of Illinois Open Source
619102Sse// License. See LICENSE.TXT for details.
719102Sse//
819102Sse//===----------------------------------------------------------------------===//
919102Sse
1019102Sse#ifndef LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
1119102Sse#define LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
1219102Sse
1319102Sse#include "clang/Frontend/FrontendAction.h"
1419102Sse
1519102Ssenamespace clang {
1619102Sseclass FixItRewriter;
1719102Sseclass FixItOptions;
1819102Sse
1919102Sse//===----------------------------------------------------------------------===//
2019102Sse// AST Consumer Actions
2119102Sse//===----------------------------------------------------------------------===//
2219102Sse
2319102Sseclass HTMLPrintAction : public ASTFrontendAction {
2419102Sseprotected:
2519102Sse  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
2619102Sse                                         StringRef InFile);
2719102Sse};
2819102Sse
2919102Sseclass FixItAction : public ASTFrontendAction {
3030172Scharnierprotected:
3130172Scharnier  OwningPtr<FixItRewriter> Rewriter;
3250479Speter  OwningPtr<FixItOptions> FixItOpts;
3330172Scharnier
3430172Scharnier  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
3519102Sse                                         StringRef InFile);
3619102Sse
3719102Sse  virtual bool BeginSourceFileAction(CompilerInstance &CI,
3819102Sse                                     StringRef Filename);
3919102Sse
4019102Sse  virtual void EndSourceFileAction();
4119102Sse
4219102Sse  virtual bool hasASTFileSupport() const { return false; }
4319102Sse
4419102Ssepublic:
4519102Sse  FixItAction();
4619102Sse  ~FixItAction();
4719102Sse};
4819102Sse
4919102Sse/// \brief Emits changes to temporary files and uses them for the original
5019102Sse/// frontend action.
5119102Sseclass FixItRecompile : public WrapperFrontendAction {
5221935Ssepublic:
5319102Sse  FixItRecompile(FrontendAction *WrappedAction)
5450225Speter    : WrapperFrontendAction(WrappedAction) {}
5519102Sse
5619102Sseprotected:
5730172Scharnier  virtual bool BeginInvocation(CompilerInstance &CI);
5830172Scharnier};
5930172Scharnier
6030172Scharnierclass RewriteObjCAction : public ASTFrontendAction {
6130172Scharnierprotected:
6230172Scharnier  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
6330172Scharnier                                         StringRef InFile);
6419817Sse};
6519102Sse
6619102Sseclass RewriteMacrosAction : public PreprocessorFrontendAction {
6719102Sseprotected:
6819102Sse  void ExecuteAction();
6919102Sse};
7019102Sse
7121935Sseclass RewriteTestAction : public PreprocessorFrontendAction {
7219102Sseprotected:
7319102Sse  void ExecuteAction();
7421935Sse};
7519102Sse
7624428Simpclass RewriteIncludesAction : public PreprocessorFrontendAction {
7719102Sseprotected:
7821935Sse  void ExecuteAction();
7921935Sse};
8021935Sse
8121935Sse}  // end namespace clang
8219102Sse
8319102Sse#endif
8419102Sse