alpar@65: // -*-mode: c++; -*- alpar@65: alpar@65: template alpar@65: class TrivGraphWrapper alpar@65: { alpar@65: G *graph; alpar@65: alpar@65: public: alpar@65: typedef G BaseGraph; alpar@65: alpar@65: typedef typename G::EdgeIt EdgeIt; alpar@65: alpar@65: typedef typename G::InEdgeIt InEdgeIt; alpar@65: typedef typename G::OutEdgeIt OutEdgeIt; alpar@65: typedef typename G::SymEdgeIt SymEdgeIt; alpar@65: typedef typename G::EachEdgeIt EachEdgeIt; alpar@65: alpar@65: typedef typename G::NodeIt NodeIt; alpar@65: alpar@65: template I &getFirst(I &i); { return graph->getFirst(i); } alpar@65: template I &getFirst(I &i,const P &p); alpar@65: { return graph->getFirst(i,p); } alpar@65: template I next(const I i); { return graph->goNext(i); } alpar@65: template I &goNext(I &i); { return graph->goNext(i); } alpar@65: alpar@65: NodeIt head(const EdgeIt &e); alpar@65: { return graph->head(e); } alpar@65: NodeIt tail(const EdgeIt &e); alpar@65: { return graph->tail(e); } alpar@65: alpar@65: template NodeIt aNode(const I e); alpar@65: { return graph->aNode(e); } alpar@65: template NodeIt bNode(const I e); alpar@65: { return graph->bNode(e); } alpar@65: alpar@65: template bool valid(const I i); alpar@65: { return graph->valid(i); } alpar@65: alpar@65: template void setInvalid(const I &i); alpar@65: { return graph->setInvalid(i); } alpar@65: alpar@65: NodeIt addNode(); { return graph->addNode(); } alpar@65: EdgeIt addEdge(const NodeIt from,const NodeIt to); alpar@65: { return graph->addEdge(ftom,to); } alpar@65: alpar@65: template void delete(I i); { graph->delete(i); } alpar@65: alpar@65: void clean(); { graph->clean(); } alpar@65: alpar@65: template class NodeMap : public typename G::NodeMap; alpar@65: template class EdgeMap : public typename G::EdgeMap; alpar@65: alpar@65: void SetG(G &g) {graph = &g;} alpar@65: alpar@65: TrivGraphWrapper() {graph = NULL;} alpar@65: TrivGraphWrapper(G &g) {graph = &g;} alpar@65: }; alpar@65: alpar@65: template alpar@65: class RevGraphWrapper alpar@65: { alpar@65: G *graph; alpar@65: alpar@65: public: alpar@65: typedef G BaseGraph; alpar@65: alpar@65: typedef typename G::EdgeIt EdgeIt; alpar@65: alpar@65: typedef typename G::InEdgeIt OutEdgeIt; alpar@65: typedef typename G::OutEdgeIt InEdgeIt; alpar@65: typedef typename G::SymEdgeIt SymEdgeIt; alpar@65: typedef typename G::EachEdgeIt EachEdgeIt; alpar@65: alpar@65: typedef typename G::NodeIt NodeIt; alpar@65: alpar@65: template I &getFirst(I &i); { return graph->getFirst(i); } alpar@65: template I &getFirst(I &i,const P &p); alpar@65: { return graph->getFirst(i,p); } alpar@65: template I next(const I i); { return graph->goNext(i); } alpar@65: template I &goNext(I &i); { return graph->goNext(i); } alpar@65: alpar@65: NodeIt head(const EdgeIt &e); alpar@65: { return graph->tail(e); } alpar@65: NodeIt tail(const EdgeIt &e); alpar@65: { return graph->head(e); } alpar@65: alpar@65: template NodeIt aNode(const I e); alpar@65: { return graph->aNode(e); } alpar@65: template NodeIt bNode(const I e); alpar@65: { return graph->bNode(e); } alpar@65: alpar@65: template bool valid(const I i); alpar@65: { return graph->valid(i); } alpar@65: alpar@65: template void setInvalid(const I &i); alpar@65: { return graph->setInvalid(i); } alpar@65: alpar@65: NodeIt addNode(); { return graph->addNode(); } alpar@65: EdgeIt addEdge(const NodeIt from,const NodeIt to); alpar@65: { return graph->addEdge(to,from); } alpar@65: alpar@65: template void delete(I i); { graph->delete(i); } alpar@65: alpar@65: void clean(); { graph->clean(); } alpar@65: alpar@65: template class NodeMap : public typename G::NodeMap; alpar@65: template class EdgeMap : public typename G::EdgeMap; alpar@65: alpar@65: void SetG(G &g) {graph = &g;} alpar@65: alpar@65: RevGraphWrapper() {graph = NULL;} alpar@65: RevGraphWrapper(G &g) {graph = &g;} alpar@65: }; alpar@65: alpar@65: alpar@65: alpar@65: // NodeIt &getFirst(NodeIt &n) { return graph->getFirst(n); } alpar@65: // InEdgeIt &getFirst(InEdgeIt &e,const NodeIt &n); alpar@65: // { return graph->getFirst(e,n); } alpar@65: // OutEdgeIt &getFirst(OutEdgeIt &e,const NodeIt &n); alpar@65: // { return graph->getFirst(e,n); } alpar@65: // SymEdgeIt &getFirst(SymEdgeIt &e,const NodeIt &n); alpar@65: // { return graph->getFirst(e,n); } alpar@65: // EachEdgeIt &getFirst(EachEdgeIt &e); alpar@65: // { return graph->getFirst(e); } alpar@65: alpar@65: // NodeIt next(const NodeIt &n); alpar@65: // { return graph->next(n); } alpar@65: // InEdgeIt next(const InEdgeIt &e); alpar@65: // { return graph->next(e); } alpar@65: // OutEdgeIt next(const OutEdgeIt &e); alpar@65: // { return graph->next(e); } alpar@65: // SymEdgeIt next(const SymEdgeIt &e); alpar@65: // { return graph->next(e); } alpar@65: // EachEdgeIt next(const EachEdgeIt &e); alpar@65: // { return graph->next(e); } alpar@65: alpar@65: // NodeIt &goNext(NodeIt &n); alpar@65: // { return graph->goNext(n); } alpar@65: // InEdgeIt &goNext(InEdgeIt &e); alpar@65: // { return graph->goNext(e); } alpar@65: // OutEdgeIt &goNext(OutEdgeIt &e); alpar@65: // { return graph->goNext(e); } alpar@65: // SymEdgeIt &goNext(SymEdgeIt &e); alpar@65: // { return graph->goNext(e); } alpar@65: // EachEdgeIt &goNext(EachEdgeIt &e); alpar@65: // { return graph->goNext(e); } alpar@65: