1//===- DialectHandle.cpp - C Interface for MLIR Dialect Operations -------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#include "mlir/CAPI/Registration.h"
10
11static inline const MlirDialectRegistrationHooks *
12unwrap(MlirDialectHandle handle) {
13 return (const MlirDialectRegistrationHooks *)handle.ptr;
14}
15
16MlirStringRef mlirDialectHandleGetNamespace(MlirDialectHandle handle) {
17 return unwrap(handle)->getNamespaceHook();
18}
19
20void mlirDialectHandleInsertDialect(MlirDialectHandle handle,
21 MlirDialectRegistry registry) {
22 unwrap(handle)->insertHook(registry);
23}
24
25void mlirDialectHandleRegisterDialect(MlirDialectHandle handle,
26 MlirContext ctx) {
27 mlir::DialectRegistry registry;
28 mlirDialectHandleInsertDialect(handle, registry: wrap(cpp: &registry));
29 unwrap(c: ctx)->appendDialectRegistry(registry);
30}
31
32MlirDialect mlirDialectHandleLoadDialect(MlirDialectHandle handle,
33 MlirContext ctx) {
34 return unwrap(handle)->loadHook(ctx);
35}
36

source code of mlir/lib/CAPI/IR/DialectHandle.cpp