diff -r 72bd463289a9 -r a63cef252656 src/work/alpar/gwrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/work/alpar/gwrapper.h Thu Feb 05 15:56:12 2004 +0000 @@ -0,0 +1,148 @@ +// -*-mode: c++; -*- + +template +class TrivGraphWrapper +{ + G *graph; + +public: + typedef G BaseGraph; + + typedef typename G::EdgeIt EdgeIt; + + typedef typename G::InEdgeIt InEdgeIt; + typedef typename G::OutEdgeIt OutEdgeIt; + typedef typename G::SymEdgeIt SymEdgeIt; + typedef typename G::EachEdgeIt EachEdgeIt; + + typedef typename G::NodeIt NodeIt; + + template I &getFirst(I &i); { return graph->getFirst(i); } + template I &getFirst(I &i,const P &p); + { return graph->getFirst(i,p); } + template I next(const I i); { return graph->goNext(i); } + template I &goNext(I &i); { return graph->goNext(i); } + + NodeIt head(const EdgeIt &e); + { return graph->head(e); } + NodeIt tail(const EdgeIt &e); + { return graph->tail(e); } + + template NodeIt aNode(const I e); + { return graph->aNode(e); } + template NodeIt bNode(const I e); + { return graph->bNode(e); } + + template bool valid(const I i); + { return graph->valid(i); } + + template void setInvalid(const I &i); + { return graph->setInvalid(i); } + + NodeIt addNode(); { return graph->addNode(); } + EdgeIt addEdge(const NodeIt from,const NodeIt to); + { return graph->addEdge(ftom,to); } + + template void delete(I i); { graph->delete(i); } + + void clean(); { graph->clean(); } + + template class NodeMap : public typename G::NodeMap; + template class EdgeMap : public typename G::EdgeMap; + + void SetG(G &g) {graph = &g;} + + TrivGraphWrapper() {graph = NULL;} + TrivGraphWrapper(G &g) {graph = &g;} +}; + +template +class RevGraphWrapper +{ + G *graph; + +public: + typedef G BaseGraph; + + typedef typename G::EdgeIt EdgeIt; + + typedef typename G::InEdgeIt OutEdgeIt; + typedef typename G::OutEdgeIt InEdgeIt; + typedef typename G::SymEdgeIt SymEdgeIt; + typedef typename G::EachEdgeIt EachEdgeIt; + + typedef typename G::NodeIt NodeIt; + + template I &getFirst(I &i); { return graph->getFirst(i); } + template I &getFirst(I &i,const P &p); + { return graph->getFirst(i,p); } + template I next(const I i); { return graph->goNext(i); } + template I &goNext(I &i); { return graph->goNext(i); } + + NodeIt head(const EdgeIt &e); + { return graph->tail(e); } + NodeIt tail(const EdgeIt &e); + { return graph->head(e); } + + template NodeIt aNode(const I e); + { return graph->aNode(e); } + template NodeIt bNode(const I e); + { return graph->bNode(e); } + + template bool valid(const I i); + { return graph->valid(i); } + + template void setInvalid(const I &i); + { return graph->setInvalid(i); } + + NodeIt addNode(); { return graph->addNode(); } + EdgeIt addEdge(const NodeIt from,const NodeIt to); + { return graph->addEdge(to,from); } + + template void delete(I i); { graph->delete(i); } + + void clean(); { graph->clean(); } + + template class NodeMap : public typename G::NodeMap; + template class EdgeMap : public typename G::EdgeMap; + + void SetG(G &g) {graph = &g;} + + RevGraphWrapper() {graph = NULL;} + RevGraphWrapper(G &g) {graph = &g;} +}; + + + +// NodeIt &getFirst(NodeIt &n) { return graph->getFirst(n); } +// InEdgeIt &getFirst(InEdgeIt &e,const NodeIt &n); +// { return graph->getFirst(e,n); } +// OutEdgeIt &getFirst(OutEdgeIt &e,const NodeIt &n); +// { return graph->getFirst(e,n); } +// SymEdgeIt &getFirst(SymEdgeIt &e,const NodeIt &n); +// { return graph->getFirst(e,n); } +// EachEdgeIt &getFirst(EachEdgeIt &e); +// { return graph->getFirst(e); } + +// NodeIt next(const NodeIt &n); +// { return graph->next(n); } +// InEdgeIt next(const InEdgeIt &e); +// { return graph->next(e); } +// OutEdgeIt next(const OutEdgeIt &e); +// { return graph->next(e); } +// SymEdgeIt next(const SymEdgeIt &e); +// { return graph->next(e); } +// EachEdgeIt next(const EachEdgeIt &e); +// { return graph->next(e); } + +// NodeIt &goNext(NodeIt &n); +// { return graph->goNext(n); } +// InEdgeIt &goNext(InEdgeIt &e); +// { return graph->goNext(e); } +// OutEdgeIt &goNext(OutEdgeIt &e); +// { return graph->goNext(e); } +// SymEdgeIt &goNext(SymEdgeIt &e); +// { return graph->goNext(e); } +// EachEdgeIt &goNext(EachEdgeIt &e); +// { return graph->goNext(e); } +