Skip to content

Commit 0d21ebf

Browse files
committed
Add set() to wrapper
1 parent 0302e65 commit 0d21ebf

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

wrap/wrapper.i

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,23 @@
8888
throw std::runtime_error("Unsupported data type, size: " + std::to_string($self->value_bits()));
8989
}
9090
}
91+
bool set(long i, long j, long k, PyObject* v) {
92+
auto acvs_voxels = dynamic_cast<abstract_chunked_voxel_storage const*>($self);
93+
if (!acvs_voxels) {
94+
throw std::runtime_error("Unsupported storage");
95+
}
96+
auto ijk_long = (make_vec<long>(i, j, k) - (acvs_voxels->grid_offset() * acvs_voxels->chunk_size()).as<long>());
97+
auto ijk = ijk_long.as<size_t>();
98+
if (!(ijk_long > 0).all() || !(ijk < $self->extents()).all()) {
99+
return false;
100+
}
101+
if ($self->value_bits() == 1) {
102+
bool b = PyObject_IsTrue(v) == 1;
103+
$self->Set(ijk, &b);
104+
return true;
105+
}
106+
return false;
107+
}
91108
PyObject* get(double x, double y, double z) const {
92109
auto acvs_voxels = dynamic_cast<abstract_chunked_voxel_storage const*>($self);
93110
if (!acvs_voxels) {

0 commit comments

Comments
 (0)