21 std::optional<RegisteredOperationName> opNameFound =
23 assert(opNameFound &&
"operation name must be registered in the context");
31 static_cast<RegisteredOperationNameWithImpl &
>(*opNameFound).getImpl();
33 std::unique_ptr<DynamicOpTrait> trait(
unwrap(dynamicOpTrait));
48 delete unwrap(dynamicOpTrait);
57 : typeID(typeID), callbacks(callbacks), userData(userData) {
58 if (callbacks.construct)
59 callbacks.construct(userData);
62 if (callbacks.destruct)
63 callbacks.destruct(userData);
67 return unwrap(callbacks.verifyTrait(
wrap(op), userData));
70 return unwrap(callbacks.verifyRegionTrait(
wrap(op), userData));
MlirDynamicOpTrait mlirDynamicOpTraitCreate(MlirTypeID typeID, MlirDynamicOpTraitCallbacks callbacks, void *userData)
Create a custom dynamic op trait with the given type ID and callbacks.
MlirDynamicOpTrait mlirDynamicOpTraitIsTerminatorCreate()
Get the dynamic op trait that indicates the operation is a terminator.
void mlirDynamicOpTraitDestroy(MlirDynamicOpTrait dynamicOpTrait)
Destroy the dynamic op trait.
MlirDynamicOpTrait mlirDynamicOpTraitNoTerminatorCreate()
Get the dynamic op trait that indicates regions have no terminator.
#define DEFINE_C_API_PTR_METHODS(name, cpptype)
The definition of a dynamic op.
Base class of traits for dynamic-defined operations.
~ExternalDynamicOpTrait()
ExternalDynamicOpTrait(TypeID typeID, MlirDynamicOpTraitCallbacks callbacks, void *userData)
TypeID getTypeID() const override
Returns the TypeID of the trait.
LogicalResult verifyRegionTrait(Operation *op) const override
LogicalResult verifyTrait(Operation *op) const override
Operation is the basic unit of execution within MLIR.
This is a "type erased" representation of a registered operation.
static std::optional< RegisteredOperationName > lookup(StringRef name, MLIRContext *ctx)
Lookup the registered operation information for the given operation.
This class provides an efficient unique identifier for a specific C++ type.
MlirDiagnostic wrap(mlir::Diagnostic &diagnostic)
mlir::Diagnostic & unwrap(MlirDiagnostic diagnostic)
MLIR_CAPI_EXPORTED bool mlirDynamicOpTraitAttach(MlirDynamicOpTrait dynamicOpTrait, MlirStringRef opName, MlirContext context)
Attach a dynamic op trait to the given operation name.
Include the generated interface declarations.
A pointer to a sized fragment of a string, not necessarily null-terminated.