Home | History | Annotate | Line # | Download | only in ARCMigrate
      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