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