fix the const correctness of FaceGraph and HalfedgeGraph primitives

The BGL is not const correct by design choice. Passing a const Graph as
  template parameter to the primitive type is error prone.
  This will make the life easier to the user.
This commit is contained in:
Sébastien Loriot 2014-07-02 11:28:58 +02:00
parent fd91616f51
commit e412f6c2e5
3 changed files with 17 additions and 17 deletions

View File

@ -135,18 +135,18 @@ public:
Constructs a primitive.
*/
template <class Iterator>
AABB_face_graph_triangle_primitive(Iterator it, FaceGraph& graph, VertexPointPMap vppm)
AABB_face_graph_triangle_primitive(Iterator it, const FaceGraph& graph, VertexPointPMap vppm)
: Base( Id_(*it),
Triangle_property_map(&graph,vppm),
Point_property_map(&graph,vppm) )
Triangle_property_map(const_cast<FaceGraph*>(&graph),vppm),
Point_property_map(const_cast<FaceGraph*>(&graph),vppm) )
{}
#ifndef DOXYGEN_RUNNING
template <class Iterator>
AABB_face_graph_triangle_primitive(Iterator it, FaceGraph& graph)
AABB_face_graph_triangle_primitive(Iterator it, const FaceGraph& graph)
: Base( Id_(*it),
Triangle_property_map(&graph),
Point_property_map(&graph) )
Triangle_property_map(const_cast<FaceGraph*>(&graph)),
Point_property_map(const_cast<FaceGraph*>(&graph)) )
{}
#ifndef CGAL_NO_DEPRECATED_CODE
// for backward compatibility with Polyhedron::facets_begin()
@ -171,9 +171,9 @@ public:
/// \internal
static
typename Cstr_shared_data::Shared_data
construct_shared_data(FaceGraph& graph)
construct_shared_data(const FaceGraph& graph)
{
return Cstr_shared_data::construct_shared_data(graph);
return Cstr_shared_data::construct_shared_data(const_cast<FaceGraph&>(graph));
}
};

View File

@ -121,18 +121,18 @@ public:
is available with `vppm` set to `boost::get(vertex_point, graph)`.
*/
template <class Iterator>
AABB_halfedge_graph_segment_primitive(Iterator it, HalfedgeGraph& graph, VertexPointPMap vppm)
AABB_halfedge_graph_segment_primitive(Iterator it, const HalfedgeGraph& graph, VertexPointPMap vppm)
: Base( Id_(*it),
Segment_property_map(&graph, vppm),
Point_property_map(&graph, vppm) )
Segment_property_map(const_cast<HalfedgeGraph*>(&graph), vppm),
Point_property_map(const_cast<HalfedgeGraph*>(&graph), vppm) )
{}
#ifndef DOXYGEN_RUNNING
template <class Iterator>
AABB_halfedge_graph_segment_primitive(Iterator it, HalfedgeGraph& graph)
AABB_halfedge_graph_segment_primitive(Iterator it, const HalfedgeGraph& graph)
: Base( Id_(*it),
Segment_property_map(&graph),
Point_property_map(&graph) ){}
Segment_property_map(const_cast<HalfedgeGraph*>(&graph)),
Point_property_map(const_cast<HalfedgeGraph*>(&graph)) ){}
#endif
/// \internal
@ -140,9 +140,9 @@ public:
/// \internal
static
typename Cstr_shared_data::Shared_data
construct_shared_data(HalfedgeGraph& graph)
construct_shared_data(const HalfedgeGraph& graph)
{
return Cstr_shared_data::construct_shared_data(graph);
return Cstr_shared_data::construct_shared_data(const_cast<HalfedgeGraph&>(graph));
}
};

View File

@ -479,7 +479,7 @@ struct Test {
std::cout << "Bbox - Triangle\n";
typedef CGAL::Polyhedron_3<K> Polyhedron;
typedef CGAL::AABB_face_graph_triangle_primitive<const Polyhedron> Primitive;
typedef CGAL::AABB_face_graph_triangle_primitive<Polyhedron> Primitive;
typedef CGAL::AABB_traits<K, Primitive> Traits;
typedef CGAL::AABB_tree<Traits> Tree;