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