xref: /llvm-project/mlir/lib/CAPI/IR/DialectHandle.cpp (revision 97fc5682112d019230a3ab23cced3bdf093f6094)
15099a48aSGeorge //===- DialectHandle.cpp - C Interface for MLIR Dialect Operations -------===//
25099a48aSGeorge //
35099a48aSGeorge // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
45099a48aSGeorge // See https://llvm.org/LICENSE.txt for license information.
55099a48aSGeorge // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
65099a48aSGeorge //
75099a48aSGeorge //===----------------------------------------------------------------------===//
85099a48aSGeorge 
95099a48aSGeorge #include "mlir/CAPI/Registration.h"
105099a48aSGeorge 
115099a48aSGeorge static inline const MlirDialectRegistrationHooks *
unwrap(MlirDialectHandle handle)125099a48aSGeorge unwrap(MlirDialectHandle handle) {
135099a48aSGeorge   return (const MlirDialectRegistrationHooks *)handle.ptr;
145099a48aSGeorge }
155099a48aSGeorge 
mlirDialectHandleGetNamespace(MlirDialectHandle handle)165099a48aSGeorge MlirStringRef mlirDialectHandleGetNamespace(MlirDialectHandle handle) {
175099a48aSGeorge   return unwrap(handle)->getNamespaceHook();
185099a48aSGeorge }
195099a48aSGeorge 
mlirDialectHandleInsertDialect(MlirDialectHandle handle,MlirDialectRegistry registry)20*97fc5682SDaniel Resnick void mlirDialectHandleInsertDialect(MlirDialectHandle handle,
21*97fc5682SDaniel Resnick                                     MlirDialectRegistry registry) {
22*97fc5682SDaniel Resnick   unwrap(handle)->insertHook(registry);
23*97fc5682SDaniel Resnick }
24*97fc5682SDaniel Resnick 
mlirDialectHandleRegisterDialect(MlirDialectHandle handle,MlirContext ctx)255099a48aSGeorge void mlirDialectHandleRegisterDialect(MlirDialectHandle handle,
265099a48aSGeorge                                       MlirContext ctx) {
27*97fc5682SDaniel Resnick   mlir::DialectRegistry registry;
28*97fc5682SDaniel Resnick   mlirDialectHandleInsertDialect(handle, wrap(&registry));
29*97fc5682SDaniel Resnick   unwrap(ctx)->appendDialectRegistry(registry);
305099a48aSGeorge }
315099a48aSGeorge 
mlirDialectHandleLoadDialect(MlirDialectHandle handle,MlirContext ctx)325099a48aSGeorge MlirDialect mlirDialectHandleLoadDialect(MlirDialectHandle handle,
335099a48aSGeorge                                          MlirContext ctx) {
345099a48aSGeorge   return unwrap(handle)->loadHook(ctx);
355099a48aSGeorge }
36