Lagrange
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Modules Pages
bind_indexed_attribute.h
1/*
2 * Copyright 2022 Adobe. All rights reserved.
3 * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License. You may obtain a copy
5 * of the License at http://www.apache.org/licenses/LICENSE-2.0
6 *
7 * Unless required by applicable law or agreed to in writing, software distributed under
8 * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9 * OF ANY KIND, either express or implied. See the License for the specific language
10 * governing permissions and limitations under the License.
11 */
12#pragma once
13
14#include "PyIndexedAttribute.h"
15
16#include <lagrange/IndexedAttribute.h>
17
18// clang-format off
19#include <lagrange/utils/warnoff.h>
20#include <nanobind/nanobind.h>
21#include <lagrange/utils/warnon.h>
22// clang-format on
23
24namespace lagrange::python {
25
26void bind_indexed_attribute(nanobind::module_& m)
27{
28 namespace nb = nanobind;
29 using namespace nb::literals;
30
31 auto indexed_attr_class =
32 nb::class_<PyIndexedAttribute>(m, "IndexedAttribute", "Index attribute");
33
34 indexed_attr_class.def_prop_ro("element_type", [](PyIndexedAttribute& self) {
35 return self->get_element_type();
36 });
37 indexed_attr_class.def_prop_ro("usage", [](PyIndexedAttribute& self) {
38 return self->get_usage();
39 });
40 indexed_attr_class.def_prop_ro("num_channels", [](PyIndexedAttribute& self) {
41 return self->get_num_channels();
42 });
43
44 indexed_attr_class.def_prop_ro("values", &PyIndexedAttribute::values);
45 indexed_attr_class.def_prop_ro("indices", &PyIndexedAttribute::indices);
46}
47
48} // namespace lagrange::python