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


/// Returns the operand which the given OpResult is based on.
::mlir::Value fir::FortranObjectViewOpInterface::getViewSource(::mlir::OpResult resultView) {
      return getImpl()->getViewSource(getImpl(), getOperation(), resultView);
  }

/// Returns the constant offset (in bytes) applied to the corresponding
/// operand to produce the resulting view.
/// If it is not possible to identify the constant offset,
/// the result is nullopt.
/// Note that the offset may be negative, e.g. when addressing
/// an array section with a negative stride.
std::optional<std::int64_t> fir::FortranObjectViewOpInterface::getViewOffset(::mlir::OpResult resultView) {
      return getImpl()->getViewOffset(getImpl(), getOperation(), resultView);
  }

/// Get the address produced by the definition
mlir::Value fir::FortranVariableOpInterface::getBase() {
      return getImpl()->getBase(getImpl(), getOperation());
  }

/// Get Fortran attributes
std::optional<fir::FortranVariableFlagsEnum> fir::FortranVariableOpInterface::getFortranAttrs() {
      return getImpl()->getFortranAttrs(getImpl(), getOperation());
  }

/// Get the shape of the variable. May be a null value.
mlir::Value fir::FortranVariableOpInterface::getShape() {
      return getImpl()->getShape(getImpl(), getOperation());
  }

/// Get explicit type parameters of the variable
mlir::OperandRange fir::FortranVariableOpInterface::getExplicitTypeParams() {
      return getImpl()->getExplicitTypeParams(getImpl(), getOperation());
  }

/// Set Fortran attributes
void fir::FortranVariableOpInterface::setFortranAttrs(fir::FortranVariableFlagsEnum flags) {
      return getImpl()->setFortranAttrs(getImpl(), getOperation(), flags);
  }

/// Returns the raw address of the physical storage
mlir::Value fir::FortranVariableStorageOpInterface::getStorage() {
      return getImpl()->getStorage(getImpl(), getOperation());
  }

/// Returns the byte offset where the variable begins within the physical storage
std::uint64_t fir::FortranVariableStorageOpInterface::getStorageOffset() {
      return getImpl()->getStorageOffset(getImpl(), getOperation());
  }

/// Get the address produced by the definition
mlir::Value fir::FortranVariableStorageOpInterface::getBase() {
      return getImpl()->implFortranVariableOpInterface->getBase(getImpl()->implFortranVariableOpInterface, getOperation());
  }

/// Get Fortran attributes
std::optional<fir::FortranVariableFlagsEnum> fir::FortranVariableStorageOpInterface::getFortranAttrs() {
      return getImpl()->implFortranVariableOpInterface->getFortranAttrs(getImpl()->implFortranVariableOpInterface, getOperation());
  }

/// Get the shape of the variable. May be a null value.
mlir::Value fir::FortranVariableStorageOpInterface::getShape() {
      return getImpl()->implFortranVariableOpInterface->getShape(getImpl()->implFortranVariableOpInterface, getOperation());
  }

/// Get explicit type parameters of the variable
mlir::OperandRange fir::FortranVariableStorageOpInterface::getExplicitTypeParams() {
      return getImpl()->implFortranVariableOpInterface->getExplicitTypeParams(getImpl()->implFortranVariableOpInterface, getOperation());
  }

/// Set Fortran attributes
void fir::FortranVariableStorageOpInterface::setFortranAttrs(fir::FortranVariableFlagsEnum flags) {
      return getImpl()->implFortranVariableOpInterface->setFortranAttrs(getImpl()->implFortranVariableOpInterface, getOperation(), flags);
  }
