From 3df72bcb266b8124829dfe25de829b987034f456 Mon Sep 17 00:00:00 2001 From: Jeremy Siek Date: Mon, 23 Apr 2001 19:47:08 +0000 Subject: [PATCH] named parameters changes [SVN r9942] --- include/boost/graph/edmunds_karp_max_flow.hpp | 10 --- include/boost/graph/push_relabel_max_flow.hpp | 73 ++++++++++++++----- 2 files changed, 53 insertions(+), 30 deletions(-) diff --git a/include/boost/graph/edmunds_karp_max_flow.hpp b/include/boost/graph/edmunds_karp_max_flow.hpp index f51806fa..206d1ae9 100644 --- a/include/boost/graph/edmunds_karp_max_flow.hpp +++ b/include/boost/graph/edmunds_karp_max_flow.hpp @@ -82,16 +82,6 @@ namespace boost { } while (u != src); } - template - struct edge_capacity_value - { - typedef bgl_named_params Params; - typedef typename property_value< Params, edge_capacity_t>::type Param; - typedef typename detail::choose_pmap_helper::result CapacityEdgeMap; - typedef typename property_traits::value_type type; - }; - template diff --git a/include/boost/graph/push_relabel_max_flow.hpp b/include/boost/graph/push_relabel_max_flow.hpp index bac5a3d1..41a1920a 100644 --- a/include/boost/graph/push_relabel_max_flow.hpp +++ b/include/boost/graph/push_relabel_max_flow.hpp @@ -35,6 +35,7 @@ #include #include #include +#include namespace boost { @@ -667,34 +668,66 @@ namespace boost { long work_since_last_update; }; + template + typename property_traits::value_type + push_relabel_max_flow_impl + (Graph& g, + typename graph_traits::vertex_descriptor src, + typename graph_traits::vertex_descriptor sink, + CapacityEdgeMap cap, ResidualCapacityEdgeMap res, + ReverseEdgeMap rev, VertexIndexMap index_map) + { + typedef typename property_traits::value_type FlowValue; + + detail::push_relabel + algo(g, cap, res, rev, src, sink, index_map); + + FlowValue flow = algo.maximum_preflow(); + + algo.convert_preflow_to_flow(); + + assert(algo.is_flow()); + assert(algo.is_optimal()); + + return flow; + } // push_relabel_max_flow_impl() + } // namespace detail - template - typename property_traits::value_type + + template + typename detail::edge_capacity_value::type push_relabel_max_flow (Graph& g, typename graph_traits::vertex_descriptor src, typename graph_traits::vertex_descriptor sink, - CapacityEdgeMap cap, ResidualCapacityEdgeMap res, - ReverseEdgeMap rev, VertexIndexMap index_map) + const bgl_named_params& params) { - typedef typename property_traits::value_type FlowValue; + return detail::push_relabel_max_flow_impl + (g, src, sink, + choose_const_pmap(get_param(params, edge_capacity), g, edge_capacity), + choose_pmap(get_param(params, edge_residual_capacity), + g, edge_residual_capacity), + choose_const_pmap(get_param(params, edge_reverse), g, edge_reverse), + choose_const_pmap(get_param(params, vertex_index), g, vertex_index) + ); + } - detail::push_relabel - algo(g, cap, res, rev, src, sink, index_map); - - FlowValue flow = algo.maximum_preflow(); - - algo.convert_preflow_to_flow(); - - assert(algo.is_flow()); - assert(algo.is_optimal()); - - return flow; - } // maximum_flow() + template + typename property_traits< + typename property_map::const_type + >::value_type + push_relabel_max_flow + (Graph& g, + typename graph_traits::vertex_descriptor src, + typename graph_traits::vertex_descriptor sink) + { + bgl_named_params params(0); + return push_relabel_max_flow(g, src, sink, params); + } } // namespace boost