MLIR  20.0.0git
Public Types | Static Protected Member Functions | Protected Attributes | List of all members
mlir::AttributeInterface< ConcreteType, Traits > Class Template Reference

This class represents the base of an attribute interface. More...

#include "mlir/IR/Attributes.h"

+ Inheritance diagram for mlir::AttributeInterface< ConcreteType, Traits >:

Public Types

using Base = AttributeInterface< ConcreteType, Traits >
 
using InterfaceBase = detail::Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
 
- Public Types inherited from mlir::detail::Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
using Concept = typename Traits::Concept
 
using Model = typename Traits::template Model< T >
 
using FallbackModel = typename Traits::template FallbackModel< T >
 
using InterfaceBase = Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
 
using ExternalModel = typename Traits::template ExternalModel< T, U >
 
using ValueType = Attribute
 
- Public Types inherited from mlir::Attribute
template<typename ConcreteType , typename BaseType , typename StorageType , template< typename T > class... Traits>
using AttrBase = detail::StorageUserBase< ConcreteType, BaseType, StorageType, detail::AttributeUniquer, Traits... >
 Utility class for implementing attributes. More...
 
using ImplType = AttributeStorage
 
using ValueType = void
 
using AbstractTy = AbstractAttribute
 

Static Protected Member Functions

static InterfaceBase::ConceptgetInterfaceFor (Attribute attr)
 Returns the impl interface instance for the given type. More...
 

Protected Attributes

friend InterfaceBase
 Allow access to 'getInterfaceFor'. More...
 
- Protected Attributes inherited from mlir::Attribute
ImplTypeimpl {nullptr}
 

Additional Inherited Members

- Public Member Functions inherited from mlir::detail::Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
 Interface (Attribute t=Attribute())
 Construct an interface from an instance of the value type. More...
 
 Interface (std::nullptr_t)
 
 Interface (T t)
 Construct an interface instance from a type that implements this interface's trait. More...
 
 Interface (Attribute t, const Concept *conceptImpl)
 Constructor for a known concept. More...
 
 Interface (Attribute t, std::nullptr_t)
 Constructor for DenseMapInfo's empty key and tombstone key. More...
 
- Public Member Functions inherited from mlir::Attribute
constexpr Attribute ()=default
 
 Attribute (const ImplType *impl)
 
 Attribute (const Attribute &other)=default
 
Attributeoperator= (const Attribute &other)=default
 
bool operator== (Attribute other) const
 
bool operator!= (Attribute other) const
 
 operator bool () const
 
bool operator! () const
 
template<typename... Tys>
bool isa () const
 Casting utility functions. More...
 
template<typename... Tys>
bool isa_and_nonnull () const
 
template<typename U >
dyn_cast () const
 
template<typename U >
dyn_cast_or_null () const
 
template<typename U >
cast () const
 
TypeID getTypeID ()
 Return a unique identifier for the concrete attribute type. More...
 
MLIRContextgetContext () const
 Return the context this attribute belongs to. More...
 
DialectgetDialect () const
 Get the dialect this attribute is registered to. More...
 
void print (raw_ostream &os, bool elideType=false) const
 Print the attribute. More...
 
void print (raw_ostream &os, AsmState &state, bool elideType=false) const
 
void dump () const
 
void printStripped (raw_ostream &os) const
 Print the attribute without dialect wrapping. More...
 
void printStripped (raw_ostream &os, AsmState &state) const
 
const void * getAsOpaquePointer () const
 Get an opaque pointer to the attribute. More...
 
template<typename InterfaceT >
bool hasPromiseOrImplementsInterface ()
 Returns true if InterfaceT has been promised by the dialect or implemented. More...
 
template<template< typename T > class Trait>
bool hasTrait ()
 Returns true if the type was registered with a particular trait. More...
 
const AbstractTygetAbstractAttribute () const
 Return the abstract descriptor for this attribute. More...
 
void walkImmediateSubElements (function_ref< void(Attribute)> walkAttrsFn, function_ref< void(Type)> walkTypesFn) const
 Walk all of the immediately nested sub-attributes and sub-types. More...
 
auto replaceImmediateSubElements (ArrayRef< Attribute > replAttrs, ArrayRef< Type > replTypes) const
 Replace the immediately nested sub-attributes and sub-types with those provided. More...
 
template<WalkOrder Order = WalkOrder::PostOrder, typename... WalkFns>
auto walk (WalkFns &&...walkFns)
 Walk this attribute and all attibutes/types nested within using the provided walk functions. More...
 
template<typename... ReplacementFns>
auto replace (ReplacementFns &&...replacementFns)
 Recursively replace all of the nested sub-attributes and sub-types using the provided map functions. More...
 
ImplTypegetImpl () const
 Return the internal Attribute implementation. More...
 
- Static Public Member Functions inherited from mlir::detail::Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
static bool classof (Attribute t)
 Support 'classof' by checking if the given object defines the concrete interface. More...
 
static TypeID getInterfaceID ()
 Define an accessor for the ID of this interface. More...
 
- Static Public Member Functions inherited from mlir::Attribute
static Attribute getFromOpaquePointer (const void *ptr)
 Construct an attribute from the opaque pointer representation. More...
 
- Protected Member Functions inherited from mlir::detail::Interface< ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase >
const ConceptgetImpl () const
 Get the raw concept in the correct derived concept type. More...
 
ConceptgetImpl ()
 

Detailed Description

template<typename ConcreteType, typename Traits>
class mlir::AttributeInterface< ConcreteType, Traits >

This class represents the base of an attribute interface.

See the definition of detail::Interface for requirements on the Traits type.

Definition at line 294 of file Attributes.h.

Member Typedef Documentation

◆ Base

template<typename ConcreteType , typename Traits >
using mlir::AttributeInterface< ConcreteType, Traits >::Base = AttributeInterface<ConcreteType, Traits>

Definition at line 298 of file Attributes.h.

◆ InterfaceBase

template<typename ConcreteType , typename Traits >
using mlir::AttributeInterface< ConcreteType, Traits >::InterfaceBase = detail::Interface<ConcreteType, Attribute, Traits, Attribute, AttributeTrait::TraitBase>

Definition at line 299 of file Attributes.h.

Member Function Documentation

◆ getInterfaceFor()

template<typename ConcreteType , typename Traits >
static InterfaceBase::Concept* mlir::AttributeInterface< ConcreteType, Traits >::getInterfaceFor ( Attribute  attr)
inlinestaticprotected

Member Data Documentation

◆ InterfaceBase

template<typename ConcreteType , typename Traits >
friend mlir::AttributeInterface< ConcreteType, Traits >::InterfaceBase
protected

Allow access to 'getInterfaceFor'.

Definition at line 318 of file Attributes.h.


The documentation for this class was generated from the following file: