diff --git a/Triangulation_3/include/CGAL/Constrained_Delaunay_triangulation_3.h b/Triangulation_3/include/CGAL/Constrained_Delaunay_triangulation_3.h index f541a5fc81a..47348de414d 100644 --- a/Triangulation_3/include/CGAL/Constrained_Delaunay_triangulation_3.h +++ b/Triangulation_3/include/CGAL/Constrained_Delaunay_triangulation_3.h @@ -96,6 +96,13 @@ public: } }; +enum class CDT_3_cell_marker { + CLEAR = 0, + IN_REGION = 1, + ON_REGION_BOUNDARY = 2, + nb_of_markers +}; + template > class Constrained_Delaunay_triangulation_cell_base_3 : public Base_with_time_stamp @@ -103,6 +110,7 @@ class Constrained_Delaunay_triangulation_cell_base_3 using Base = Base_with_time_stamp; std::array face_id = { -1, -1, -1, -1 }; std::array facet_2d = {nullptr, nullptr, nullptr, nullptr}; + std::bitset(CDT_3_cell_marker::nb_of_markers)> markers; public: // To get correct cell type in TDS @@ -115,6 +123,11 @@ public: // Constructor using Base::Base; + bool is_marked(CDT_3_cell_marker m) const { return markers.test(static_cast(m)); } + void set_mark(CDT_3_cell_marker m) { markers.set(static_cast(m)); } + void clear_mark(CDT_3_cell_marker m) { markers.reset(static_cast(m)); } + void clear_marks() { markers.reset(); } + bool is_facet_constrained(int i) const { return face_id[unsigned(i)] >= 0; } template