Browse Source

fix compilation error

V2-integral
Zhicheng Wang 1 week ago
parent
commit
4e76874ede
  1. 2
      network_process/src/connect_by_topo/pair_faces.cpp
  2. 4
      network_process/src/post_topo/patch_propagation.cpp
  3. 12
      primitive_process/interface/data/data_type.hpp
  4. 2
      primitive_process/src/base/primitive.cpp
  5. 7
      primitive_process/src/data/data_center.cpp
  6. 2
      primitive_process/src/primitive/simple/cylinder.cpp
  7. 2
      primitive_process/src/primitive/simple/sphere.cpp
  8. 2
      shared_module/utils/marked_ptr.hpp
  9. 2
      shared_module/utils/pointer_wrapper.hpp

2
network_process/src/connect_by_topo/pair_faces.cpp

@ -1,7 +1,7 @@
#include <connect_by_topo.hpp> #include <connect_by_topo.hpp>
void compute_patch_order(const stl_vector_mp<std::array<uint32_t, 4>> &tetrahedrons, void compute_patch_order(const stl_vector_mp<std::array<uint32_t, 4>> &tetrahedrons,
const stl_vector_mp<uint32_t> &iso_edge, const iso_edge_t &iso_edge,
const stl_vector_mp<iso_vertex_t> &iso_verts, const stl_vector_mp<iso_vertex_t> &iso_verts,
const stl_vector_mp<polygon_face_t> &iso_faces, const stl_vector_mp<polygon_face_t> &iso_faces,
const stl_vector_mp<arrangement_t> &tetrahedron_arrangements, const stl_vector_mp<arrangement_t> &tetrahedron_arrangements,

4
network_process/src/post_topo/patch_propagation.cpp

@ -116,14 +116,14 @@ void transform_subface_to_primitive_labels(const baked_blobtree_t&
stl_vector_mp<dynamic_bitset_mp<>> temp_subface_signs{}; stl_vector_mp<dynamic_bitset_mp<>> temp_subface_signs{};
for (size_t i = 0; i < tree.primitives.size(); ++i) { for (size_t i = 0; i < tree.primitives.size(); ++i) {
auto& cell_primitive_sign = cell_primitive_signs[i]; auto& cell_primitive_sign = cell_primitive_signs[i];
const auto& primitive = *tree.primitives[i].object_ptr; const auto primitive_ptr = tree.primitives[i].object_ptr;
const auto& subface_indices = tree.primitives[i].index_mapping; const auto& subface_indices = tree.primitives[i].index_mapping;
temp_subface_signs.clear(); temp_subface_signs.clear();
temp_subface_signs.reserve(subface_indices.size()); temp_subface_signs.reserve(subface_indices.size());
for (const auto& subface_index : subface_indices) temp_subface_signs.emplace_back(cell_subface_signs[subface_index]); for (const auto& subface_index : subface_indices) temp_subface_signs.emplace_back(cell_subface_signs[subface_index]);
cell_primitive_sign = primitive.judge_sign_by_subface_sign(temp_subface_signs); cell_primitive_sign = primitive_ptr->judge_sign_by_subface_sign(temp_subface_signs);
} }
} }

12
primitive_process/interface/data/data_type.hpp

@ -109,18 +109,8 @@ struct default_elem_ctor<internal::paired_model_matrix_ptr_t, T> {
// TODO: this will cause error, try to handle it // TODO: this will cause error, try to handle it
// static_assert(std::is_base_of<subface, T>{}); // static_assert(std::is_base_of<subface, T>{});
T res{}; T res{};
res.model_matrices = make_pointer_wrapper(k); res.model_matrices = make_pointer_wrapper(const_cast<internal::paired_model_matrix&>(k));
return res; return res;
} }
}; };
// template <>
// struct default_elem_ctor<internal::transform_block*, internal::inverted_transform_block> {
// internal::inverted_transform_block operator()(const internal::transform_block* k) const
// {
// internal::inverted_transform_block res{};
// res.data = k->inverse();
// return res;
// }
// };
} // namespace detail } // namespace detail

2
primitive_process/src/base/primitive.cpp

@ -33,7 +33,7 @@ dynamic_bitset_mp<> primitive::judge_sign_by_subface_sign(stl_vector_mp<dynamic_
dynamic_bitset_mp<> res = subface_signs.front(); dynamic_bitset_mp<> res = subface_signs.front();
for (size_t i = 1; i < subfaces.size(); ++i) { for (size_t i = 1; i < subfaces.size(); ++i) {
if (!subfaces[i].is_marked()) if (!subfaces[i].get_mark())
res |= subface_signs[i]; res |= subface_signs[i];
else else
res |= subface_signs[i].flip(); res |= subface_signs[i].flip();

7
primitive_process/src/data/data_center.cpp

@ -67,25 +67,24 @@ void primitive_data_center_t::release_transform_block(const internal::paired_mod
void primitive_data_center_t::release_surface(surface_type type, const marked_subface_ptr_t<subface>& subface) void primitive_data_center_t::release_surface(surface_type type, const marked_subface_ptr_t<subface>& subface)
{ {
auto subface_ptr = subface.get_ptr();
switch (type) { switch (type) {
case surface_type::plane: case surface_type::plane:
{ {
auto model_matrices = subface_ptr->model_matrices; auto model_matrices = subface->model_matrices;
std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); std::get<plane_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices);
release_transform_block(model_matrices); release_transform_block(model_matrices);
break; break;
} }
case surface_type::sphere: case surface_type::sphere:
{ {
auto model_matrices = subface_ptr->model_matrices; auto model_matrices = subface->model_matrices;
std::get<sphere_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); std::get<sphere_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices);
release_transform_block(model_matrices); release_transform_block(model_matrices);
break; break;
} }
case surface_type::cylinder: case surface_type::cylinder:
{ {
auto model_matrices = subface_ptr->model_matrices; auto model_matrices = subface->model_matrices;
std::get<cylinder_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices); std::get<cylinder_container_t>(this->surfaces[static_cast<uint8_t>(type)]).release(model_matrices);
release_transform_block(model_matrices); release_transform_block(model_matrices);
break; break;

2
primitive_process/src/primitive/simple/cylinder.cpp

@ -12,7 +12,7 @@ void cylinder_t::initialize(primitive_data_center_t &data_center)
void cylinder_t::destroy() void cylinder_t::destroy()
{ {
primitive_data_center_t &data_center = bottom_plane.get_ptr()->data_center; primitive_data_center_t &data_center = bottom_plane->data_center;
data_center.release_surface(surface_type::cylinder, static_pointer_cast<subface>(cylinder_face)); data_center.release_surface(surface_type::cylinder, static_pointer_cast<subface>(cylinder_face));
data_center.release_surface(surface_type::plane, static_pointer_cast<subface>(bottom_plane)); data_center.release_surface(surface_type::plane, static_pointer_cast<subface>(bottom_plane));

2
primitive_process/src/primitive/simple/sphere.cpp

@ -9,7 +9,7 @@ void sphere_t::initialize(primitive_data_center_t &data_center)
void sphere_t::destroy() void sphere_t::destroy()
{ {
primitive_data_center_t& data_center = sphere_face.get_ptr()->data_center; primitive_data_center_t& data_center = sphere_face->data_center;
data_center.release_surface(surface_type::sphere, static_pointer_cast<subface>(sphere_face)); data_center.release_surface(surface_type::sphere, static_pointer_cast<subface>(sphere_face));
} }

2
shared_module/utils/marked_ptr.hpp

@ -24,6 +24,8 @@ struct marked_ptr {
operator size_t() const { return get_mark(); } operator size_t() const { return get_mark(); }
T* operator->() const noexcept { return get_ptr(); }
protected: protected:
T* ptr{nullptr}; T* ptr{nullptr};
}; };

2
shared_module/utils/pointer_wrapper.hpp

@ -17,6 +17,8 @@ struct pointer_wrapper{
T& get() const noexcept { return *ptr; } T& get() const noexcept { return *ptr; }
auto operator->() const noexcept { return ptr; } auto operator->() const noexcept { return ptr; }
operator T&() const noexcept { return *ptr; } operator T&() const noexcept { return *ptr; }
auto operator*() const noexcept { return *ptr; }
auto operator*() noexcept { return *ptr; }
T copy() const noexcept { return *ptr; } T copy() const noexcept { return *ptr; }

Loading…
Cancel
Save