1224135Sdim//===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===//
2224135Sdim//
3224135Sdim//                     The LLVM Compiler Infrastructure
4224135Sdim//
5224135Sdim// This file is distributed under the University of Illinois Open Source
6224135Sdim// License. See LICENSE.TXT for details.
7224135Sdim//
8224135Sdim//===----------------------------------------------------------------------===//
9224135Sdim
10224135Sdim#ifndef LLVM_CLANG_ARCMIGRATE_ARCMT_ACTION_H
11224135Sdim#define LLVM_CLANG_ARCMIGRATE_ARCMT_ACTION_H
12224135Sdim
13249423Sdim#include "clang/ARCMigrate/FileRemapper.h"
14224135Sdim#include "clang/Frontend/FrontendAction.h"
15224135Sdim#include "llvm/ADT/OwningPtr.h"
16224135Sdim
17224135Sdimnamespace clang {
18224135Sdimnamespace arcmt {
19224135Sdim
20224135Sdimclass CheckAction : public WrapperFrontendAction {
21224135Sdimprotected:
22224135Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
23224135Sdim
24224135Sdimpublic:
25224135Sdim  CheckAction(FrontendAction *WrappedAction);
26224135Sdim};
27224135Sdim
28224135Sdimclass ModifyAction : public WrapperFrontendAction {
29224135Sdimprotected:
30224135Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
31224135Sdim
32224135Sdimpublic:
33224135Sdim  ModifyAction(FrontendAction *WrappedAction);
34224135Sdim};
35224135Sdim
36234353Sdimclass MigrateSourceAction : public ASTFrontendAction {
37234353Sdim  FileRemapper Remapper;
38234353Sdimprotected:
39234353Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
40234353Sdim  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
41234353Sdim                                         StringRef InFile);
42234353Sdim};
43234353Sdim
44224135Sdimclass MigrateAction : public WrapperFrontendAction {
45224135Sdim  std::string MigrateDir;
46226633Sdim  std::string PlistOut;
47226633Sdim  bool EmitPremigrationARCErros;
48224135Sdimprotected:
49224135Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
50224135Sdim
51224135Sdimpublic:
52226633Sdim  MigrateAction(FrontendAction *WrappedAction, StringRef migrateDir,
53226633Sdim                StringRef plistOut,
54226633Sdim                bool emitPremigrationARCErrors);
55224135Sdim};
56224135Sdim
57234353Sdim/// \brief Migrates to modern ObjC syntax.
58234353Sdimclass ObjCMigrateAction : public WrapperFrontendAction {
59234353Sdim  std::string MigrateDir;
60263508Sdim  unsigned    ObjCMigAction;
61234353Sdim  FileRemapper Remapper;
62234353Sdim  CompilerInstance *CompInst;
63234353Sdimpublic:
64234353Sdim  ObjCMigrateAction(FrontendAction *WrappedAction, StringRef migrateDir,
65263508Sdim                    unsigned migrateAction);
66234353Sdim
67234353Sdimprotected:
68234353Sdim  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,StringRef InFile);
69234353Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
70234353Sdim};
71234353Sdim
72224135Sdim}
73224135Sdim}
74224135Sdim
75224135Sdim#endif
76