1 //===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
10 #define LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H
11 
12 #include "clang/ARCMigrate/FileRemapper.h"
13 #include "clang/Frontend/FrontendAction.h"
14 #include <memory>
15 
16 namespace clang {
17 namespace arcmt {
18 
19 class CheckAction : public WrapperFrontendAction {
20 protected:
21   bool BeginInvocation(CompilerInstance &CI) override;
22 
23 public:
24   CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
25 };
26 
27 class ModifyAction : public WrapperFrontendAction {
28 protected:
29   bool BeginInvocation(CompilerInstance &CI) override;
30 
31 public:
32   ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
33 };
34 
35 class MigrateSourceAction : public ASTFrontendAction {
36   FileRemapper Remapper;
37 protected:
38   bool BeginInvocation(CompilerInstance &CI) override;
39   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
40                                                  StringRef InFile) override;
41 };
42 
43 class MigrateAction : public WrapperFrontendAction {
44   std::string MigrateDir;
45   std::string PlistOut;
46   bool EmitPremigrationARCErros;
47 protected:
48   bool BeginInvocation(CompilerInstance &CI) override;
49 
50 public:
51   MigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
52                 StringRef migrateDir,
53                 StringRef plistOut,
54                 bool emitPremigrationARCErrors);
55 };
56 
57 /// Migrates to modern ObjC syntax.
58 class ObjCMigrateAction : public WrapperFrontendAction {
59   std::string MigrateDir;
60   unsigned    ObjCMigAction;
61   FileRemapper Remapper;
62   CompilerInstance *CompInst;
63 public:
64   ObjCMigrateAction(std::unique_ptr<FrontendAction> WrappedAction,
65                     StringRef migrateDir, unsigned migrateAction);
66 
67 protected:
68   std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
69                                                  StringRef InFile) override;
70   bool BeginInvocation(CompilerInstance &CI) override;
71 };
72 
73 }
74 }
75 
76 #endif
77