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