mirror of https://github.com/CGAL/cgal
use if-constexpr instead of C++ preprocessor
This commit is contained in:
parent
5cb75b0aa5
commit
0273049541
|
|
@ -71,6 +71,7 @@
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
#include <iostream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <optional>
|
#include <optional>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
@ -2105,18 +2106,15 @@ private:
|
||||||
for(std::size_t i = 0; i < intersecting_edges.size(); ++i) {
|
for(std::size_t i = 0; i < intersecting_edges.size(); ++i) {
|
||||||
const auto intersecting_edge = intersecting_edges[i];
|
const auto intersecting_edge = intersecting_edges[i];
|
||||||
const auto [v_above, v_below] = tr().vertices(intersecting_edge);
|
const auto [v_above, v_below] = tr().vertices(intersecting_edge);
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << cdt_3_format("restore_subface_region face index: {}, region #{}, intersecting edge #{}: ({} {})\n",
|
std::cerr << cdt_3_format("restore_subface_region face index: {}, region #{}, intersecting edge #{}: ({} {})\n",
|
||||||
face_index, region_index, i,
|
face_index, region_index, i,
|
||||||
IO::oformat(v_above, with_point_and_info),
|
IO::oformat(v_above, with_point_and_info),
|
||||||
IO::oformat(v_below, with_point_and_info));
|
IO::oformat(v_below, with_point_and_info));
|
||||||
dump_region(face_index, region_index, cdt_2);
|
dump_region(face_index, region_index, cdt_2);
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
|
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
const auto p_above = this->point(v_above);
|
const auto p_above = this->point(v_above);
|
||||||
const auto p_below = this->point(v_below);
|
const auto p_below = this->point(v_below);
|
||||||
const auto edge_segment = typename Geom_traits::Segment_3{p_above, p_below};
|
const auto edge_segment = typename Geom_traits::Segment_3{p_above, p_below};
|
||||||
|
|
@ -2180,25 +2178,20 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
|
|
||||||
auto test_edge = [&](Cell_handle cell, Vertex_handle v0, int index_v0, Vertex_handle v1, int index_v1,
|
auto test_edge = [&](Cell_handle cell, Vertex_handle v0, int index_v0, Vertex_handle v1, int index_v1,
|
||||||
[[maybe_unused]] int expected) {
|
[[maybe_unused]] int expected) {
|
||||||
auto value_returned = [this](bool b) {
|
auto value_returned = [this](bool b) {
|
||||||
CGAL_USE(this);
|
CGAL_USE(this);
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << cdt_3_format(" return {}\n", b);
|
std::cerr << cdt_3_format(" return {}\n", b);
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
return b;
|
return b;
|
||||||
};
|
};
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << cdt_3_format(" test_edge {} {} ", IO::oformat(v0, with_point_and_info),
|
std::cerr << cdt_3_format(" test_edge {} {} ", IO::oformat(v0, with_point_and_info),
|
||||||
IO::oformat(v1, with_point_and_info));
|
IO::oformat(v1, with_point_and_info));
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
auto [cached_value_it, not_visited] = new_edge(v0, v1, false);
|
auto [cached_value_it, not_visited] = new_edge(v0, v1, false);
|
||||||
if(!not_visited) return value_returned(cached_value_it->second);
|
if(!not_visited) return value_returned(cached_value_it->second);
|
||||||
int v0v1_intersects_region = (v0->ccdt_3_data().is_marked(Vertex_marker::REGION_INSIDE) ||
|
int v0v1_intersects_region = (v0->ccdt_3_data().is_marked(Vertex_marker::REGION_INSIDE) ||
|
||||||
|
|
@ -2593,14 +2586,12 @@ private:
|
||||||
}
|
}
|
||||||
return vertices;
|
return vertices;
|
||||||
});
|
});
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << "region_border_vertices.size() = " << region_border_vertices.size() << "\n";
|
std::cerr << "region_border_vertices.size() = " << region_border_vertices.size() << "\n";
|
||||||
for(auto v : region_border_vertices) {
|
for(auto v : region_border_vertices) {
|
||||||
std::cerr << cdt_3_format(" {}\n", IO::oformat(v, with_point));
|
std::cerr << cdt_3_format(" {}\n", IO::oformat(v, with_point));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
for(auto v: region_border_vertices) {
|
for(auto v: region_border_vertices) {
|
||||||
v->ccdt_3_data().set_mark(Vertex_marker::REGION_BORDER);
|
v->ccdt_3_data().set_mark(Vertex_marker::REGION_BORDER);
|
||||||
}
|
}
|
||||||
|
|
@ -2669,7 +2660,6 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CGAL_CAN_USE_CXX20_FORMAT
|
|
||||||
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
std::cerr << cdt_3_format
|
std::cerr << cdt_3_format
|
||||||
("NOTE: diagonal: {:.6} {:.6} {} in tr\n",
|
("NOTE: diagonal: {:.6} {:.6} {} in tr\n",
|
||||||
|
|
@ -2710,7 +2700,6 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CGAL_CAN_USE_CXX20_FORMAT
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
@ -2788,8 +2777,7 @@ private:
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << cdt_3_format("Cavity has {} cells and {} edges, "
|
std::cerr << cdt_3_format("Cavity has {} cells and {} edges, "
|
||||||
"{} vertices in upper cavity and {} in lower, "
|
"{} vertices in upper cavity and {} in lower, "
|
||||||
"{} facets in upper cavity and {} in lower\n",
|
"{} facets in upper cavity and {} in lower\n",
|
||||||
|
|
@ -2814,7 +2802,6 @@ private:
|
||||||
// dump_facets_of_cavity(face_index, region_index, "upper", original_facets_of_upper_cavity);
|
// dump_facets_of_cavity(face_index, region_index, "upper", original_facets_of_upper_cavity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
auto register_internal_constrained_facet = [this](Facet f) { this->register_facet_to_be_constrained(f); };
|
auto register_internal_constrained_facet = [this](Facet f) { this->register_facet_to_be_constrained(f); };
|
||||||
|
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
if(this->debug_copy_triangulation_into_hole()) {
|
||||||
|
|
@ -3003,8 +2990,7 @@ private:
|
||||||
const auto upper_inner_map = tr().create_triangulation_inner_map(
|
const auto upper_inner_map = tr().create_triangulation_inner_map(
|
||||||
upper_cavity_triangulation, map_upper_cavity_vertices_to_ambient_vertices, false);
|
upper_cavity_triangulation, map_upper_cavity_vertices_to_ambient_vertices, false);
|
||||||
|
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_copy_triangulation_into_hole()) {
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
|
||||||
std::cerr << "upper_inner_map:\n";
|
std::cerr << "upper_inner_map:\n";
|
||||||
for(auto [vt, _] : upper_inner_map) {
|
for(auto [vt, _] : upper_inner_map) {
|
||||||
std::cerr << cdt_3_format(" {:.6}, {:.6}, {:.6})\n",
|
std::cerr << cdt_3_format(" {:.6}, {:.6}, {:.6})\n",
|
||||||
|
|
@ -3013,7 +2999,6 @@ private:
|
||||||
IO::oformat(vt[2], with_point));
|
IO::oformat(vt[2], with_point));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
if(this->debug_copy_triangulation_into_hole()) {
|
||||||
std::cerr << "# glu the lower triangulation of the cavity\n";
|
std::cerr << "# glu the lower triangulation of the cavity\n";
|
||||||
}
|
}
|
||||||
|
|
@ -3042,8 +3027,8 @@ private:
|
||||||
{
|
{
|
||||||
const auto lower_inner_map = tr().create_triangulation_inner_map(
|
const auto lower_inner_map = tr().create_triangulation_inner_map(
|
||||||
lower_cavity_triangulation, map_lower_cavity_vertices_to_ambient_vertices, false);
|
lower_cavity_triangulation, map_lower_cavity_vertices_to_ambient_vertices, false);
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
#if CGAL_CAN_USE_CXX20_FORMAT
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_copy_triangulation_into_hole()) {
|
||||||
std::cerr << "outer_map:\n";
|
std::cerr << "outer_map:\n";
|
||||||
for(auto [vt, _] : outer_map) {
|
for(auto [vt, _] : outer_map) {
|
||||||
std::cerr << cdt_3_format(" {:.6}, {:.6}, {:.6})\n",
|
std::cerr << cdt_3_format(" {:.6}, {:.6}, {:.6})\n",
|
||||||
|
|
@ -3056,7 +3041,7 @@ private:
|
||||||
write_facets(out, *this, std::ranges::views::values(outer_map));
|
write_facets(out, *this, std::ranges::views::values(outer_map));
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
#endif // CGAL_CAN_USE_CXX20_FORMAT
|
||||||
this->copy_triangulation_into_hole(map_lower_cavity_vertices_to_ambient_vertices, std::move(outer_map), lower_inner_map,
|
this->copy_triangulation_into_hole(map_lower_cavity_vertices_to_ambient_vertices, std::move(outer_map), lower_inner_map,
|
||||||
this->new_cells_output_iterator());
|
this->new_cells_output_iterator());
|
||||||
}
|
}
|
||||||
|
|
@ -3217,14 +3202,12 @@ private:
|
||||||
tr().is_infinite(v) ? cavity_triangulation.infinite_vertex() : cavity_triangulation.insert(this->point(v));
|
tr().is_infinite(v) ? cavity_triangulation.infinite_vertex() : cavity_triangulation.insert(this->point(v));
|
||||||
map_ambient_vertices_to_cavity_vertices[v] = cavity_v;
|
map_ambient_vertices_to_cavity_vertices[v] = cavity_v;
|
||||||
map_cavity_vertices_to_ambient_vertices[cavity_v] = v;
|
map_cavity_vertices_to_ambient_vertices[cavity_v] = v;
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_regions()) {
|
||||||
if(this->debug_regions()) {
|
|
||||||
std::cerr << cdt_3_format("inserted {}cavity vertex {:.6} -> {:.6}\n",
|
std::cerr << cdt_3_format("inserted {}cavity vertex {:.6} -> {:.6}\n",
|
||||||
extra,
|
extra,
|
||||||
IO::oformat(cavity_v, with_point_and_info),
|
IO::oformat(cavity_v, with_point_and_info),
|
||||||
IO::oformat(v, with_point_and_info));
|
IO::oformat(v, with_point_and_info));
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
return cavity_v;
|
return cavity_v;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -3464,25 +3447,21 @@ private:
|
||||||
bool restore_face(CDT_3_signed_index face_index) {
|
bool restore_face(CDT_3_signed_index face_index) {
|
||||||
CDT_2& non_const_cdt_2 = face_cdt_2[face_index];
|
CDT_2& non_const_cdt_2 = face_cdt_2[face_index];
|
||||||
const CDT_2& cdt_2 = non_const_cdt_2;
|
const CDT_2& cdt_2 = non_const_cdt_2;
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_copy_triangulation_into_hole()) {
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
|
||||||
std::cerr << cdt_3_format("restore_face({}): CDT_2 has {} vertices\n", face_index, cdt_2.number_of_vertices());
|
std::cerr << cdt_3_format("restore_face({}): CDT_2 has {} vertices\n", face_index, cdt_2.number_of_vertices());
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
for(const auto& edge : cdt_2.finite_edges()) {
|
for(const auto& edge : cdt_2.finite_edges()) {
|
||||||
const auto fh = edge.first;
|
const auto fh = edge.first;
|
||||||
const auto i = edge.second;
|
const auto i = edge.second;
|
||||||
const auto va_3d = fh->vertex(cdt_2.cw(i))->info().vertex_handle_3d;
|
const auto va_3d = fh->vertex(cdt_2.cw(i))->info().vertex_handle_3d;
|
||||||
const auto vb_3d = fh->vertex(cdt_2.ccw(i))->info().vertex_handle_3d;
|
const auto vb_3d = fh->vertex(cdt_2.ccw(i))->info().vertex_handle_3d;
|
||||||
const bool is_3d = this->is_edge(va_3d, vb_3d);
|
const bool is_3d = this->is_edge(va_3d, vb_3d);
|
||||||
#if CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
if constexpr (cdt_3_can_use_cxx20_format()) if(this->debug_copy_triangulation_into_hole()) {
|
||||||
if(this->debug_copy_triangulation_into_hole()) {
|
|
||||||
std::cerr << cdt_3_format("Edge is 3D: {:6} ({} , {})\n",
|
std::cerr << cdt_3_format("Edge is 3D: {:6} ({} , {})\n",
|
||||||
is_3d,
|
is_3d,
|
||||||
IO::oformat(va_3d, with_point_and_info),
|
IO::oformat(va_3d, with_point_and_info),
|
||||||
IO::oformat(vb_3d, with_point_and_info));
|
IO::oformat(vb_3d, with_point_and_info));
|
||||||
}
|
}
|
||||||
#endif // CGAL_CDT_3_CAN_USE_CXX20_FORMAT
|
|
||||||
CGAL_assertion(is_3d || !cdt_2.is_constrained(edge));
|
CGAL_assertion(is_3d || !cdt_2.is_constrained(edge));
|
||||||
fh->info().is_edge_also_in_3d_triangulation[unsigned(i)] = is_3d;
|
fh->info().is_edge_also_in_3d_triangulation[unsigned(i)] = is_3d;
|
||||||
const auto reverse_edge = cdt_2.mirror_edge(edge);
|
const auto reverse_edge = cdt_2.mirror_edge(edge);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue