13 #ifndef MLIR_IR_TYPE_SUPPORT_H 14 #define MLIR_IR_TYPE_SUPPORT_H 42 : dialect(nullptr), subclassData(subclassData) {}
47 assert(dialect &&
"Malformed type storage object.");
59 void initializeDialect(
Dialect &newDialect) { dialect = &newDialect; }
65 unsigned subclassData;
89 template <
typename T,
typename... Args>
90 static T
get(
MLIRContext *ctx,
unsigned kind, Args &&... args) {
91 return ctx->getTypeUniquer().
get<
typename T::ImplType>(
93 storage->initializeDialect(lookupDialectForType<T>(ctx));
95 kind, std::forward<Args>(args)...);
101 return lookupDialectForType(ctx, T::getClassID());
Definition: InferTypeOpInterface.cpp:20
Definition: STLExtras.h:95
Base storage class appearing in a Type.
Definition: TypeSupport.h:33
Definition: StorageUniquer.h:89
unsigned getSubclassData() const
Get the subclass data.
Definition: TypeSupport.h:51
static T get(MLIRContext *ctx, unsigned kind, Args &&... args)
Get an uniqued instance of a type T.
Definition: TypeSupport.h:90
Definition: TypeSupport.h:86
Dialect & getDialect()
Get the dialect that this type is registered to.
Definition: TypeSupport.h:46
Definition: StorageUniquer.h:64
Definition: StorageUniquer.h:71
Definition: MLIRContext.h:34
void setSubclassData(unsigned val)
Set the subclass data.
Definition: TypeSupport.h:54
TypeStorage(unsigned subclassData=0)
Definition: TypeSupport.h:41