1243791Sdim//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===// 2243791Sdim// 3243791Sdim// The LLVM Compiler Infrastructure 4243791Sdim// 5243791Sdim// This file is distributed under the University of Illinois Open Source 6243791Sdim// License. See LICENSE.TXT for details. 7243791Sdim// 8243791Sdim//===----------------------------------------------------------------------===// 9243791Sdim 10243791Sdim#ifndef LLVM_CLANG_REWRITE_FRONTENDACTIONS_H 11243791Sdim#define LLVM_CLANG_REWRITE_FRONTENDACTIONS_H 12243791Sdim 13243791Sdim#include "clang/Frontend/FrontendAction.h" 14243791Sdim 15243791Sdimnamespace clang { 16243791Sdimclass FixItRewriter; 17243791Sdimclass FixItOptions; 18243791Sdim 19243791Sdim//===----------------------------------------------------------------------===// 20243791Sdim// AST Consumer Actions 21243791Sdim//===----------------------------------------------------------------------===// 22243791Sdim 23243791Sdimclass HTMLPrintAction : public ASTFrontendAction { 24243791Sdimprotected: 25243791Sdim virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 26243791Sdim StringRef InFile); 27243791Sdim}; 28243791Sdim 29243791Sdimclass FixItAction : public ASTFrontendAction { 30243791Sdimprotected: 31243791Sdim OwningPtr<FixItRewriter> Rewriter; 32243791Sdim OwningPtr<FixItOptions> FixItOpts; 33243791Sdim 34243791Sdim virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 35243791Sdim StringRef InFile); 36243791Sdim 37243791Sdim virtual bool BeginSourceFileAction(CompilerInstance &CI, 38243791Sdim StringRef Filename); 39243791Sdim 40243791Sdim virtual void EndSourceFileAction(); 41243791Sdim 42243791Sdim virtual bool hasASTFileSupport() const { return false; } 43243791Sdim 44243791Sdimpublic: 45243791Sdim FixItAction(); 46243791Sdim ~FixItAction(); 47243791Sdim}; 48243791Sdim 49243791Sdim/// \brief Emits changes to temporary files and uses them for the original 50243791Sdim/// frontend action. 51243791Sdimclass FixItRecompile : public WrapperFrontendAction { 52243791Sdimpublic: 53243791Sdim FixItRecompile(FrontendAction *WrappedAction) 54243791Sdim : WrapperFrontendAction(WrappedAction) {} 55243791Sdim 56243791Sdimprotected: 57243791Sdim virtual bool BeginInvocation(CompilerInstance &CI); 58243791Sdim}; 59243791Sdim 60243791Sdimclass RewriteObjCAction : public ASTFrontendAction { 61243791Sdimprotected: 62243791Sdim virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, 63243791Sdim StringRef InFile); 64243791Sdim}; 65243791Sdim 66243791Sdimclass RewriteMacrosAction : public PreprocessorFrontendAction { 67243791Sdimprotected: 68243791Sdim void ExecuteAction(); 69243791Sdim}; 70243791Sdim 71243791Sdimclass RewriteTestAction : public PreprocessorFrontendAction { 72243791Sdimprotected: 73243791Sdim void ExecuteAction(); 74243791Sdim}; 75243791Sdim 76243791Sdimclass RewriteIncludesAction : public PreprocessorFrontendAction { 77243791Sdimprotected: 78243791Sdim void ExecuteAction(); 79243791Sdim}; 80243791Sdim 81243791Sdim} // end namespace clang 82243791Sdim 83243791Sdim#endif 84