From aa4e1913d116d91d6fa723720edeaa0797cf7ad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Fri, 26 Apr 2019 16:33:10 +0200 Subject: [PATCH] Partial revert of 42a1c49066898beb34f0d5401d4eb7a3cb75941f Halfedges in TDS2 and T2 were being used to get halfedges in the T2 graph traits We now do it differently and without polluting the packages T2 and TDS2 --- .../CGAL/Triangulation_data_structure_2.h | 16 +--- .../CGAL/Triangulation_ds_iterators_2.h | 87 ++++++++----------- .../include/CGAL/Triangulation_2.h | 19 ---- 3 files changed, 40 insertions(+), 82 deletions(-) diff --git a/TDS_2/include/CGAL/Triangulation_data_structure_2.h b/TDS_2/include/CGAL/Triangulation_data_structure_2.h index ef05a3bb57e..ffacab72a17 100644 --- a/TDS_2/include/CGAL/Triangulation_data_structure_2.h +++ b/TDS_2/include/CGAL/Triangulation_data_structure_2.h @@ -61,8 +61,7 @@ class Triangulation_data_structure_2 typedef typename Vb::template Rebind_TDS::Other Vertex_base; typedef typename Fb::template Rebind_TDS::Other Face_base; - friend class Triangulation_ds_edge_iterator_2; - friend class Triangulation_ds_edge_iterator_2; + friend class Triangulation_ds_edge_iterator_2; friend class Triangulation_ds_face_circulator_2; friend class Triangulation_ds_edge_circulator_2; friend class Triangulation_ds_vertex_circulator_2; @@ -90,9 +89,7 @@ public: typedef typename Face_range::iterator Face_iterator; typedef typename Vertex_range::iterator Vertex_iterator; - typedef Triangulation_ds_edge_iterator_2 Edge_iterator; - typedef Triangulation_ds_edge_iterator_2 Halfedge_iterator; typedef Triangulation_ds_face_circulator_2 Face_circulator; typedef Triangulation_ds_vertex_circulator_2 Vertex_circulator; @@ -100,8 +97,7 @@ public: typedef Vertex_iterator Vertex_handle; typedef Face_iterator Face_handle; - - typedef std::pair Edge; + typedef std::pair Edge; typedef std::list List_edges; @@ -187,15 +183,7 @@ public: Edge_iterator edges_end() const { return Edge_iterator(this,1); } - - Halfedge_iterator halfedges_begin() const { - return Halfedge_iterator(this); - } - Halfedge_iterator halfedges_end() const { - return Halfedge_iterator(this,1); - } - Face_circulator incident_faces(Vertex_handle v, Face_handle f = Face_handle()) const{ return Face_circulator(v,f); diff --git a/TDS_2/include/CGAL/Triangulation_ds_iterators_2.h b/TDS_2/include/CGAL/Triangulation_ds_iterators_2.h index 610e72c254f..303f7d8afa8 100644 --- a/TDS_2/include/CGAL/Triangulation_ds_iterators_2.h +++ b/TDS_2/include/CGAL/Triangulation_ds_iterators_2.h @@ -31,8 +31,7 @@ namespace CGAL { - // with Once set to false, the Edge is reported twice, seen from the two adjacentfaces - template +template class Triangulation_ds_edge_iterator_2 { public: @@ -47,7 +46,7 @@ public: typedef std::ptrdiff_t difference_type; typedef std::bidirectional_iterator_tag iterator_category; - typedef Triangulation_ds_edge_iterator_2 Edge_iterator; + typedef Triangulation_ds_edge_iterator_2 Edge_iterator; private: const Tds* _tds; @@ -71,15 +70,14 @@ public: private: void increment(); void decrement(); - bool associated_edge(CGAL::Tag_true); - bool associated_edge(CGAL::Tag_false); + bool associated_edge(); }; // Edge iterator implementation -template -Triangulation_ds_edge_iterator_2 :: +template +Triangulation_ds_edge_iterator_2:: Triangulation_ds_edge_iterator_2(const Tds * tds) : _tds(tds) { @@ -90,12 +88,12 @@ Triangulation_ds_edge_iterator_2(const Tds * tds) } pos = _tds->faces().begin(); if (_tds->dimension() == 1) edge.second = 2; - while ( pos != _tds->faces().end() - && !associated_edge(Boolean_tag()) ) increment(); + while ( pos != _tds->faces().end() && !associated_edge()) + increment(); } -template -Triangulation_ds_edge_iterator_2 :: +template +Triangulation_ds_edge_iterator_2:: Triangulation_ds_edge_iterator_2(const Tds * tds, int ) : _tds(tds) { @@ -105,19 +103,19 @@ Triangulation_ds_edge_iterator_2(const Tds * tds, int ) } -template +template inline bool -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2:: operator==(const Edge_iterator& fi) const { return _tds == fi._tds && pos == fi.pos && edge.second == fi.edge.second; } -template +template inline void -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2:: increment() { CGAL_triangulation_precondition(_tds->dimension() >= 1); @@ -127,10 +125,10 @@ increment() return; } -template +template inline void -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2:: decrement() { CGAL_triangulation_precondition(_tds->dimension() >= 1); @@ -140,57 +138,48 @@ decrement() return; } -template +template inline bool -Triangulation_ds_edge_iterator_2 :: -associated_edge(Tag_true) +Triangulation_ds_edge_iterator_2:: +associated_edge() { if (_tds->dimension() == 1) {return true;} return Face_handle(pos) < pos->neighbor(edge.second); } -template +template inline -bool -Triangulation_ds_edge_iterator_2 :: -associated_edge(Tag_false) -{ - return true; -} - -template -inline -Triangulation_ds_edge_iterator_2& -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2& +Triangulation_ds_edge_iterator_2:: operator++() { //CGAL_triangulation_precondition(pos != Iterator_base() && // pos != _tds->faces().end()); do increment(); - while( pos != _tds->faces().end() && !associated_edge(Boolean_tag())); + while( pos != _tds->faces().end() && !associated_edge()); return *this; } -template +template inline -Triangulation_ds_edge_iterator_2& -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2& +Triangulation_ds_edge_iterator_2:: operator--() { // CGAL_triangulation_precondition(pos != Iterator_base() // && *this != Edge_iterator(_tds)); do decrement(); - while ( !associated_edge(Boolean_tag()) && *this != Edge_iterator(_tds) ); + while ( !associated_edge() && *this != Edge_iterator(_tds) ); return *this; } -template +template inline -Triangulation_ds_edge_iterator_2 -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2 +Triangulation_ds_edge_iterator_2:: operator++(int) { Edge_iterator tmp(*this); @@ -198,10 +187,10 @@ operator++(int) return tmp; } -template +template inline -Triangulation_ds_edge_iterator_2 -Triangulation_ds_edge_iterator_2 :: +Triangulation_ds_edge_iterator_2 +Triangulation_ds_edge_iterator_2:: operator--(int) { Edge_iterator tmp(*this); @@ -209,20 +198,20 @@ operator--(int) return tmp; } -template +template inline -typename Triangulation_ds_edge_iterator_2::Edge* -Triangulation_ds_edge_iterator_2 :: +typename Triangulation_ds_edge_iterator_2::Edge* +Triangulation_ds_edge_iterator_2:: operator->() const { edge.first = pos; return &edge; } -template +template inline -typename Triangulation_ds_edge_iterator_2::Edge& -Triangulation_ds_edge_iterator_2 :: +typename Triangulation_ds_edge_iterator_2::Edge& +Triangulation_ds_edge_iterator_2:: operator*() const { edge.first = pos; diff --git a/Triangulation_2/include/CGAL/Triangulation_2.h b/Triangulation_2/include/CGAL/Triangulation_2.h index 16e355c20e4..55e445929fe 100644 --- a/Triangulation_2/include/CGAL/Triangulation_2.h +++ b/Triangulation_2/include/CGAL/Triangulation_2.h @@ -125,7 +125,6 @@ public: typedef typename Tds::Face_iterator All_faces_iterator; typedef typename Tds::Edge_iterator All_edges_iterator; - typedef typename Tds::Halfedge_iterator All_halfedges_iterator; typedef typename Tds::Vertex_iterator All_vertices_iterator; class Perturbation_order @@ -450,8 +449,6 @@ public: All_vertices_iterator all_vertices_end() const; All_edges_iterator all_edges_begin() const; All_edges_iterator all_edges_end() const; - All_halfedges_iterator all_halfedges_begin() const; - All_halfedges_iterator all_halfedges_end() const; //for compatibility with previous versions Face_iterator faces_begin() const {return finite_faces_begin();} @@ -3183,22 +3180,6 @@ all_edges_end() const return _tds.edges_end(); } -template -typename Triangulation_2::All_halfedges_iterator -Triangulation_2:: -all_halfedges_begin() const -{ - return _tds.halfedges_begin(); -} - -template -typename Triangulation_2::All_halfedges_iterator -Triangulation_2:: -all_halfedges_end() const -{ - return _tds.halfedges_end(); -} - template inline typename Triangulation_2::Face_circulator