Skip to content

Commit 9e7c441

Browse files
committed
Change copy_as() prototype
1 parent 0caaf64 commit 9e7c441

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

collapse.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ class collapse_count {
6868
throw std::runtime_error("Only collapse over negative Z is implemented");
6969
}
7070

71-
regular_voxel_storage* collapsed = (regular_voxel_storage*)storage->empty_copy_as(voxel_uint32_t{});
71+
// @todo maybe create some static instances of these types, or in a map?
72+
voxel_uint32_t vut;
73+
regular_voxel_storage* collapsed = (regular_voxel_storage*)storage->empty_copy_as(&vut);
7274
auto bounds = storage->bounds();
7375

7476
size_t i0, j0, k0, i1, j1, k1;

storage.h

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ class abstract_voxel_storage {
138138

139139
virtual abstract_voxel_storage* make_explicit(void* location = nullptr) const = 0;
140140
virtual abstract_voxel_storage* empty_copy() const = 0;
141-
virtual abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const = 0;
141+
virtual abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const = 0;
142142
virtual abstract_voxel_storage* copy(void* location = nullptr) const = 0;
143143

144144
virtual size_t ray_intersect_n(const vec_n<3, size_t>& pos, const vec_n<3, size_t>& dir) {
@@ -398,7 +398,7 @@ class continuous_voxel_storage : public regular_voxel_storage {
398398
return nullptr;
399399
}
400400

401-
abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const {
401+
abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const {
402402
// @todo is this safe?
403403
return nullptr;
404404
}
@@ -621,7 +621,7 @@ class planar_voxel_storage : public regular_voxel_storage {
621621
return nullptr;
622622
}
623623

624-
abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const {
624+
abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const {
625625
// @todo is this safe?
626626
return nullptr;
627627
}
@@ -781,7 +781,7 @@ class constant_voxel_storage : public regular_voxel_storage {
781781
return nullptr;
782782
}
783783

784-
abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const {
784+
abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const {
785785
// @todo is this safe?
786786
return nullptr;
787787
}
@@ -1561,7 +1561,7 @@ class memory_mapped_chunked_voxel_storage : public abstract_chunked_voxel_storag
15611561
return new memory_mapped_chunked_voxel_storage(grid_offset_, d_, chunk_size_, nc, factory::mmap_filename());
15621562
}
15631563

1564-
abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const {
1564+
abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const {
15651565
throw std::runtime_error("not implemented");
15661566
}
15671567

@@ -1655,15 +1655,17 @@ class chunked_voxel_storage : public abstract_chunked_voxel_storage {
16551655
return new chunked_voxel_storage(grid_offset_, d_, chunk_size_, nc);
16561656
}
16571657

1658-
abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const {
1658+
abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const {
16591659
auto nc = num_chunks();
16601660
// @todo some sort of factory or visitor is needed here:
1661-
if (fmt.get_size_in_bits() == 1) {
1661+
if (fmt->get_size_in_bits() == 1) {
16621662
return new chunked_voxel_storage<bit_t>(grid_offset_, d_, chunk_size_, nc);
1663-
} else if (fmt.get_size_in_bits() == 8) {
1663+
} else if (fmt->get_size_in_bits() == 8) {
16641664
return new chunked_voxel_storage<voxel_uint8_t>(grid_offset_, d_, chunk_size_, nc);
1665-
} else if (fmt.get_size_in_bits() == 32) {
1665+
} else if (fmt->get_size_in_bits() == 32) {
16661666
return new chunked_voxel_storage<voxel_uint32_t>(grid_offset_, d_, chunk_size_, nc);
1667+
} else {
1668+
throw std::runtime_error("Not implemented");
16671669
}
16681670
}
16691671

@@ -1976,7 +1978,7 @@ class voxel_region : public regular_voxel_storage {
19761978
virtual abstract_voxel_storage* empty_copy() const { return base_->empty_copy(); }
19771979
virtual abstract_voxel_storage* copy(void* location = nullptr) const { return base_->copy(); }
19781980

1979-
virtual abstract_voxel_storage* empty_copy_as(voxel_desc_t& fmt) const { throw std::runtime_error("Not implemented"); }
1981+
virtual abstract_voxel_storage* empty_copy_as(voxel_desc_t* fmt) const { throw std::runtime_error("Not implemented"); }
19801982

19811983
virtual long long unsigned int count() const {
19821984
unsigned long long n = 0;

0 commit comments

Comments
 (0)