Home | History | Annotate | Download | only in ARCMigrate
      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_ARCMT_ACTION_H
     11 #define LLVM_CLANG_ARCMIGRATE_ARCMT_ACTION_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(FrontendAction *WrappedAction);
     26 };
     27 
     28 class ModifyAction : public WrapperFrontendAction {
     29 protected:
     30   bool BeginInvocation(CompilerInstance &CI) override;
     31 
     32 public:
     33   ModifyAction(FrontendAction *WrappedAction);
     34 };
     35 
     36 class MigrateSourceAction : public ASTFrontendAction {
     37   FileRemapper Remapper;
     38 protected:
     39   bool BeginInvocation(CompilerInstance &CI) override;
     40   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(FrontendAction *WrappedAction, StringRef migrateDir,
     53                 StringRef plistOut,
     54                 bool emitPremigrationARCErrors);
     55 };
     56 
     57 /// \brief 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(FrontendAction *WrappedAction, StringRef migrateDir,
     65                     unsigned migrateAction);
     66 
     67 protected:
     68   ASTConsumer *CreateASTConsumer(CompilerInstance &CI,
     69                                  StringRef InFile) override;
     70   bool BeginInvocation(CompilerInstance &CI) override;
     71 };
     72 
     73 }
     74 }
     75 
     76 #endif
     77