2 // (C) Copyright Francois Faure, iMAGIS-GRAVIR / UJF, 2001.
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
9 // 03 May 2001 Jeremy Siek
10 // Moved property iterator code to headers.
11 // 02 May 2001 Francois Faure
14 #include <boost/graph/adjacency_list_io.hpp>
15 #include <boost/graph/property_iter_range.hpp>
20 using namespace boost
;
22 //======== vertex properties
25 typedef vertex_property_tag kind
;
27 typedef property
< toto_t
, double > Toto
;
31 typedef vertex_property_tag kind
;
33 typedef property
< radius_t
, double, Toto
> Radius
;
37 typedef vertex_property_tag kind
;
39 typedef property
< mass_t
, int, Radius
> Mass
;
42 //====== edge properties
45 typedef edge_property_tag kind
;
47 typedef property
<stiff_t
, double> Stiff
;
52 typedef Mass VertexProperty
;
53 typedef Stiff EdgeProperty
;
54 typedef adjacency_list
<vecS
, setS
, bidirectionalS
,
55 VertexProperty
, EdgeProperty
> Graph
;
62 Print
& operator() (const T
& t
) {
63 std::cout
<< t
<< " ";
73 Set( const T
& t
):value(t
){}
75 Set
& operator() (T
& t
) {
83 int main(int argc
, char* argv
[])
86 std::cerr
<<"args: file"<<std::endl
;
90 std::ifstream
readFile(argv
[1]);
93 readFile
>> read( graph
);
94 std::cout
<< write( graph
);
96 std::cout
<< "radii:" << std::endl
;
97 graph_property_iter_range
<Graph
,radius_t
>::type
98 seqRadius
= get_property_iter_range(graph
,radius_t());
99 std::for_each( seqRadius
.first
, seqRadius
.second
, Print() );
100 std::cout
<< std::endl
;
102 std::cout
<< "stiff:" << std::endl
;
103 graph_property_iter_range
<Graph
,stiff_t
>::type
104 seqStiff
= get_property_iter_range(graph
, stiff_t());
105 std::for_each( seqStiff
.first
, seqStiff
.second
, Print() );
106 std::cout
<< std::endl
;
108 seqStiff
= get_property_iter_range(graph
, stiff_t());
109 std::for_each( seqStiff
.first
, seqStiff
.second
, Set
<double>(2.4) );
111 std::cout
<< "new stiff:" << std::endl
;
112 seqStiff
= get_property_iter_range(graph
,stiff_t());
113 std::for_each( seqStiff
.first
, seqStiff
.second
, Print() );
114 std::cout
<< std::endl
;