00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <mln/util/graph.hh>
00027 #include <mln/core/alias/point2d.hh>
00028 #include <mln/core/site_set/p_vertices.hh>
00029 #include <mln/fun/i2v/array.hh>
00030
00031
00032 int main()
00033 {
00034 using namespace mln;
00035
00036 util::graph g;
00037 g.add_vertex();
00038 g.add_vertex();
00039 g.add_vertex();
00040 g.add_vertex();
00041 g.add_vertex();
00042 g.add_vertex();
00043 g.add_edge(0, 1);
00044 g.add_edge(0, 2);
00045 g.add_edge(3, 4);
00046 g.add_edge(4, 5);
00047 g.add_edge(5, 4);
00048 g.add_edge(1, 0);
00049 g.add_edge(5, 3);
00050 g.add_edge(2, 1);
00051
00052
00053 typedef fun::i2v::array<point2d> F;
00054 F f(6);
00055 for (unsigned i = 0; i < 6; ++i)
00056 f(i) = point2d(i, 0);
00057
00058 typedef p_vertices<util::graph, F> p_vertices;
00059 p_vertices pv(g, f);
00060
00061
00062 {
00063 mln_fwd_piter_(p_vertices) p(pv);
00064 unsigned i = 0;
00065 for_all(p)
00066 mln_assertion(p.p_hook_().v().id() == i++);
00067 mln_assertion(i == g.v_nmax());
00068 }
00069
00070
00071 {
00072 mln_bkd_piter_(p_vertices) p(pv);
00073 unsigned i = g.v_nmax() - 1;
00074 for_all(p)
00075 mln_assertion(p.p_hook_().v().id() == i--);
00076 mln_assertion(i == mln_max(unsigned));
00077 }
00078
00079 }