add graph_has_property for lcc

This commit is contained in:
Guillaume Damiand 2017-04-18 16:18:03 -04:00
parent 755272148a
commit f8f2506a38
1 changed files with 55 additions and 45 deletions

View File

@ -352,15 +352,14 @@ struct LCC_property_map<vertex_point_t>
// //
// external indices // external indices
// //
template <> /*
template <>
struct LCC_property_map<edge_external_index_t> struct LCC_property_map<edge_external_index_t>
{ {
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
struct bind_ struct bind_
{ {
// typedef internal::Polyhedron_edge_index_map_external<CGAL_LCC_TYPE> type; typedef internal::Polyhedron_edge_index_map_external<CGAL_LCC_TYPE> type;
typedef internal::Edge_index_accessor<
typename boost::graph_traits<CGAL_LCC_TYPE>::edge_descriptor> type;
typedef type const_type; typedef type const_type;
}; };
}; };
@ -371,8 +370,7 @@ struct LCC_property_map<halfedge_external_index_t>
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
struct bind_ struct bind_
{ {
//typedef internal::Polyhedron_index_map_external< typedef internal::Polyhedron_index_map_external<
typedef internal::Index_accessor<CGAL_LCC_TYPE,
typename boost::graph_traits<CGAL_LCC_TYPE >::halfedge_descriptor> type; typename boost::graph_traits<CGAL_LCC_TYPE >::halfedge_descriptor> type;
typedef type const_type; typedef type const_type;
}; };
@ -385,9 +383,8 @@ struct LCC_property_map<vertex_external_index_t>
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
struct bind_ struct bind_
{ {
//typedef internal::Polyhedron_index_map_external< typedef internal::Polyhedron_index_map_external<
typedef internal::Index_accessor<CGAL_LCC_TYPE, typename boost::graph_traits<CGAL_LCC_TYPE >::vertex_descriptor> type;
typename boost::graph_traits<CGAL_LCC_TYPE >::vertex_descriptor> type;
typedef type const_type; typedef type const_type;
}; };
}; };
@ -398,55 +395,53 @@ struct LCC_property_map<face_external_index_t>
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
struct bind_ struct bind_
{ {
//typedef internal::Polyhedron_index_map_external< typedef internal::Polyhedron_index_map_external<
typedef internal::Index_accessor<CGAL_LCC_TYPE, typename boost::graph_traits<CGAL_LCC_TYPE >::face_descriptor> type;
typename boost::graph_traits<CGAL_LCC_TYPE >::face_descriptor> type;
typedef type const_type; typedef type const_type;
}; };
}; };
*/
} // namespace CGAL } // namespace CGAL
namespace CGAL{ namespace CGAL{
/*
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_index_t/*boost::halfedge_external_index_t*/ >::const_type typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t >::const_type
get(boost::halfedge_external_index_t, CGAL_LCC_TYPE const&) get(boost::halfedge_external_index_t, CGAL_LCC_TYPE const&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_index_t >::const_type(); CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
/* CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t>:: return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t>::
const_type(halfedges(ncmap).begin(), halfedges(ncmap).end(), num_halfedges(ncmap)); */ const_type(halfedges(ncmap).begin(), halfedges(ncmap).end(), num_halfedges(ncmap));
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_index_t /*boost::vertex_external_index_t*/ >::const_type typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t >::const_type
get(boost::vertex_external_index_t, CGAL_LCC_TYPE const&) get(boost::vertex_external_index_t, CGAL_LCC_TYPE const&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_index_t >::const_type(); CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
/* CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t>:: return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t>::
const_type(vertices(ncmap).begin(), vertices(ncmap).end(), num_vertices(ncmap)); */ const_type(vertices(ncmap).begin(), vertices(ncmap).end(), num_vertices(ncmap));
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::edge_index_t/*boost::edge_external_index_t*/ >::const_type typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t >::const_type
get(boost::edge_external_index_t, CGAL_LCC_TYPE const&) get(boost::edge_external_index_t, CGAL_LCC_TYPE const&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_index_t >::const_type(); return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t>::
/*return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t>:: const_type(const_cast<CGAL_LCC_TYPE&>(cmap));
const_type(const_cast<CGAL_LCC_TYPE&>(cmap));*/
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::face_index_t /* boost::face_external_index_t*/ >::const_type typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t >::const_type
get(boost::face_external_index_t, CGAL_LCC_TYPE const&) get(boost::face_external_index_t, CGAL_LCC_TYPE const&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::face_index_t >::const_type(); CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
/*CGAL_LCC_TYPE& ncmap=const_cast<CGAL_LCC_TYPE&>(cmap);
return typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t>:: return typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t>::
const_type(faces(ncmap).begin(), faces(ncmap).end(), num_faces(ncmap));*/ const_type(faces(ncmap).begin(), faces(ncmap).end(), num_faces(ncmap));
} }
*/
/* /*
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
@ -501,43 +496,40 @@ get(boost::edge_weight_t, CGAL_LCC_TYPE const& cmap)
} }
// the same blurb for non-const // the same blurb for non-const
/*
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_index_t/*boost::halfedge_external_index_t*/ >::type typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t >::type
get(boost::halfedge_external_index_t, CGAL_LCC_TYPE&) get(boost::halfedge_external_index_t, CGAL_LCC_TYPE&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_index_t >::type(); return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t>::
/* return typename boost::property_map<CGAL_LCC_TYPE, boost::halfedge_external_index_t>:: type(halfedges(cmap).begin(), halfedges(cmap).end(), num_halfedges(cmap));
type(halfedges(cmap).begin(), halfedges(cmap).end(), num_halfedges(cmap));*/
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_index_t/*boost::vertex_external_index_t*/ >::type typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t >::type
get(boost::vertex_external_index_t, CGAL_LCC_TYPE&) get(boost::vertex_external_index_t, CGAL_LCC_TYPE&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_index_t >::type(); return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t>::
/* return typename boost::property_map<CGAL_LCC_TYPE, boost::vertex_external_index_t>:: type(vertices(cmap).begin(), vertices(cmap).end(), num_vertices(cmap));
type(vertices(cmap).begin(), vertices(cmap).end(), num_vertices(cmap));*/
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::edge_index_t/*boost::edge_external_index_t*/ >::type typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t >::type
get(boost::edge_external_index_t, CGAL_LCC_TYPE& cmap) get(boost::edge_external_index_t, CGAL_LCC_TYPE& cmap)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_index_t>::type(cmap); return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t>::
/*return typename boost::property_map<CGAL_LCC_TYPE, boost::edge_external_index_t>:: type(const_cast<CGAL_LCC_TYPE&>(cmap));
type(const_cast<CGAL_LCC_TYPE&>(cmap));*/
} }
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::face_index_t/*boost::face_external_index_t*/ >::type typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t >::type
get(boost::face_external_index_t, CGAL_LCC_TYPE&) get(boost::face_external_index_t, CGAL_LCC_TYPE&)
{ {
return typename boost::property_map<CGAL_LCC_TYPE, boost::face_index_t >::type(); return typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t>::
/*return typename boost::property_map<CGAL_LCC_TYPE, boost::face_external_index_t>:: type(faces(cmap).begin(), faces(cmap).end(), num_faces(cmap));
type(faces(cmap).begin(), faces(cmap).end(), num_faces(cmap));*/
} }
*/
template<CGAL_LCC_ARGS> template<CGAL_LCC_ARGS>
typename boost::property_map<CGAL_LCC_TYPE, boost::edge_weight_t >::type typename boost::property_map<CGAL_LCC_TYPE, boost::edge_weight_t >::type
get(boost::edge_weight_t, CGAL_LCC_TYPE & cmap) get(boost::edge_weight_t, CGAL_LCC_TYPE & cmap)
@ -570,6 +562,24 @@ struct property_map<const CGAL_LCC_TYPE, Tag>
typedef typename map_gen::const_type const_type; typedef typename map_gen::const_type const_type;
}; };
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, vertex_point_t>: CGAL::Tag_true {};
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, edge_weight_t>: CGAL::Tag_true {};
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, edge_index_t>: CGAL::Tag_true {};
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, face_index_t>: CGAL::Tag_true {};
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, halfedge_index_t>: CGAL::Tag_true {};
template<CGAL_LCC_ARGS>
struct graph_has_property<CGAL_LCC_TYPE, vertex_index_t>: CGAL::Tag_true {};
} // namespace boost } // namespace boost
#undef CGAL_LCC_ARGS #undef CGAL_LCC_ARGS