#include <boost/graph/dijkstra_shortest_paths.hpp>
#include <boost/graph/filtered_graph.hpp>
-namespace boost {
+namespace boost
+{
- enum edge_info_t { edge_info = 114 };
+enum edge_info_t
+{
+ edge_info = 114
+};
- BOOST_INSTALL_PROPERTY( edge, info );
+BOOST_INSTALL_PROPERTY(edge, info);
}
-template< typename EdgeInfo,
- typename Directed >
-class Graph
+template < typename EdgeInfo, typename Directed > class Graph
{
public:
typedef boost::property< boost::edge_info_t, EdgeInfo > tEdge_property;
- typedef boost::adjacency_list< boost::setS,
- boost::vecS,
- Directed,
- boost::no_property,
- tEdge_property > tGraph;
+ typedef boost::adjacency_list< boost::setS, boost::vecS, Directed,
+ boost::no_property, tEdge_property >
+ tGraph;
typedef typename boost::graph_traits< tGraph >::vertex_descriptor tNode;
- typedef typename boost::graph_traits< tGraph >::edge_descriptor tEdge;
+ typedef typename boost::graph_traits< tGraph >::edge_descriptor tEdge;
protected:
-
- tGraph m_Graph;
+ tGraph m_Graph;
};
class DataEdge;
-class UndirectedGraph
- : public Graph< DataEdge*,
- boost::undirectedS >
+class UndirectedGraph : public Graph< DataEdge*, boost::undirectedS >
{
public:
-
- template< class Evaluator, class Filter >
- void dijkstra( Evaluator const&,
- Filter const& ) const;
+ template < class Evaluator, class Filter >
+ void dijkstra(Evaluator const&, Filter const&) const;
};
-template< typename Graph, typename Derived >
+template < typename Graph, typename Derived >
struct Evaluator : public boost::put_get_helper< int, Derived >
{
typedef int value_type;
typedef int reference;
typedef boost::readable_property_map_tag category;
- explicit Evaluator( Graph const* pGraph );
+ explicit Evaluator(Graph const* pGraph);
};
-
-template< typename Graph >
-struct LengthEvaluator : public Evaluator< Graph, LengthEvaluator<Graph> >
+template < typename Graph >
+struct LengthEvaluator : public Evaluator< Graph, LengthEvaluator< Graph > >
{
- explicit LengthEvaluator( Graph const* pGraph );
+ explicit LengthEvaluator(Graph const* pGraph);
- typedef typename Evaluator<Graph, LengthEvaluator<Graph> >::reference reference;
- typedef typename Evaluator<Graph, LengthEvaluator<Graph> >::key_type key_type;
+ typedef typename Evaluator< Graph, LengthEvaluator< Graph > >::reference
+ reference;
+ typedef typename Evaluator< Graph, LengthEvaluator< Graph > >::key_type
+ key_type;
- virtual reference operator[] ( key_type const& edge ) const;
+ virtual reference operator[](key_type const& edge) const;
};
-template< class Graph >
-struct EdgeFilter
+template < class Graph > struct EdgeFilter
{
typedef typename Graph::tEdge key_type;
EdgeFilter();
- explicit EdgeFilter( Graph const*);
+ explicit EdgeFilter(Graph const*);
- bool operator()( key_type const& ) const;
+ bool operator()(key_type const&) const;
private:
- const Graph* m_pGraph;
+ const Graph* m_pGraph;
};
-
-template< class Evaluator, class Filter >
-void
-UndirectedGraph::dijkstra( Evaluator const& rEvaluator,
- Filter const& rFilter ) const
+template < class Evaluator, class Filter >
+void UndirectedGraph::dijkstra(
+ Evaluator const& rEvaluator, Filter const& rFilter) const
{
tNode nodeSource = vertex(0, m_Graph);
- std::vector< tNode > predecessors( num_vertices(m_Graph) );
+ std::vector< tNode > predecessors(num_vertices(m_Graph));
- boost::filtered_graph< tGraph, Filter > filteredGraph( m_Graph, rFilter );
+ boost::filtered_graph< tGraph, Filter > filteredGraph(m_Graph, rFilter);
- boost::dijkstra_shortest_paths( filteredGraph,
- nodeSource,
- boost::predecessor_map( &predecessors[0] )
- .weight_map( rEvaluator ) );
+ boost::dijkstra_shortest_paths(filteredGraph, nodeSource,
+ boost::predecessor_map(&predecessors[0]).weight_map(rEvaluator));
}
// explicit instantiation
-template void UndirectedGraph::dijkstra( LengthEvaluator<UndirectedGraph> const&,
- EdgeFilter<UndirectedGraph> const& ) const;
+template void UndirectedGraph::dijkstra(
+ LengthEvaluator< UndirectedGraph > const&,
+ EdgeFilter< UndirectedGraph > const&) const;
-int main(int, char**) {return 0;} // Tests above will fail to compile if anything is broken
+int main(int, char**)
+{
+ return 0;
+} // Tests above will fail to compile if anything is broken