//===--- 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 <memory>
 
 
 
namespace clang {
 
namespace arcmt {
 
 
 
class CheckAction : public WrapperFrontendAction {
 
protected:
 
  bool BeginInvocation(CompilerInstance &CI) override;
 
 
 
public:
 
  CheckAction(std::unique_ptr<FrontendAction> WrappedAction);
 
};
 
 
 
class ModifyAction : public WrapperFrontendAction {
 
protected:
 
  bool BeginInvocation(CompilerInstance &CI) override;
 
 
 
public:
 
  ModifyAction(std::unique_ptr<FrontendAction> WrappedAction);
 
};
 
 
 
class MigrateSourceAction : public ASTFrontendAction {
 
  FileRemapper Remapper;
 
protected:
 
  bool BeginInvocation(CompilerInstance &CI) override;
 
  std::unique_ptr<ASTConsumer> 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<FrontendAction> 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<FrontendAction> WrappedAction,
 
                    StringRef migrateDir, unsigned migrateAction);
 
 
 
protected:
 
  std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI,
 
                                                 StringRef InFile) override;
 
  bool BeginInvocation(CompilerInstance &CI) override;
 
};
 
 
 
}
 
}
 
 
 
#endif