7#ifndef PXR_BASE_VT_WRAP_ARRAY_EDIT_H
8#define PXR_BASE_VT_WRAP_ARRAY_EDIT_H
11#include "pxr/base/vt/api.h"
15#include "pxr/base/vt/wrapArray.h"
17#include "pxr/external/boost/python/class.hpp"
21PXR_NAMESPACE_OPEN_SCOPE
23template <
class ArrayEdit>
26 using namespace pxr_boost::python;
27 using namespace Vt_WrapArray;
29 using Array =
typename ArrayEdit::Array;
30 using ElementType =
typename ArrayEdit::ElementType;
32 const std::string name = GetVtArrayName<Array>() +
"Edit";
34 class_<ArrayEdit>(name.c_str())
35 .def(init<ArrayEdit const &>())
39 +[](ArrayEdit
const &self) {
42 .def(self_ns::str(self_ns::self))
43 .def(
"IsIdentity", &ArrayEdit::IsIdentity)
45 +[](ArrayEdit
const &self, ArrayEdit
const &weaker) {
46 return self.ComposeOver(weaker);
49 +[](ArrayEdit
const &self, Array
const &weaker) {
50 return self.ComposeOver(weaker);
55 class_<Builder>((name +
"Builder").c_str())
56 .def(
"Write", &Builder::Write,
57 (arg(
"elem"), arg(
"index")), return_self<>())
58 .def(
"WriteRef", &Builder::WriteRef,
59 (arg(
"srcIndex"), arg(
"dstIndex")), return_self<>())
60 .def(
"Insert", &Builder::Insert,
61 (arg(
"elem"), arg(
"index")), return_self<>())
62 .def(
"InsertRef", &Builder::InsertRef,
63 (arg(
"srcIndex"), arg(
"dstIndex")), return_self<>())
64 .def(
"Prepend", &Builder::Prepend,
65 (arg(
"elem")), return_self<>())
66 .def(
"PrependRef", &Builder::PrependRef,
67 (arg(
"srcIndex")), return_self<>())
68 .def(
"Append", &Builder::Append, (arg(
"elem")), return_self<>())
69 .def(
"AppendRef", &Builder::AppendRef,
70 (arg(
"srcIndex")), return_self<>())
71 .def(
"EraseRef", &Builder::EraseRef, (arg(
"index")), return_self<>())
73 +[](Builder &self, int64_t size) {
76 (arg(
"size")), return_self<>())
78 +[](Builder &self, int64_t size, ElementType
const &fill) {
79 self.MinSize(size, fill);
80 }, (arg(
"size"), arg(
"fill")), return_self<>())
81 .def(
"MaxSize", &Builder::MaxSize, (arg(
"size")), return_self<>())
83 +[](Builder &self, int64_t size) {
85 }, (arg(
"size")), return_self<>())
87 +[](Builder &self, int64_t size, ElementType
const &fill) {
88 self.SetSize(size, fill);
89 }, (arg(
"size"), arg(
"fill")), return_self<>())
90 .def(
"FinalizeAndReset", &Builder::FinalizeAndReset)
91 .def(
"Optimize", +[](ArrayEdit edit) {
92 return Builder::Optimize(std::move(edit));
94 .staticmethod(
"Optimize")
98#define VT_WRAP_ARRAY_EDIT(unused, elem) \
99 VtWrapArrayEdit<VtArrayEdit< VT_TYPE(elem) > >();
101PXR_NAMESPACE_CLOSE_SCOPE
Defines all the types "TYPED" for which Vt creates a VtTYPEDArray typedef.
A user-extensible hashing mechanism for use with runtime hash tables.
A builder type that produces instances of VtArrayEdit representing sequences of array edit operations...