1//===- StandaloneExtension.cpp - Extension module -------------------------===//
2//
3// This is the nanobind version of the example module. There is also a pybind11
4// example in StandaloneExtensionPybind11.cpp.
5//
6// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
7// See https://llvm.org/LICENSE.txt for license information.
8// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
9//
10//===----------------------------------------------------------------------===//
11
12#include "Standalone-c/Dialects.h"
13#include "mlir/Bindings/Python/Nanobind.h"
14#include "mlir/Bindings/Python/NanobindAdaptors.h"
15
16namespace nb = nanobind;
17
18NB_MODULE(_standaloneDialectsNanobind, m) {
19 //===--------------------------------------------------------------------===//
20 // standalone dialect
21 //===--------------------------------------------------------------------===//
22 auto standaloneM = m.def_submodule("standalone");
23
24 standaloneM.def(
25 "register_dialect",
26 [](MlirContext context, bool load) {
27 MlirDialectHandle handle = mlirGetDialectHandle__standalone__();
28 mlirDialectHandleRegisterDialect(handle, context);
29 if (load) {
30 mlirDialectHandleLoadDialect(handle, context);
31 }
32 },
33 nb::arg("context").none() = nb::none(), nb::arg("load") = true);
34}
35

source code of mlir/examples/standalone/python/StandaloneExtensionNanobind.cpp