diff --git a/src/python/page_rank.cpp b/src/python/page_rank.cpp new file mode 100644 index 00000000..b61ed645 --- /dev/null +++ b/src/python/page_rank.cpp @@ -0,0 +1,67 @@ +#include "digraph.hpp" +#include +#include "done.hpp" + +namespace boost { namespace graph { namespace python { + + + +template +void +page_rank_ri + (Graph& g, + const vector_property_map& rank, + int iterations) +{ + boost::graph::page_rank(g, rank, graph::n_iterations(20)); +} + +template +void +page_rank_i(Graph& g, int iterations) +{ + boost::graph::page_rank(g, g.template get_vertex_map("rank"), + graph::n_iterations(20)); +} + +struct page_rank_wrap_done +{ + page_rank_wrap_done(const done& d) : d(d) { } + + template + bool + operator()(const RankMap&, const Graph&) const + { + return d(); + } + + const done& d; +}; + +template +void +page_rank_rd + (Graph& g, + const vector_property_map& rank, + const done& d) +{ + boost::graph::page_rank(g, rank, page_rank_wrap_done(d)); +} + +template +void page_rank_d(Graph& g, const done& d) +{ + boost::graph::page_rank(g, g.template get_vertex_map("rank"), + page_rank_wrap_done(d)); +} + +void export_page_rank() +{ + def("page_rank", &page_rank_i); + def("page_rank", &page_rank_ri); + def("page_rank", &page_rank_rd); + def("page_rank", &page_rank_d); +} + + +} } } // end namespace boost::graph::python