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(
"IsIdentity", &ArrayEdit::IsIdentity)
44 +[](ArrayEdit
const &self, ArrayEdit
const &weaker) {
45 return self.ComposeOver(weaker);
48 +[](ArrayEdit
const &self, Array
const &weaker) {
49 return self.ComposeOver(weaker);
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<>())
72 +[](Builder &self, int64_t size) {
75 (arg(
"size")), return_self<>())
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<>())
82 +[](Builder &self, int64_t size) {
84 }, (arg(
"size")), return_self<>())
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));
93 .staticmethod(
"Optimize")
97#define VT_WRAP_ARRAY_EDIT(unused, elem) \
98 VtWrapArrayEdit<VtArrayEdit< VT_TYPE(elem) > >();
100PXR_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...