1 //=======================================================================
2 // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
3 // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
4 //
5 // Distributed under the Boost Software License, Version 1.0. (See
6 // accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt)
8 //=======================================================================
9 #include <boost/graph/graph_concepts.hpp>
10 #include <boost/graph/graph_archetypes.hpp>
11 #include <boost/graph/adjacency_list.hpp>
12 #include <boost/graph/reverse_graph.hpp>
13 #include <boost/concept/assert.hpp>
14 #include <string>
15
main(int,char * [])16 int main(int,char*[])
17 {
18 using namespace boost;
19 // Check const reverse_graph
20 {
21 typedef adjacency_list< vecS, vecS, bidirectionalS,
22 property<vertex_color_t, int>,
23 property<edge_weight_t, int>,
24 property<graph_name_t, std::string>
25 > AdjList;
26 typedef reverse_graph<AdjList> Graph;
27 BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
28 typedef graph_traits<Graph>::vertex_descriptor Vertex;
29 typedef graph_traits<Graph>::edge_descriptor Edge;
30 BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
31 BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_weight_t> ));
32 BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> ));
33 AdjList g;
34 Graph gr(g);
35 get_property(gr, graph_name_t());
36 }
37 // Check non-const reverse_graph
38 {
39 typedef adjacency_list< vecS, vecS, bidirectionalS,
40 property<vertex_color_t, int>,
41 property<edge_weight_t, int>,
42 property<graph_name_t, std::string>
43 > AdjList;
44 typedef reverse_graph<AdjList,AdjList&> Graph;
45 BOOST_CONCEPT_ASSERT(( VertexListGraphConcept<Graph> ));
46 typedef graph_traits<Graph>::vertex_descriptor Vertex;
47 typedef graph_traits<Graph>::edge_descriptor Edge;
48 BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Vertex, vertex_color_t> ));
49 BOOST_CONCEPT_ASSERT(( PropertyGraphConcept<Graph, Edge, edge_weight_t> ));
50 BOOST_CONCEPT_ASSERT(( ReadablePropertyGraphConcept<Graph, Edge, edge_underlying_t> ));
51 AdjList g;
52 Graph gr(g);
53 get_property(gr, graph_name_t());
54 set_property(gr, graph_name_t(), "foo");
55 }
56 return 0;
57 }
58