Ticket #11916: boostproblem1.cpp

File boostproblem1.cpp, 1.6 KB (added by pawel.kunio@…, 7 years ago)

failing in_edges iteration example

Line 
1 #include <list>
2 #include <boost/graph/reverse_graph.hpp>
3 #include <boost/graph/adjacency_list.hpp>
4 #include <boost/graph/properties.hpp>
5 #include <boost/foreach.hpp>
6
7 class Basic_block;
8 class Edge;
9 enum vertex_bb_t { vertex_bb };
10 enum edge_cfg_edge_t { edge_cfg_edge };
11 struct phc_listS {};
12
13 namespace boost {
14 BOOST_INSTALL_PROPERTY(vertex, bb);
15 BOOST_INSTALL_PROPERTY(edge, cfg_edge);
16 template <class ValueType>
17 struct container_gen <phc_listS, ValueType> { typedef std::list<ValueType> type; };
18 template<> struct parallel_edge_traits<phc_listS> { typedef allow_parallel_edge_tag type; };
19 }
20
21 typedef boost::adjacency_list<
22 phc_listS,
23 phc_listS,
24 boost::bidirectionalS, // we want access to source and targets of edges
25 boost::property<boost::vertex_index_t, int,
26 boost::property<boost::vertex_color_t, boost::default_color_type,
27 boost::property<vertex_bb_t, Basic_block*> > >,
28 boost::property<edge_cfg_edge_t, Edge*>,
29 boost::no_property,
30 phc_listS
31 > Graph;
32
33 void calculate_dominance2 (boost::reverse_graph<Graph>& graph)
34 {
35 /* Use the function in Cooper/Torczon, Figure 9.10 */
36 BOOST_FOREACH (Graph::vertex_descriptor n, vertices (graph))
37 {
38 if (in_degree (n, graph) > 0)
39 {
40 BOOST_FOREACH (Graph::edge_descriptor e, in_edges (n, graph))
41 {
42 }
43 }
44 }
45 }