From eddb7b7dbef1bad815687184dacd8bd61aec2c77 Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Tue, 15 Mar 2016 14:30:54 +0100 Subject: [PATCH 1/2] Add hash_value for edge_descriptor of HDS --- .../CGAL/boost/graph/graph_traits_HalfedgeDS.h | 5 ++++- Hash_map/test/Hash_map/Hash.cpp | 12 ++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/BGL/include/CGAL/boost/graph/graph_traits_HalfedgeDS.h b/BGL/include/CGAL/boost/graph/graph_traits_HalfedgeDS.h index f7185e8ae34..1c8e90bb683 100644 --- a/BGL/include/CGAL/boost/graph/graph_traits_HalfedgeDS.h +++ b/BGL/include/CGAL/boost/graph/graph_traits_HalfedgeDS.h @@ -135,6 +135,10 @@ struct HDS_edge { HDS_edge opposite_prev() { return HDS_edge(halfedge_->opposite()->prev()); } + friend std::size_t hash_value(const HDS_edge& i) + { + return hash_value(i.halfedge()); + } private: Halfedge_handle halfedge_; @@ -235,7 +239,6 @@ namespace std { struct hash > { std::size_t operator()(const CGAL::internal::HDS_edge& e) const { - std::cerr << "HDS_edge HashFct" << std::endl; std::hash fct; return fct(e.halfedge()); } diff --git a/Hash_map/test/Hash_map/Hash.cpp b/Hash_map/test/Hash_map/Hash.cpp index 9a4e5514016..e9ea0b5b31a 100644 --- a/Hash_map/test/Hash_map/Hash.cpp +++ b/Hash_map/test/Hash_map/Hash.cpp @@ -36,14 +36,14 @@ template void fct(const P& ) { - typedef typename boost::graph_traits

::vertex_descriptor vertex_descriptor; + typedef typename boost::graph_traits

::edge_descriptor edge_descriptor; - std::map M; - vertex_descriptor vd; - M.find(vd); + std::map M; + edge_descriptor ed; + M.find(ed); - boost::unordered_map U; - U[vd] = 12; + boost::unordered_map U; + U[ed] = 12; } void fct2() From e7615c199c867daebd2ecddc3c8021820ef0a10f Mon Sep 17 00:00:00 2001 From: Andreas Fabri Date: Wed, 13 Apr 2016 11:25:38 +0200 Subject: [PATCH 2/2] better test coverage --- Hash_map/test/Hash_map/Hash.cpp | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/Hash_map/test/Hash_map/Hash.cpp b/Hash_map/test/Hash_map/Hash.cpp index e9ea0b5b31a..36e99a99eeb 100644 --- a/Hash_map/test/Hash_map/Hash.cpp +++ b/Hash_map/test/Hash_map/Hash.cpp @@ -32,18 +32,16 @@ typedef CGAL::Delaunay_triangulation_3 Triangulation_3; typedef CGAL::Linear_cell_complex<3, 3> Linear_cell_complex_3; -template +template void fct(const P& ) { - typedef typename boost::graph_traits

::edge_descriptor edge_descriptor; + std::map M; + Descriptor d; + M.find(d); - std::map M; - edge_descriptor ed; - M.find(ed); - - boost::unordered_map U; - U[ed] = 12; + boost::unordered_map U; + U[d] = 12; } void fct2() @@ -82,19 +80,30 @@ fct3(const P& ) U[vd] = 12; } +template +void +fct4(const P& p) +{ + fct::vertex_descriptor>(p); + fct::halfedge_descriptor>(p); + fct::edge_descriptor>(p); + fct::face_descriptor>(p); +} + int main() { Arrangement_2 A; - fct(A); + fct::vertex_descriptor>(A); + fct::edge_descriptor>(A); Polyhedron P; - fct(P); + fct4(P); Surface_mesh S; - fct(S); + fct4(S); Triangulation_2 T; - fct(T); + fct4(T); fct2();