diff --git a/BGL/include/CGAL/boost/graph/Dual.h b/BGL/include/CGAL/boost/graph/Dual.h
index 53826f65fed..dc4712c3776 100644
--- a/BGL/include/CGAL/boost/graph/Dual.h
+++ b/BGL/include/CGAL/boost/graph/Dual.h
@@ -174,13 +174,41 @@ num_vertices(const CGAL::Dual
& dual)
{
return num_faces(dual.primal());
}
+
+template
+typename boost::graph_traits >::edges_size_type
+num_edges(const CGAL::Dual& dual)
+{
+ return num_edges(dual.primal());
+}
+
+template
+typename boost::graph_traits >::halfedges_size_type
+num_halfedges(const CGAL::Dual& dual)
+{
+ return num_halfedges(dual.primal());
+}
+template
+typename boost::graph_traits >::faces_size_type
+num_faces(const CGAL::Dual& dual)
+{
+ return num_vertices(dual.primal());
+}
+
template
Iterator_range >::vertex_iterator>
vertices(const CGAL::Dual& dual)
{
return faces(dual.primal());
}
+
+template
+Iterator_range >::face_iterator>
+faces(const CGAL::Dual& dual)
+{
+ return vertices(dual.primal());
+}
template
Iterator_range >::halfedge_iterator>
@@ -196,6 +224,29 @@ edges(const CGAL::Dual& dual)
return edges(dual.primal());
}
+template
+std::pair >::edge_descriptor, bool>
+edge(typename boost::graph_traits >::vertex_descriptor u,
+ typename boost::graph_traits >::vertex_descriptor v,
+ const Dual& dual)
+{
+ typename boost::graph_traits >::out_edge_iterator e, e_end;
+ for(boost::tie(e, e_end) = out_edges(u, dual); e != e_end; ++e) {
+ if(target(*e, dual) == v)
+ return std::make_pair(*e, true);
+ }
+
+ return std::make_pair(typename boost::graph_traits >::edge_descriptor(), false);
+}
+
+template
+typename boost::graph_traits >::edge_descriptor
+edge(typename boost::graph_traits >::halfedge_descriptor h,
+ const Dual& dual)
+{
+ return edge(h, dual.primal());
+}
+
template
typename boost::graph_traits >::vertex_descriptor
source(typename boost::graph_traits >::halfedge_descriptor h,
@@ -256,6 +307,22 @@ halfedge(typename boost::graph_traits >::edge_descriptor e,
{
return halfedge(e, dual.primal());
}
+
+template
+std::pair >::halfedge_descriptor, bool>
+halfedge(typename boost::graph_traits >::vertex_descriptor u,
+ typename boost::graph_traits >::vertex_descriptor v,
+ const Dual& dual)
+{
+ typename boost::graph_traits >::out_edge_iterator e, e_end;
+ for(boost::tie(e, e_end) = out_edges(u, dual); e != e_end; ++e) {
+ if(target(*e, dual) == v)
+ return std::make_pair(halfedge(*e, dual), true);
+ }
+
+ return std::make_pair(boost::graph_traits >::null_halfedge(), false);
+}
+
template
typename boost::graph_traits >::face_descriptor
face(typename boost::graph_traits >::halfedge_descriptor h,