/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Interface Definitions                                                      *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


/// Get the array of argument attribute dictionaries. The method should
/// return an array attribute containing only dictionary attributes equal in
/// number to the number of arguments. Alternatively, the method can
/// return null to indicate that there are no argument attributes.
::mlir::ArrayAttr mlir::ArgAndResultAttrsOpInterface::getArgAttrsAttr() {
      return getImpl()->getArgAttrsAttr(getImpl(), getOperation());
  }

/// Get the array of result attribute dictionaries. The method should return
/// an array attribute containing only dictionary attributes equal in number
/// to the number of results. Alternatively, the method can return
/// null to indicate that there are no result attributes.
::mlir::ArrayAttr mlir::ArgAndResultAttrsOpInterface::getResAttrsAttr() {
      return getImpl()->getResAttrsAttr(getImpl(), getOperation());
  }

/// Set the array of argument attribute dictionaries.
void mlir::ArgAndResultAttrsOpInterface::setArgAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->setArgAttrsAttr(getImpl(), getOperation(), attrs);
  }

/// Set the array of result attribute dictionaries.
void mlir::ArgAndResultAttrsOpInterface::setResAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->setResAttrsAttr(getImpl(), getOperation(), attrs);
  }

/// Remove the array of argument attribute dictionaries. This is the same as
/// setting all argument attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::ArgAndResultAttrsOpInterface::removeArgAttrsAttr() {
      return getImpl()->removeArgAttrsAttr(getImpl(), getOperation());
  }

/// Remove the array of result attribute dictionaries. This is the same as
/// setting all result attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::ArgAndResultAttrsOpInterface::removeResAttrsAttr() {
      return getImpl()->removeResAttrsAttr(getImpl(), getOperation());
  }

/// Returns the callee of this call-like operation. A `callee` is either a
/// reference to a symbol, via SymbolRefAttr, or a reference to a defined
/// SSA value. If the reference is an SSA value, the SSA value corresponds
/// to a region of a lambda-like operation.
::mlir::CallInterfaceCallable mlir::CallOpInterface::getCallableForCallee() {
      return getImpl()->getCallableForCallee(getImpl(), getOperation());
  }

/// Sets the callee of this call-like operation. A `callee` is either a
/// reference to a symbol, via SymbolRefAttr, or a reference to a defined
/// SSA value. The type of the `callee` is expected to be the same as the
/// return type of `getCallableForCallee`, e.g., `callee` should be
/// SymbolRefAttr for `func.call`.
void mlir::CallOpInterface::setCalleeFromCallable(::mlir::CallInterfaceCallable callee) {
      return getImpl()->setCalleeFromCallable(getImpl(), getOperation(), callee);
  }

/// Returns the operands within this call that are used as arguments to the
/// callee.
::mlir::Operation::operand_range mlir::CallOpInterface::getArgOperands() {
      return getImpl()->getArgOperands(getImpl(), getOperation());
  }

/// Returns the operands within this call that are used as arguments to the
/// callee as a mutable range.
::mlir::MutableOperandRange mlir::CallOpInterface::getArgOperandsMutable() {
      return getImpl()->getArgOperandsMutable(getImpl(), getOperation());
  }

/// Resolve the callable operation for given callee to a
/// CallableOpInterface, or nullptr if a valid callable was not resolved.
/// `symbolTable` parameter allow for using a cached symbol table for symbol
/// lookups instead of performing an O(N) scan.
::mlir::Operation *mlir::CallOpInterface::resolveCallableInTable(::mlir::SymbolTableCollection * symbolTable) {
      return getImpl()->resolveCallableInTable(getImpl(), getOperation(), symbolTable);
  }

/// Resolve the callable operation for given callee to a
/// CallableOpInterface, or nullptr if a valid callable was not resolved.
::mlir::Operation *mlir::CallOpInterface::resolveCallable() {
      return getImpl()->resolveCallable(getImpl(), getOperation());
  }

/// Get the array of argument attribute dictionaries. The method should
/// return an array attribute containing only dictionary attributes equal in
/// number to the number of arguments. Alternatively, the method can
/// return null to indicate that there are no argument attributes.
::mlir::ArrayAttr mlir::CallOpInterface::getArgAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->getArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Get the array of result attribute dictionaries. The method should return
/// an array attribute containing only dictionary attributes equal in number
/// to the number of results. Alternatively, the method can return
/// null to indicate that there are no result attributes.
::mlir::ArrayAttr mlir::CallOpInterface::getResAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->getResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Set the array of argument attribute dictionaries.
void mlir::CallOpInterface::setArgAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->implArgAndResultAttrsOpInterface->setArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation(), attrs);
  }

/// Set the array of result attribute dictionaries.
void mlir::CallOpInterface::setResAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->implArgAndResultAttrsOpInterface->setResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation(), attrs);
  }

/// Remove the array of argument attribute dictionaries. This is the same as
/// setting all argument attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::CallOpInterface::removeArgAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->removeArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Remove the array of result attribute dictionaries. This is the same as
/// setting all result attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::CallOpInterface::removeResAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->removeResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Returns the region on the current operation that is callable. This may
/// return null in the case of an external callable object, e.g. an external
/// function.
::mlir::Region *mlir::CallableOpInterface::getCallableRegion() {
      return getImpl()->getCallableRegion(getImpl(), getOperation());
  }

/// Returns the callable's argument types based exclusively on the type (to
/// allow for this method may be called on function declarations).
::llvm::ArrayRef<::mlir::Type> mlir::CallableOpInterface::getArgumentTypes() {
      return getImpl()->getArgumentTypes(getImpl(), getOperation());
  }

/// Returns the callable's result types based exclusively on the type (to
/// allow for this method may be called on function declarations).
::llvm::ArrayRef<::mlir::Type> mlir::CallableOpInterface::getResultTypes() {
      return getImpl()->getResultTypes(getImpl(), getOperation());
  }

/// Get the array of argument attribute dictionaries. The method should
/// return an array attribute containing only dictionary attributes equal in
/// number to the number of arguments. Alternatively, the method can
/// return null to indicate that there are no argument attributes.
::mlir::ArrayAttr mlir::CallableOpInterface::getArgAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->getArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Get the array of result attribute dictionaries. The method should return
/// an array attribute containing only dictionary attributes equal in number
/// to the number of results. Alternatively, the method can return
/// null to indicate that there are no result attributes.
::mlir::ArrayAttr mlir::CallableOpInterface::getResAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->getResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Set the array of argument attribute dictionaries.
void mlir::CallableOpInterface::setArgAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->implArgAndResultAttrsOpInterface->setArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation(), attrs);
  }

/// Set the array of result attribute dictionaries.
void mlir::CallableOpInterface::setResAttrsAttr(::mlir::ArrayAttr attrs) {
      return getImpl()->implArgAndResultAttrsOpInterface->setResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation(), attrs);
  }

/// Remove the array of argument attribute dictionaries. This is the same as
/// setting all argument attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::CallableOpInterface::removeArgAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->removeArgAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }

/// Remove the array of result attribute dictionaries. This is the same as
/// setting all result attributes to an empty dictionary. The method should
/// return the removed attribute.
::mlir::Attribute mlir::CallableOpInterface::removeResAttrsAttr() {
      return getImpl()->implArgAndResultAttrsOpInterface->removeResAttrsAttr(getImpl()->implArgAndResultAttrsOpInterface, getOperation());
  }
