mirror of https://github.com/CGAL/cgal
boost::reference_wrapper ---> std::reference_wrapper
This commit is contained in:
parent
4fb4ca2b53
commit
af337edf4d
|
|
@ -14,13 +14,13 @@
|
||||||
|
|
||||||
#include <boost/graph/graph_traits.hpp>
|
#include <boost/graph/graph_traits.hpp>
|
||||||
#include <boost/tuple/tuple.hpp>
|
#include <boost/tuple/tuple.hpp>
|
||||||
#include <boost/ref.hpp>
|
#include <utility>
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
template<typename V, typename Graph>
|
template<typename V, typename Graph>
|
||||||
struct graph_traits<
|
struct graph_traits<
|
||||||
boost::tuple<boost::reference_wrapper<V>, boost::reference_wrapper<Graph> > >
|
boost::tuple<std::reference_wrapper<V>, std::reference_wrapper<Graph> > >
|
||||||
: boost::graph_traits< Graph >
|
: boost::graph_traits< Graph >
|
||||||
{
|
{
|
||||||
typedef boost::graph_traits<Graph> Base;
|
typedef boost::graph_traits<Graph> Base;
|
||||||
|
|
@ -29,20 +29,20 @@ namespace boost
|
||||||
|
|
||||||
template<typename V, typename Graph>
|
template<typename V, typename Graph>
|
||||||
struct graph_traits<
|
struct graph_traits<
|
||||||
boost::tuple<boost::reference_wrapper<V>, boost::reference_wrapper<Graph> > const >
|
boost::tuple<std::reference_wrapper<V>, std::reference_wrapper<Graph> > const >
|
||||||
: boost::graph_traits< Graph >
|
: boost::graph_traits< Graph >
|
||||||
{};
|
{};
|
||||||
|
|
||||||
template<typename V, typename Graph, class PropertyTag>
|
template<typename V, typename Graph, class PropertyTag>
|
||||||
struct property_map<
|
struct property_map<
|
||||||
boost::tuple<boost::reference_wrapper<V>, boost::reference_wrapper<Graph> >,
|
boost::tuple<std::reference_wrapper<V>, std::reference_wrapper<Graph> >,
|
||||||
PropertyTag>
|
PropertyTag>
|
||||||
: public property_map<Graph, PropertyTag>
|
: public property_map<Graph, PropertyTag>
|
||||||
{};
|
{};
|
||||||
|
|
||||||
template<typename V, typename Graph, class PropertyTag>
|
template<typename V, typename Graph, class PropertyTag>
|
||||||
struct property_map<
|
struct property_map<
|
||||||
const boost::tuple<boost::reference_wrapper<V>, boost::reference_wrapper<Graph> >,
|
const boost::tuple<std::reference_wrapper<V>, std::reference_wrapper<Graph> >,
|
||||||
PropertyTag>
|
PropertyTag>
|
||||||
: public property_map<Graph, PropertyTag>
|
: public property_map<Graph, PropertyTag>
|
||||||
{};
|
{};
|
||||||
|
|
@ -52,11 +52,11 @@ namespace boost
|
||||||
namespace CGAL
|
namespace CGAL
|
||||||
{
|
{
|
||||||
template<typename V, typename Graph>
|
template<typename V, typename Graph>
|
||||||
boost::tuple<boost::reference_wrapper<V>,
|
boost::tuple<std::reference_wrapper<V>,
|
||||||
boost::reference_wrapper<Graph> >
|
std::reference_wrapper<Graph> >
|
||||||
make_graph_with_visitor(V& v, Graph& g)
|
make_graph_with_visitor(V& v, Graph& g)
|
||||||
{
|
{
|
||||||
return boost::make_tuple(boost::ref(v), boost::ref(g));
|
return boost::make_tuple(std::ref(v), std::ref(g));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename Graph>
|
template<typename Graph>
|
||||||
|
|
@ -67,11 +67,8 @@ public:
|
||||||
typedef typename gt::halfedge_descriptor halfedge_descriptor;
|
typedef typename gt::halfedge_descriptor halfedge_descriptor;
|
||||||
typedef typename gt::edge_descriptor edge_descriptor;
|
typedef typename gt::edge_descriptor edge_descriptor;
|
||||||
typedef typename gt::vertex_descriptor vertex_descriptor;
|
typedef typename gt::vertex_descriptor vertex_descriptor;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//// OVERLOADS FOR Visitor
|
//// OVERLOADS FOR Visitor
|
||||||
|
|
||||||
template<typename Graph>
|
template<typename Graph>
|
||||||
|
|
@ -260,119 +257,119 @@ void get(PropertyTag ptag, const Visitor_base<Graph>& w)
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::vertices_size_type
|
typename boost::graph_traits<Graph>::vertices_size_type
|
||||||
num_vertices(const boost::tuple<boost::reference_wrapper<Visitor>,
|
num_vertices(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
num_vertices(boost::unwrap_ref(w.get<0>()));
|
num_vertices(get<0>(w).get());
|
||||||
return num_vertices(boost::unwrap_ref(w.get<1>()));
|
return num_vertices(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::edges_size_type
|
typename boost::graph_traits<Graph>::edges_size_type
|
||||||
num_edges(const boost::tuple<boost::reference_wrapper<Visitor>,
|
num_edges(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
num_edges(boost::unwrap_ref(w.get<0>()));
|
num_edges(get<0>(w).get());
|
||||||
return num_edges(boost::unwrap_ref(w.get<1>()));
|
return num_edges(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::degree_size_type
|
typename boost::graph_traits<Graph>::degree_size_type
|
||||||
degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
degree(v, boost::unwrap_ref(w.get<0>()));
|
degree(v, get<0>(w).get());
|
||||||
return degree(v, boost::unwrap_ref(w.get<1>()));
|
return degree(v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::degree_size_type
|
typename boost::graph_traits<Graph>::degree_size_type
|
||||||
out_degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
out_degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
out_degree(v, boost::unwrap_ref(w.get<0>()));
|
out_degree(v, get<0>(w).get());
|
||||||
return out_degree(v, boost::unwrap_ref(w.get<1>()));
|
return out_degree(v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::degree_size_type
|
typename boost::graph_traits<Graph>::degree_size_type
|
||||||
in_degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
in_degree(typename boost::graph_traits<Graph>::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
in_degree(v, boost::unwrap_ref(w.get<0>()));
|
in_degree(v, get<0>(w).get());
|
||||||
return in_degree(v, boost::unwrap_ref(w.get<1>()));
|
return in_degree(v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::vertex_descriptor
|
typename boost::graph_traits<Graph>::vertex_descriptor
|
||||||
source(typename boost::graph_traits<Graph>::edge_descriptor e
|
source(typename boost::graph_traits<Graph>::edge_descriptor e
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> > & w)
|
std::reference_wrapper<Graph> > & w)
|
||||||
{
|
{
|
||||||
source(e, boost::unwrap_ref(w.get<0>()));
|
source(e, get<0>(w).get());
|
||||||
return source(e, boost::unwrap_ref(w.get<1>()));
|
return source(e, get<1>(w).get);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::vertex_descriptor
|
typename boost::graph_traits<Graph>::vertex_descriptor
|
||||||
target(typename boost::graph_traits<Graph>::edge_descriptor e
|
target(typename boost::graph_traits<Graph>::edge_descriptor e
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> > & w)
|
std::reference_wrapper<Graph> > & w)
|
||||||
{
|
{
|
||||||
target(e, boost::unwrap_ref(w.get<0>()));
|
target(e, get<0>(w).get());
|
||||||
return target(e, boost::unwrap_ref(w.get<1>()));
|
return target(e, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
std::pair<typename boost::graph_traits<Graph>::edge_descriptor, bool>
|
std::pair<typename boost::graph_traits<Graph>::edge_descriptor, bool>
|
||||||
edge(typename boost::graph_traits<Graph>::vertex_descriptor u
|
edge(typename boost::graph_traits<Graph>::vertex_descriptor u
|
||||||
, typename boost::graph_traits<Graph>::vertex_descriptor v
|
, typename boost::graph_traits<Graph>::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> > & w)
|
std::reference_wrapper<Graph> > & w)
|
||||||
{
|
{
|
||||||
edge(u, v, boost::unwrap_ref(w.get<0>()));
|
edge(u, v, get<0>(w).get());
|
||||||
return edge(u, v, boost::unwrap_ref(w.get<1>()));
|
return edge(u, v, get<1>(w).get);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::vertex_iterator>
|
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::vertex_iterator>
|
||||||
vertices(const boost::tuple<boost::reference_wrapper<Visitor>,
|
vertices(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
vertices(boost::unwrap_ref(w.get<0>()));
|
vertices(get<0>(w).get());
|
||||||
return vertices(boost::unwrap_ref(w.get<1>()));
|
return vertices(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::edge_iterator>
|
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::edge_iterator>
|
||||||
edges(const boost::tuple<boost::reference_wrapper<Visitor>,
|
edges(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
edges(boost::unwrap_ref(w.get<0>()));
|
edges(get<0>(w).get());
|
||||||
return edges(boost::unwrap_ref(w.get<1>()));
|
return edges(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::in_edge_iterator>
|
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::in_edge_iterator>
|
||||||
in_edges(typename boost::graph_traits<Graph>::vertex_descriptor u
|
in_edges(typename boost::graph_traits<Graph>::vertex_descriptor u
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
in_edges(u, boost::unwrap_ref(w.get<0>()));
|
in_edges(u, get<0>(w).get());
|
||||||
return in_edges(u, boost::unwrap_ref(w.get<1>()));
|
return in_edges(u, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::out_edge_iterator>
|
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::out_edge_iterator>
|
||||||
out_edges(typename boost::graph_traits<Graph>::vertex_descriptor u
|
out_edges(typename boost::graph_traits<Graph>::vertex_descriptor u
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
out_edges(u, boost::unwrap_ref(w.get<0>()));
|
out_edges(u, get<0>(w).get());
|
||||||
return out_edges(u, boost::unwrap_ref(w.get<1>()));
|
return out_edges(u, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -381,72 +378,72 @@ out_edges(typename boost::graph_traits<Graph>::vertex_descriptor u
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::vertex_descriptor
|
typename boost::graph_traits< Graph >::vertex_descriptor
|
||||||
add_vertex(boost::tuple<boost::reference_wrapper<Visitor>,
|
add_vertex(boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
add_vertex(boost::unwrap_ref(w.get<0>()));
|
add_vertex(get<0>(w).get());
|
||||||
return add_vertex(boost::unwrap_ref(w.get<1>()));
|
return add_vertex(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::vertex_descriptor
|
typename boost::graph_traits< Graph >::vertex_descriptor
|
||||||
add_vertex(const typename boost::graph_traits<Graph >::vertex_property_type& p
|
add_vertex(const typename boost::graph_traits<Graph >::vertex_property_type& p
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
add_vertex(p, boost::unwrap_ref(w.get<0>()));
|
add_vertex(p, get<0>(w).get());
|
||||||
return add_vertex(p, boost::unwrap_ref(w.get<1>()));
|
return add_vertex(p, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
remove_vertex(typename boost::graph_traits< Graph >::vertex_descriptor v
|
remove_vertex(typename boost::graph_traits< Graph >::vertex_descriptor v
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
remove_vertex(v, boost::unwrap_ref(w.get<0>()));
|
remove_vertex(v, get<0>(w).get());
|
||||||
remove_vertex(v, boost::unwrap_ref(w.get<1>()));
|
remove_vertex(v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::edge_descriptor
|
typename boost::graph_traits< Graph >::edge_descriptor
|
||||||
add_edge(boost::tuple<boost::reference_wrapper<Visitor>,
|
add_edge(boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
add_edge(boost::unwrap_ref(w.get<0>()));
|
add_edge(get<0>(w).get());
|
||||||
return add_edge(boost::unwrap_ref(w.get<1>()));
|
return add_edge(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
remove_edge(typename boost::graph_traits< Graph >::edge_descriptor e
|
remove_edge(typename boost::graph_traits< Graph >::edge_descriptor e
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
remove_edge(e, boost::unwrap_ref(w.get<0>()));
|
remove_edge(e, get<0>(w).get());
|
||||||
remove_edge(e, boost::unwrap_ref(w.get<1>()));
|
remove_edge(e, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
set_target(typename boost::graph_traits< Graph >::halfedge_descriptor h1
|
set_target(typename boost::graph_traits< Graph >::halfedge_descriptor h1
|
||||||
, typename boost::graph_traits< Graph >::vertex_descriptor v
|
, typename boost::graph_traits< Graph >::vertex_descriptor v
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
set_target(h1, v, boost::unwrap_ref(w.get<0>()));
|
set_target(h1, v, get<0>(w).get());
|
||||||
set_target(h1, v, boost::unwrap_ref(w.get<1>()));
|
set_target(h1, v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
set_next(typename boost::graph_traits< Graph >::halfedge_descriptor h1
|
set_next(typename boost::graph_traits< Graph >::halfedge_descriptor h1
|
||||||
, typename boost::graph_traits< Graph >::halfedge_descriptor h2
|
, typename boost::graph_traits< Graph >::halfedge_descriptor h2
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor >,
|
, boost::tuple<std::reference_wrapper<Visitor >,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
set_next(h1, h2, boost::unwrap_ref(w.get<0>()));
|
set_next(h1, h2, get<0>(w).get());
|
||||||
set_next(h1, h2, boost::unwrap_ref(w.get<1>()));
|
set_next(h1, h2, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -454,65 +451,65 @@ set_next(typename boost::graph_traits< Graph >::halfedge_descriptor h1
|
||||||
//
|
//
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::face_descriptor
|
typename boost::graph_traits< Graph >::face_descriptor
|
||||||
add_face(boost::tuple<boost::reference_wrapper<Visitor>,
|
add_face(boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
add_face(boost::unwrap_ref(w.get<0>()));
|
add_face(get<0>(w).get());
|
||||||
return add_face(boost::unwrap_ref(w.get<1>()));
|
return add_face(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class InputIterator, class Graph, class Visitor>
|
template <class InputIterator, class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::face_descriptor
|
typename boost::graph_traits< Graph >::face_descriptor
|
||||||
add_face(InputIterator begin,
|
add_face(InputIterator begin,
|
||||||
InputIterator end,
|
InputIterator end,
|
||||||
boost::tuple<boost::reference_wrapper<Visitor>,
|
boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
add_face(begin, end, boost::unwrap_ref(w.get<0>()));
|
add_face(begin, end, get<0>(w).get());
|
||||||
return add_face(begin, end, boost::unwrap_ref(w.get<1>()));
|
return add_face(begin, end, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
remove_face(typename boost::graph_traits< Graph >::face_descriptor f
|
remove_face(typename boost::graph_traits< Graph >::face_descriptor f
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
remove_face(f, boost::unwrap_ref(w.get<0>()));
|
remove_face(f, get<0>(w).get());
|
||||||
return remove_face(f, boost::unwrap_ref(w.get<1>()));
|
return remove_face(f, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
set_face(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
set_face(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, typename boost::graph_traits< Graph >::face_descriptor f
|
, typename boost::graph_traits< Graph >::face_descriptor f
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
set_face(h, f, boost::unwrap_ref(w.get<0>()));
|
set_face(h, f, get<0>(w).get());
|
||||||
set_face(h, f, boost::unwrap_ref(w.get<1>()));
|
set_face(h, f, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
set_halfedge(typename boost::graph_traits< Graph >::face_descriptor f
|
set_halfedge(typename boost::graph_traits< Graph >::face_descriptor f
|
||||||
, typename boost::graph_traits< Graph >::halfedge_descriptor h
|
, typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, boost::tuple<boost::reference_wrapper<Visitor>,
|
, boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
set_halfedge(f, h, boost::unwrap_ref(w.get<0>()));
|
set_halfedge(f, h, get<0>(w).get());
|
||||||
set_halfedge(f, h, boost::unwrap_ref(w.get<1>()));
|
set_halfedge(f, h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
void
|
void
|
||||||
set_halfedge(typename boost::graph_traits< Graph >::vertex_descriptor v
|
set_halfedge(typename boost::graph_traits< Graph >::vertex_descriptor v
|
||||||
, typename boost::graph_traits< Graph >::halfedge_descriptor h
|
, typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
set_halfedge(v, h, boost::unwrap_ref(w.get<0>()));
|
set_halfedge(v, h, get<0>(w).get());
|
||||||
set_halfedge(v, h, boost::unwrap_ref(w.get<1>()));
|
set_halfedge(v, h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -521,31 +518,31 @@ boost::reference_wrapper<Graph> >& w)
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::edge_descriptor
|
typename boost::graph_traits< Graph >::edge_descriptor
|
||||||
edge(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
edge(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
edge(h, boost::unwrap_ref(w.get<0>()));
|
edge(h, get<0>(w).get());
|
||||||
return edge(h, boost::unwrap_ref(w.get<1>()));
|
return edge(h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
halfedge(typename boost::graph_traits< Graph >::edge_descriptor e
|
halfedge(typename boost::graph_traits< Graph >::edge_descriptor e
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
halfedge(e, boost::unwrap_ref(w.get<0>()));
|
halfedge(e, get<0>(w).get());
|
||||||
return halfedge(e, boost::unwrap_ref(w.get<1>()));
|
return halfedge(e, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
halfedge(typename boost::graph_traits< Graph >::vertex_descriptor v
|
halfedge(typename boost::graph_traits< Graph >::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
halfedge(v, boost::unwrap_ref(w.get<0>()));
|
halfedge(v, get<0>(w).get());
|
||||||
return halfedge(v, boost::unwrap_ref(w.get<1>()));
|
return halfedge(v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
|
|
@ -553,58 +550,58 @@ std::pair< typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
, bool>
|
, bool>
|
||||||
halfedge(typename boost::graph_traits< Graph >::vertex_descriptor u
|
halfedge(typename boost::graph_traits< Graph >::vertex_descriptor u
|
||||||
, typename boost::graph_traits< Graph >::vertex_descriptor v
|
, typename boost::graph_traits< Graph >::vertex_descriptor v
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
halfedge(u, v, boost::unwrap_ref(w.get<0>()));
|
halfedge(u, v, get<0>(w).get());
|
||||||
return halfedge(u, v, boost::unwrap_ref(w.get<1>()));
|
return halfedge(u, v, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
opposite(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
opposite(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
opposite(h, boost::unwrap_ref(w.get<0>()));
|
opposite(h, get<0>(w).get());
|
||||||
return opposite(h, boost::unwrap_ref(w.get<1>()));
|
return opposite(h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::vertex_descriptor
|
typename boost::graph_traits< Graph >::vertex_descriptor
|
||||||
source(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
source(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>,
|
, const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
source(h, boost::unwrap_ref(w.get<0>()));
|
source(h, get<0>(w).get());
|
||||||
return source(h, boost::unwrap_ref(w.get<1>()));
|
return source(h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::vertex_descriptor
|
typename boost::graph_traits< Graph >::vertex_descriptor
|
||||||
target(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
target(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
, const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
target(h, boost::unwrap_ref(w.get<0>()));
|
target(h, get<0>(w).get());
|
||||||
return target(h, boost::unwrap_ref(w.get<1>()));
|
return target(h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
next(typename boost::graph_traits< Graph >::halfedge_descriptor outedge
|
next(typename boost::graph_traits< Graph >::halfedge_descriptor outedge
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
, const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
next(outedge, boost::unwrap_ref(w.get<0>()));
|
next(outedge, get<0>(w).get());
|
||||||
return next(outedge, boost::unwrap_ref(w.get<1>()));
|
return next(outedge, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
prev(typename boost::graph_traits< Graph >::halfedge_descriptor outedge
|
prev(typename boost::graph_traits< Graph >::halfedge_descriptor outedge
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
, const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
prev(outedge, boost::unwrap_ref(w.get<0>()));
|
prev(outedge, get<0>(w).get());
|
||||||
return prev(outedge, boost::unwrap_ref(w.get<1>()));
|
return prev(outedge, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
@ -612,73 +609,73 @@ prev(typename boost::graph_traits< Graph >::halfedge_descriptor outedge
|
||||||
//
|
//
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
CGAL::Iterator_range<typename boost::graph_traits< Graph >::halfedge_iterator>
|
CGAL::Iterator_range<typename boost::graph_traits< Graph >::halfedge_iterator>
|
||||||
halfedges(const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
halfedges(const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
halfedges(boost::unwrap_ref(w.get<0>()));
|
halfedges(get<0>(w).get());
|
||||||
return halfedges(boost::unwrap_ref(w.get<1>()));
|
return halfedges(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedges_size_type
|
typename boost::graph_traits< Graph >::halfedges_size_type
|
||||||
num_halfedges(const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
num_halfedges(const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
num_halfedges(boost::unwrap_ref(w.get<0>()));
|
num_halfedges(get<0>(w).get());
|
||||||
return num_halfedges(boost::unwrap_ref(w.get<1>()));
|
return num_halfedges(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Graph
|
// Graph
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::face_descriptor
|
typename boost::graph_traits< Graph >::face_descriptor
|
||||||
face(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
face(typename boost::graph_traits< Graph >::halfedge_descriptor h
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
, const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
face(h, boost::unwrap_ref(w.get<0>()));
|
face(h, get<0>(w).get());
|
||||||
return face(h, boost::unwrap_ref(w.get<1>()));
|
return face(h, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits< Graph >::halfedge_descriptor
|
typename boost::graph_traits< Graph >::halfedge_descriptor
|
||||||
halfedge(typename boost::graph_traits< Graph >::face_descriptor f
|
halfedge(typename boost::graph_traits< Graph >::face_descriptor f
|
||||||
, const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
, const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
halfedge(f, boost::unwrap_ref(w.get<0>()));
|
halfedge(f, get<0>(w).get());
|
||||||
return halfedge(f, boost::unwrap_ref(w.get<1>()));
|
return halfedge(f, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::face_iterator >
|
inline CGAL::Iterator_range<typename boost::graph_traits<Graph>::face_iterator >
|
||||||
faces(const boost::tuple<boost::reference_wrapper<Visitor>, boost::reference_wrapper<Graph> >& w)
|
faces(const boost::tuple<std::reference_wrapper<Visitor>, std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
faces(boost::unwrap_ref(w.get<0>()));
|
faces(get<0>(w).get());
|
||||||
return faces(boost::unwrap_ref(w.get<1>()));
|
return faces(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
typename boost::graph_traits<Graph>::faces_size_type
|
typename boost::graph_traits<Graph>::faces_size_type
|
||||||
num_faces(const boost::tuple<boost::reference_wrapper<Visitor>,
|
num_faces(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
num_faces(boost::unwrap_ref(w.get<0>()));
|
num_faces(get<0>(w).get());
|
||||||
return num_faces(boost::unwrap_ref(w.get<1>()));
|
return num_faces(get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class Visitor>
|
template <class Graph, class Visitor>
|
||||||
bool is_valid(const boost::tuple<boost::reference_wrapper<Visitor>,
|
bool is_valid(const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w
|
std::reference_wrapper<Graph> >& w
|
||||||
, bool verbose = false)
|
, bool verbose = false)
|
||||||
{
|
{
|
||||||
is_valid(boost::unwrap_ref(w.get<0>()), verbose);
|
is_valid(get<0>(w).get(), verbose);
|
||||||
return is_valid(boost::unwrap_ref(w.get<1>()), verbose);
|
return is_valid(get<1>(w).get(), verbose);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Graph, class PropertyTag, class Visitor>
|
template <class Graph, class PropertyTag, class Visitor>
|
||||||
typename boost::property_map< Graph, PropertyTag >::type
|
typename boost::property_map< Graph, PropertyTag >::type
|
||||||
get(PropertyTag ptag,
|
get(PropertyTag ptag,
|
||||||
const boost::tuple<boost::reference_wrapper<Visitor>,
|
const boost::tuple<std::reference_wrapper<Visitor>,
|
||||||
boost::reference_wrapper<Graph> >& w)
|
std::reference_wrapper<Graph> >& w)
|
||||||
{
|
{
|
||||||
get(ptag, boost::unwrap_ref(w.get<0>()));
|
get(ptag, get<0>(w).get());
|
||||||
return get(ptag, boost::unwrap_ref(w.get<1>()));
|
return get(ptag, get<1>(w).get());
|
||||||
}
|
}
|
||||||
|
|
||||||
}//end namespace CGAL
|
}//end namespace CGAL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue