//===--- ARCMTActions.h - ARC Migrate Tool Frontend Actions -----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H #define LLVM_CLANG_ARCMIGRATE_ARCMTACTIONS_H #include "clang/ARCMigrate/FileRemapper.h" #include "clang/Frontend/FrontendAction.h" #include namespace clang { namespace arcmt { class CheckAction : public WrapperFrontendAction { protected: bool BeginInvocation(CompilerInstance &CI) override; public: CheckAction(std::unique_ptr WrappedAction); }; class ModifyAction : public WrapperFrontendAction { protected: bool BeginInvocation(CompilerInstance &CI) override; public: ModifyAction(std::unique_ptr WrappedAction); }; class MigrateSourceAction : public ASTFrontendAction { FileRemapper Remapper; protected: bool BeginInvocation(CompilerInstance &CI) override; std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; }; class MigrateAction : public WrapperFrontendAction { std::string MigrateDir; std::string PlistOut; bool EmitPremigrationARCErrors; protected: bool BeginInvocation(CompilerInstance &CI) override; public: MigrateAction(std::unique_ptr WrappedAction, StringRef migrateDir, StringRef plistOut, bool emitPremigrationARCErrors); }; /// Migrates to modern ObjC syntax. class ObjCMigrateAction : public WrapperFrontendAction { std::string MigrateDir; unsigned ObjCMigAction; FileRemapper Remapper; CompilerInstance *CompInst; public: ObjCMigrateAction(std::unique_ptr WrappedAction, StringRef migrateDir, unsigned migrateAction); protected: std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; bool BeginInvocation(CompilerInstance &CI) override; }; } } #endif