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