Loading...
Searching...
No Matches
wrapArrayEdit.h
1//
2// Copyright 2025 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_BASE_VT_WRAP_ARRAY_EDIT_H
8#define PXR_BASE_VT_WRAP_ARRAY_EDIT_H
9
10#include "pxr/pxr.h"
11#include "pxr/base/vt/api.h"
14#include "pxr/base/vt/types.h"
15#include "pxr/base/vt/wrapArray.h"
16
17#include "pxr/external/boost/python/class.hpp"
18
19#include <string>
20
21PXR_NAMESPACE_OPEN_SCOPE
22
23template <class ArrayEdit>
24void VtWrapArrayEdit()
25{
26 using namespace pxr_boost::python;
27 using namespace Vt_WrapArray;
28
29 using Array = typename ArrayEdit::Array;
30 using ElementType = typename ArrayEdit::ElementType;
31
32 const std::string name = GetVtArrayName<Array>() + "Edit";
33
34 class_<ArrayEdit>(name.c_str())
35 .def(init<ArrayEdit const &>())
36 .def(self == self)
37 .def(self != self)
38 .def("__hash__",
39 +[](ArrayEdit const &self) {
40 return TfHash{}(self);
41 })
42 .def("IsIdentity", &ArrayEdit::IsIdentity)
43 .def("ComposeOver",
44 +[](ArrayEdit const &self, ArrayEdit const &weaker) {
45 return self.ComposeOver(weaker);
46 })
47 .def("ComposeOver",
48 +[](ArrayEdit const &self, Array const &weaker) {
49 return self.ComposeOver(weaker);
50 })
51 ;
52
53 using Builder = VtArrayEditBuilder<ElementType>;
54 class_<Builder>((name + "Builder").c_str())
55 .def("Write", &Builder::Write,
56 (arg("elem"), arg("index")), return_self<>())
57 .def("WriteRef", &Builder::WriteRef,
58 (arg("srcIndex"), arg("dstIndex")), return_self<>())
59 .def("Insert", &Builder::Insert,
60 (arg("elem"), arg("index")), return_self<>())
61 .def("InsertRef", &Builder::InsertRef,
62 (arg("srcIndex"), arg("dstIndex")), return_self<>())
63 .def("Prepend", &Builder::Prepend,
64 (arg("elem")), return_self<>())
65 .def("PrependRef", &Builder::PrependRef,
66 (arg("srcIndex")), return_self<>())
67 .def("Append", &Builder::Append, (arg("elem")), return_self<>())
68 .def("AppendRef", &Builder::AppendRef,
69 (arg("srcIndex")), return_self<>())
70 .def("EraseRef", &Builder::EraseRef, (arg("index")), return_self<>())
71 .def("MinSize",
72 +[](Builder &self, int64_t size) {
73 self.MinSize(size);
74 },
75 (arg("size")), return_self<>())
76 .def("MinSize",
77 +[](Builder &self, int64_t size, ElementType const &fill) {
78 self.MinSize(size, fill);
79 }, (arg("size"), arg("fill")), return_self<>())
80 .def("MaxSize", &Builder::MaxSize, (arg("size")), return_self<>())
81 .def("SetSize",
82 +[](Builder &self, int64_t size) {
83 self.SetSize(size);
84 }, (arg("size")), return_self<>())
85 .def("SetSize",
86 +[](Builder &self, int64_t size, ElementType const &fill) {
87 self.SetSize(size, fill);
88 }, (arg("size"), arg("fill")), return_self<>())
89 .def("FinalizeAndReset", &Builder::FinalizeAndReset)
90 .def("Optimize", +[](ArrayEdit edit) {
91 return Builder::Optimize(std::move(edit));
92 }, (arg("edit")))
93 .staticmethod("Optimize")
94 ;
95}
96
97#define VT_WRAP_ARRAY_EDIT(unused, elem) \
98 VtWrapArrayEdit<VtArrayEdit< VT_TYPE(elem) > >();
99
100PXR_NAMESPACE_CLOSE_SCOPE
101
102#endif // PXR_BASE_VT_WRAP_ARRAY_EDIT_H
103
Defines all the types "TYPED" for which Vt creates a VtTYPEDArray typedef.
A user-extensible hashing mechanism for use with runtime hash tables.
Definition: hash.h:472
A builder type that produces instances of VtArrayEdit representing sequences of array edit operations...