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