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
13252723Sdim#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
36235633Sdimclass MigrateSourceAction : public ASTFrontendAction {
37235633Sdim  FileRemapper Remapper;
38235633Sdimprotected:
39235633Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
40235633Sdim  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
41235633Sdim                                         StringRef InFile);
42235633Sdim};
43235633Sdim
44224135Sdimclass MigrateAction : public WrapperFrontendAction {
45224135Sdim  std::string MigrateDir;
46226890Sdim  std::string PlistOut;
47226890Sdim  bool EmitPremigrationARCErros;
48224135Sdimprotected:
49224135Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
50224135Sdim
51224135Sdimpublic:
52226890Sdim  MigrateAction(FrontendAction *WrappedAction, StringRef migrateDir,
53226890Sdim                StringRef plistOut,
54226890Sdim                bool emitPremigrationARCErrors);
55224135Sdim};
56224135Sdim
57235633Sdim/// \brief Migrates to modern ObjC syntax.
58235633Sdimclass ObjCMigrateAction : public WrapperFrontendAction {
59235633Sdim  std::string MigrateDir;
60263509Sdim  unsigned    ObjCMigAction;
61235633Sdim  FileRemapper Remapper;
62235633Sdim  CompilerInstance *CompInst;
63235633Sdimpublic:
64235633Sdim  ObjCMigrateAction(FrontendAction *WrappedAction, StringRef migrateDir,
65263509Sdim                    unsigned migrateAction);
66235633Sdim
67235633Sdimprotected:
68235633Sdim  virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI,StringRef InFile);
69235633Sdim  virtual bool BeginInvocation(CompilerInstance &CI);
70235633Sdim};
71235633Sdim
72224135Sdim}
73224135Sdim}
74224135Sdim
75224135Sdim#endif
76