• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
11 #define LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
12 
13 #include "clang/ARCMigrate/FileRemapper.h"
14 #include "clang/Frontend/FrontendAction.h"
15 #include <memory>
16 
17 namespace clang {
18 namespace arcmt {
19 
20 class CheckAction : public WrapperFrontendAction {
21 protected:
22   bool BeginInvocation(CompilerInstance &CI) override;
23 
24 public:
25   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
26 };
27 
28 class ModifyAction : public WrapperFrontendAction {
29 protected:
30   bool BeginInvocation(CompilerInstance &CI) override;
31 
32 public:
33   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
34 };
35 
36 class MigrateSourceAction : public ASTFrontendAction {
37   FileRemapper Remapper;
38 protected:
39   bool BeginInvocation(CompilerInstance &CI) override;
40   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
41                                                  StringRef InFile) override;
42 };
43 
44 class MigrateAction : public WrapperFrontendAction {
45   std::string MigrateDir;
46   std::string PlistOut;
47   bool EmitPremigrationARCErros;
48 protected:
49   bool BeginInvocation(CompilerInstance &CI) override;
50 
51 public:
52   MigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
53                 StringRef migrateDir,
54                 StringRef plistOut,
55                 bool emitPremigrationARCErrors);
56 };
57 
58 /// \brief Migrates to modern ObjC syntax.
59 class ObjCMigrateAction : public WrapperFrontendAction {
60   std::string MigrateDir;
61   unsigned    ObjCMigAction;
62   FileRemapper Remapper;
63   CompilerInstance *CompInst;
64 public:
65   ObjCMigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
66                     StringRef migrateDir, unsigned migrateAction);
67 
68 protected:
69   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
70                                                  StringRef InFile) override;
71   bool BeginInvocation(CompilerInstance &CI) override;
72 };
73 
74 }
75 }
76 
77 #endif
78