FrontendActions.h revision 9b414d3e2d0cb84512b55a3275a98490b090162a
19b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//===-- FrontendActions.h - Useful Frontend Actions -------------*- C++ -*-===//
29b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//
39b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//                     The LLVM Compiler Infrastructure
49b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//
59b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar// This file is distributed under the University of Illinois Open Source
69b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar// License. See LICENSE.TXT for details.
79b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//
89b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//===----------------------------------------------------------------------===//
99b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
109b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#ifndef LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
119b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#define LLVM_CLANG_REWRITE_FRONTENDACTIONS_H
129b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
139b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#include "clang/Frontend/FrontendAction.h"
149b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#include <string>
159b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#include <vector>
169b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
179b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarnamespace clang {
189b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass FixItRewriter;
199b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass FixItPathRewriter;
209b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
219b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//===----------------------------------------------------------------------===//
229b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar// AST Consumer Actions
239b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar//===----------------------------------------------------------------------===//
249b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
259b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass HTMLPrintAction : public ASTFrontendAction {
269b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarprotected:
279b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
289b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar                                         llvm::StringRef InFile);
299b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar};
309b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
319b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass FixItAction : public ASTFrontendAction {
329b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarprotected:
339b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  llvm::OwningPtr<FixItRewriter> Rewriter;
349b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  llvm::OwningPtr<FixItPathRewriter> PathRewriter;
359b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
369b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
379b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar                                         llvm::StringRef InFile);
389b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
399b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual bool BeginSourceFileAction(CompilerInstance &CI,
409b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar                                     llvm::StringRef Filename);
419b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
429b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual void EndSourceFileAction();
439b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
449b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual bool hasASTFileSupport() const { return false; }
459b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
469b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarpublic:
479b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  FixItAction();
489b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  ~FixItAction();
499b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar};
509b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
519b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass RewriteObjCAction : public ASTFrontendAction {
529b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarprotected:
539b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
549b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar                                         llvm::StringRef InFile);
559b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar};
569b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
579b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass RewriteMacrosAction : public PreprocessorFrontendAction {
589b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarprotected:
599b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  void ExecuteAction();
609b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar};
619b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
629b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarclass RewriteTestAction : public PreprocessorFrontendAction {
639b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbarprotected:
649b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar  void ExecuteAction();
659b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar};
669b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
679b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar}  // end namespace clang
689b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar
699b414d3e2d0cb84512b55a3275a98490b090162aDaniel Dunbar#endif
70