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


/// Get the attribute's data
::llvm::ArrayRef<char> mlir::BlobAttr::getData() const {
      return getImpl()->getData(getImpl(), *this);
  }

/// This method returns an opaque range indexer for the given elementID, which
/// corresponds to a desired C++ element data type. Returns the indexer if the
/// attribute supports the given data type, failure otherwise.
::mlir::FailureOr<::mlir::detail::ElementsAttrIndexer> mlir::ElementsAttr::getValuesImpl(::mlir::TypeID elementID) const {
      return getImpl()->getValuesImpl(getImpl(), *this, elementID);
  }

/// Returns true if the attribute elements correspond to a splat, i.e. that
/// all elements of the attribute are the same value.
bool mlir::ElementsAttr::isSplat() const {
      return getImpl()->isSplat(getImpl(), *this);
  }

/// Returns the shaped type of the elements attribute.
::mlir::ShapedType mlir::ElementsAttr::getShapedType() const {
      return getImpl()->getShapedType(getImpl(), *this);
  }

/// Get the attribute's type
::mlir::Type mlir::ElementsAttr::getType() const {
      return getImpl()->implTypedAttr->getType(getImpl()->implTypedAttr, *this);
  }

/// Get the MemRef layout as an AffineMap, the method must not return NULL
::mlir::AffineMap mlir::MemRefLayoutAttrInterface::getAffineMap() const {
      return getImpl()->getAffineMap(getImpl(), *this);
  }

/// Return true if this attribute represents the identity layout
bool mlir::MemRefLayoutAttrInterface::isIdentity() const {
      return getImpl()->isIdentity(getImpl(), *this);
  }

/// Check if the current layout is applicable to the provided shape
::llvm::LogicalResult mlir::MemRefLayoutAttrInterface::verifyLayout(::llvm::ArrayRef<int64_t> shape, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const {
      return getImpl()->verifyLayout(getImpl(), *this, shape, emitError);
  }

/// Return the strides (using ShapedType::kDynamic for the dynamic case)
///       that this layout corresponds to into `strides` and `offset` if such exist
///       and can be determined from a combination of the layout and the given
///       `shape`. If these strides cannot be inferred, return failure().
///       The values of `strides` and `offset` are undefined on failure.
::llvm::LogicalResult mlir::MemRefLayoutAttrInterface::getStridesAndOffset(::llvm::ArrayRef<int64_t> shape, ::llvm::SmallVectorImpl<int64_t>& strides, int64_t& offset) const {
      return getImpl()->getStridesAndOffset(getImpl(), *this, shape, strides, offset);
  }

/// Get the attribute's type
::mlir::Type mlir::TypedAttr::getType() const {
      return getImpl()->getType(getImpl(), *this);
  }
