MLIR  20.0.0git
Public Types | Public Member Functions | Static Public Member Functions | List of all members
mlir::DynamicAttr Class Reference

A dynamic attribute instance. More...

#include "mlir/IR/ExtensibleDialect.h"

+ Inheritance diagram for mlir::DynamicAttr:

Public Types

using Base = StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits... >
 Utility declarations for the concrete attribute class. More...
 
- Public Types inherited from mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >
using Base = StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits... >
 Utility declarations for the concrete attribute class. More...
 
using ImplType = StorageT
 
using HasTraitFn = bool(*)(TypeID)
 

Public Member Functions

DynamicAttrDefinitiongetAttrDef ()
 Return the attribute definition of the concrete attribute. More...
 
ArrayRef< AttributegetParams ()
 Return the attribute parameters. More...
 
void print (AsmPrinter &printer)
 Print the dynamic attribute with the format 'attrname' if there is no parameters, or 'attrname<attr (,attr)*>'. More...
 
- Public Member Functions inherited from mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >
ImplTypegetImpl () const
 Utility for easy access to the storage instance. More...
 

Static Public Member Functions

static DynamicAttr get (DynamicAttrDefinition *attrDef, ArrayRef< Attribute > params={})
 Return an instance of a dynamic attribute given a dynamic attribute definition and attribute parameters. More...
 
static DynamicAttr getChecked (function_ref< InFlightDiagnostic()> emitError, DynamicAttrDefinition *attrDef, ArrayRef< Attribute > params={})
 Return an instance of a dynamic attribute given a dynamic attribute definition and attribute parameters. More...
 
static bool isa (Attribute attr, DynamicAttrDefinition *attrDef)
 Check if an attribute is a specific dynamic attribute. More...
 
static bool classof (Attribute attr)
 Check if an attribute is a dynamic attribute. More...
 
static ParseResult parse (AsmParser &parser, DynamicAttrDefinition *attrDef, DynamicAttr &parsedAttr)
 Parse the dynamic attribute parameters and construct the attribute. More...
 
- Static Public Member Functions inherited from mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >
static TypeID getTypeID ()
 Return a unique identifier for the concrete type. More...
 
template<typename T >
static bool classof (T val)
 Provide an implementation of 'classof' that compares the type id of the provided value with that of the concrete type. More...
 
static detail::InterfaceMap getInterfaceMap ()
 Returns an interface map for the interfaces registered to this storage user. More...
 
static HasTraitFn getHasTraitFn ()
 Returns the function that returns true if the given Trait ID matches the IDs of any of the traits defined by the storage user. More...
 
static auto getWalkImmediateSubElementsFn ()
 Returns a function that walks immediate sub elements of a given instance of the storage user. More...
 
static auto getReplaceImmediateSubElementsFn ()
 Returns a function that replaces immediate sub elements of a given instance of the storage user. More...
 
template<typename... IfaceModels>
static void attachInterface (MLIRContext &context)
 Attach the given models as implementations of the corresponding interfaces for the concrete storage user class. More...
 
template<typename... Args>
static ConcreteT get (MLIRContext *ctx, Args &&...args)
 Get or create a new ConcreteT instance within the ctx. More...
 
template<typename... Args>
static ConcreteT getChecked (const Location &loc, Args &&...args)
 Get or create a new ConcreteT instance within the ctx, defined at the given, potentially unknown, location. More...
 
template<typename... Args>
static ConcreteT getChecked (function_ref< InFlightDiagnostic()> emitErrorFn, MLIRContext *ctx, Args... args)
 Get or create a new ConcreteT instance within the ctx. More...
 
static ConcreteT getFromOpaquePointer (const void *ptr)
 Get an instance of the concrete type from a void pointer. More...
 

Additional Inherited Members

- Protected Member Functions inherited from mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >
template<typename... Args>
LogicalResult mutate (Args &&...args)
 Mutate the current storage instance. More...
 
- Static Protected Member Functions inherited from mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >
template<typename... Args>
static LogicalResult verifyInvariants (Args... args)
 Default implementation that just returns success. More...
 

Detailed Description

A dynamic attribute instance.

This is an attribute whose definition is defined at runtime. It is possible to check if an attribute is a dynamic attribute using my_attr.isa<DynamicAttr>(), and getting the attribute definition of a dynamic attribute using the DynamicAttr::getAttrDef method. All dynamic attributes have the same storage, which is an array of attributes.

Definition at line 157 of file ExtensibleDialect.h.

Member Typedef Documentation

◆ Base

using mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >::Base = StorageUserBase<ConcreteT, BaseT, StorageT, UniquerT, Traits...>

Utility declarations for the concrete attribute class.

Definition at line 100 of file StorageUniquerSupport.h.

Member Function Documentation

◆ classof()

bool DynamicAttr::classof ( Attribute  attr)
static

Check if an attribute is a dynamic attribute.

Definition at line 264 of file ExtensibleDialect.cpp.

References mlir::Attribute::hasTrait().

◆ get()

DynamicAttr DynamicAttr::get ( DynamicAttrDefinition attrDef,
ArrayRef< Attribute params = {} 
)
static

Return an instance of a dynamic attribute given a dynamic attribute definition and attribute parameters.

This asserts that the attribute verifier succeeded.

Definition at line 244 of file ExtensibleDialect.cpp.

References mlir::DynamicAttrDefinition::getContext(), and mlir::SelfOwningTypeID::getTypeID().

Referenced by getChecked().

◆ getAttrDef()

DynamicAttrDefinition * DynamicAttr::getAttrDef ( )

Return the attribute definition of the concrete attribute.

Definition at line 260 of file ExtensibleDialect.cpp.

References mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >::getImpl().

Referenced by print().

◆ getChecked()

DynamicAttr DynamicAttr::getChecked ( function_ref< InFlightDiagnostic()>  emitError,
DynamicAttrDefinition attrDef,
ArrayRef< Attribute params = {} 
)
static

Return an instance of a dynamic attribute given a dynamic attribute definition and attribute parameters.

If the parameters provided are invalid, errors are emitted using the provided location and a null object is returned.

Definition at line 252 of file ExtensibleDialect.cpp.

References mlir::emitError(), get(), and mlir::DynamicAttrDefinition::verify().

◆ getParams()

ArrayRef< Attribute > DynamicAttr::getParams ( )

Return the attribute parameters.

Definition at line 262 of file ExtensibleDialect.cpp.

References mlir::detail::StorageUserBase< ConcreteT, BaseT, StorageT, UniquerT, Traits >::getImpl().

Referenced by print().

◆ isa()

static bool mlir::DynamicAttr::isa ( Attribute  attr,
DynamicAttrDefinition attrDef 
)
inlinestatic

Check if an attribute is a specific dynamic attribute.

Definition at line 185 of file ExtensibleDialect.h.

References mlir::Attribute::getTypeID(), and mlir::SelfOwningTypeID::getTypeID().

◆ parse()

ParseResult DynamicAttr::parse ( AsmParser parser,
DynamicAttrDefinition attrDef,
DynamicAttr parsedAttr 
)
static

Parse the dynamic attribute parameters and construct the attribute.

The parameters are either empty, and nothing is parsed, or they are in the format '<>' or '<attr (,attr)*>'.

Definition at line 268 of file ExtensibleDialect.cpp.

References mlir::AsmParser::getChecked().

Referenced by mlir::ExtensibleDialect::parseOptionalDynamicAttr().

◆ print()

void DynamicAttr::print ( AsmPrinter printer)

Print the dynamic attribute with the format 'attrname' if there is no parameters, or 'attrname<attr (,attr)*>'.

Definition at line 280 of file ExtensibleDialect.cpp.

References getAttrDef(), mlir::DynamicAttrDefinition::getName(), and getParams().


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