#include #include #include #include using namespace hugo; typedef SmartGraph Graph; //typedef GraphSkeleton Graph; Graph::OutEdgeIt safeFirstOut(const Graph &G, Graph::Node n) { return G.valid(n) ? Graph::OutEdgeIt(G,n):INVALID; } int main() { 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; { 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(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; n = nn; dd = nn; Graph::EdgeMap emap(G); // Test of SymSmartGraph { 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 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"; } }