namespace mlir {
class DestructurableTypeInterface;
namespace detail {
struct DestructurableTypeInterfaceInterfaceTraits { … };
template <typename ConcreteType>
struct DestructurableTypeInterfaceTrait;
}
class DestructurableTypeInterface : public ::mlir::TypeInterface<DestructurableTypeInterface, detail::DestructurableTypeInterfaceInterfaceTraits> { … };
namespace detail {
template <typename ConcreteType>
struct DestructurableTypeInterfaceTrait : public ::mlir::TypeInterface<DestructurableTypeInterface, detail::DestructurableTypeInterfaceInterfaceTraits>::Trait<ConcreteType> { … };
}
}
namespace mlir {
template<typename ConcreteType>
::std::optional<::llvm::DenseMap<::mlir::Attribute, ::mlir::Type>> detail::DestructurableTypeInterfaceInterfaceTraits::Model<ConcreteType>::getSubelementIndexMap(const Concept *impl, ::mlir::Type tablegen_opaque_val) { … }
template<typename ConcreteType>
::mlir::Type detail::DestructurableTypeInterfaceInterfaceTraits::Model<ConcreteType>::getTypeAtIndex(const Concept *impl, ::mlir::Type tablegen_opaque_val, ::mlir::Attribute index) { … }
template<typename ConcreteType>
::std::optional<::llvm::DenseMap<::mlir::Attribute, ::mlir::Type>> detail::DestructurableTypeInterfaceInterfaceTraits::FallbackModel<ConcreteType>::getSubelementIndexMap(const Concept *impl, ::mlir::Type tablegen_opaque_val) { … }
template<typename ConcreteType>
::mlir::Type detail::DestructurableTypeInterfaceInterfaceTraits::FallbackModel<ConcreteType>::getTypeAtIndex(const Concept *impl, ::mlir::Type tablegen_opaque_val, ::mlir::Attribute index) { … }
}