diff -r 08735c8704cd -r 259540358bbf src/work/alpar/smart_graph_demo.cc --- a/src/work/alpar/smart_graph_demo.cc Sat Mar 13 22:49:54 2004 +0000 +++ b/src/work/alpar/smart_graph_demo.cc Sat Mar 13 22:53:07 2004 +0000 @@ -6,8 +6,8 @@ using namespace hugo; -//typedef SmartGraph Graph; -typedef EmptyGraph Graph; +typedef SmartGraph Graph; +//typedef GraphSkeleton Graph; Graph::OutEdgeIt safeFirstOut(const Graph &G, Graph::Node n) @@ -26,42 +26,99 @@ typedef Graph::NodeIt NodeIt; Graph G; - NodeIt n; + + { + NodeIt n; + for(int i=0;i<10;i++) G.addNode(); + for(G.first(n);G.valid(n);G.next(n)) + for(NodeIt m(G);m!=INVALID;G.next(m)) + if(n!=m) G.addEdge(n,m); + + OutEdgeIt e = safeFirstOut(G,n); + OutEdgeIt f = safeFirstOut(G,NodeIt(G)); + + + InEdgeIt i(INVALID), j; + InEdgeIt ii(i); + ii=G.first(i,n); + ii=G.next(i); + + OutEdgeIt o(INVALID), oo; + OutEdgeIt ooo(oo); + oo=G.first(o,n); + oo=G.next(o); + + EdgeIt ei(INVALID), eie; + EdgeIt eiee(ei); + eie=G.first(ei); + eie=G.next(ei); + + Edge eee(i); + eee=o; + eee=eie; + + + bool tm; + tm = G.valid(n) && G.valid(i) && G.valid(o) && G.valid(ei); + + std::vector v(10); + std::vector w(10,INVALID); + + } + + // Test of maps + G.clear(); + for(int i=0;i<10;i++) G.addNode(); - for(G.first(n);G.valid(n);G.next(n)) - for(NodeIt m(G);m!=INVALID;G.next(m)) - if(n!=m) G.addEdge(n,m); + for(NodeIt i(G);G.valid(i);G.next(i)) + for(NodeIt j(G);G.valid(j);G.next(j)) + if(i n(G); + int count=0; + for(NodeIt i(G);G.valid(i);G.next(i)) n[i]=count++; + + Graph::NodeMap nn=n; + Graph::NodeMap dd=n; - OutEdgeIt e = safeFirstOut(G,n); - OutEdgeIt f = safeFirstOut(G,NodeIt(G)); + n = nn; + dd = nn; + + Graph::EdgeMap emap(G); - InEdgeIt i(INVALID), j; - InEdgeIt ii(i); - ii=G.first(i,n); - ii=G.next(i); + // Test of SymSmartGraph - OutEdgeIt o(INVALID), oo; - OutEdgeIt ooo(oo); - oo=G.first(o,n); - oo=G.next(o); + { + typedef SymSmartGraph Graph; + typedef Graph::Edge Edge; + typedef Graph::InEdgeIt InEdgeIt; + typedef Graph::OutEdgeIt OutEdgeIt; + typedef Graph::EdgeIt EdgeIt; + typedef Graph::Node Node; + typedef Graph::NodeIt NodeIt; + + Graph G; + + for(int i=0;i<10;i++) G.addNode(); + for(NodeIt i(G);G.valid(i);G.next(i)) + for(NodeIt j(G);G.valid(j);G.next(j)) + if(i v(10); - std::vector w(10,INVALID); + Graph::EdgeMap em(G); + Graph::SymEdgeMap sm(G); + for(EdgeIt e(G);G.valid(e);G.next(e)) em[e]=G.id(e); + for(EdgeIt e(G);G.valid(e);G.next(e)) + if(G.tail(e)" << G.id(G.head(e)) + << ": id=" << G.id(e) << " oppid=" << G.id(G.opposite(e)) + << " em=" << em[e] + << " sm=" << sm[e] << "\n"; + + } }