1193323Sed//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===// 2193323Sed// 3193323Sed// The LLVM Compiler Infrastructure 4193323Sed// 5193323Sed// This file is distributed under the University of Illinois Open Source 6193323Sed// License. See LICENSE.TXT for details. 7193323Sed// 8193323Sed//===----------------------------------------------------------------------===// 9193323Sed 10193323Sed#ifndef LLVM_CLANG_REWRITE_FRONTENDACTIONS_H 11193323Sed#define LLVM_CLANG_REWRITE_FRONTENDACTIONS_H 12193323Sed 13193323Sed#include "clang/Frontend/FrontendAction.h" 14193323Sed 15193323Sednamespace clang { 16193323Sedclass FixItRewriter; 17263508Sdimclass FixItOptions; 18263508Sdim 19193323Sed//===----------------------------------------------------------------------===// 20193323Sed// AST Consumer Actions 21193323Sed//===----------------------------------------------------------------------===// 22193323Sed 23193323Sedclass HTMLPrintAction : public ASTFrontendAction { 24193323Sedprotected: 25193323Sed virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 26193323Sed StringRef InFile); 27193323Sed}; 28193323Sed 29193323Sedclass FixItAction : public ASTFrontendAction { 30193323Sedprotected: 31193323Sed OwningPtr<FixItRewriter> Rewriter; 32193323Sed OwningPtr<FixItOptions> FixItOpts; 33193323Sed 34193323Sed virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 35193323Sed StringRef InFile); 36193323Sed 37193323Sed virtual bool BeginSourceFileAction(CompilerInstance &CI, 38193323Sed StringRef Filename); 39193323Sed 40193323Sed virtual void EndSourceFileAction(); 41193323Sed 42243830Sdim virtual bool hasASTFileSupport() const { return false; } 43193323Sed 44193323Sedpublic: 45193323Sed FixItAction(); 46193323Sed ~FixItAction(); 47193323Sed}; 48193323Sed 49193323Sed/// \brief Emits changes to temporary files and uses them for the original 50193323Sed/// frontend action. 51193323Sedclass FixItRecompile : public WrapperFrontendAction { 52193323Sedpublic: 53193323Sed FixItRecompile(FrontendAction *WrappedAction) 54193323Sed : WrapperFrontendAction(WrappedAction) {} 55193323Sed 56193323Sedprotected: 57193323Sed virtual bool BeginInvocation(CompilerInstance &CI); 58193323Sed}; 59193323Sed 60193323Sedclass RewriteObjCAction : public ASTFrontendAction { 61193323Sedprotected: 62193323Sed virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 63193323Sed StringRef InFile); 64193323Sed}; 65193323Sed 66193323Sedclass RewriteMacrosAction : public PreprocessorFrontendAction { 67193323Sedprotected: 68243830Sdim void ExecuteAction(); 69193323Sed}; 70193323Sed 71193323Sedclass RewriteTestAction : public PreprocessorFrontendAction { 72193323Sedprotected: 73193323Sed void ExecuteAction(); 74193323Sed}; 75193323Sed 76193323Sedclass RewriteIncludesAction : public PreprocessorFrontendAction { 77193323Sedprotected: 78193323Sed void ExecuteAction(); 79193323Sed}; 80193323Sed 81193323Sed} // end namespace clang 82193323Sed 83193323Sed#endif 84193323Sed