marci@76: // -*-mode: c++; -*- marci@76: #ifndef GRAPH_WRAPPER_H marci@76: #define GRAPH_WRAPPER_H marci@76: alpar@105: namespace hugo { marci@76: marci@76: template marci@76: class TrivGraphWrapper { marci@76: Graph* graph; marci@76: marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: typedef typename Graph::OutEdgeIt OutEdgeIt; marci@76: typedef typename Graph::InEdgeIt InEdgeIt; marci@76: typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: template I& getFirst(I& i) const { return graph->getFirst(i); } marci@76: template I& getFirst(I& i, const P& p) const { marci@76: return graph->getFirst(i, p); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->head(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I& i) marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() const { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) const { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) const { graph->erase(i); } marci@76: marci@76: void clear() const { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { marci@76: public: marci@76: NodeMap(const Graph& _G) : Graph::NodeMap(_G) { } marci@76: NodeMap(const Graph& _G, T a) : Graph::NodeMap(_G, a) { } marci@76: }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(Graph& _graph) { graph = &_graph; } marci@76: Graph& getGraph() { return (*graph); } marci@76: marci@76: //TrivGraphWrapper() : graph(0) { } marci@76: TrivGraphWrapper(Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: template marci@76: class ConstTrivGraphWrapper { marci@76: const Graph* graph; marci@76: marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: typedef typename Graph::OutEdgeIt OutEdgeIt; marci@76: typedef typename Graph::InEdgeIt InEdgeIt; marci@76: typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: template I& getFirst(I& i) const { return graph->getFirst(i); } marci@76: template I& getFirst(I& i, const P& p) const { marci@76: return graph->getFirst(i, p); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->head(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I& i) marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() const { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) const { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) const { graph->erase(i); } marci@76: marci@76: void clear() const { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { marci@76: public: marci@76: NodeMap(const Graph& _G) : Graph::NodeMap(_G) { } marci@76: NodeMap(const Graph& _G, T a) : Graph::NodeMap(_G, a) { } marci@76: }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(const Graph& _graph) { graph = &_graph; } marci@76: const Graph& getGraph() { return (*graph); } marci@76: marci@76: //ConstTrivGraphWrapper() : graph(0) { } marci@76: ConstTrivGraphWrapper(const Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: marci@76: template marci@76: class RevGraphWrapper marci@76: { marci@76: Graph* graph; marci@76: marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: typedef typename Graph::OutEdgeIt InEdgeIt; marci@76: typedef typename Graph::InEdgeIt OutEdgeIt; marci@76: typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: template I& getFirst(I& i) const { return graph->getFirst(i); } marci@76: template I& getFirst(I& i, const P& p) const { marci@76: return graph->getFirst(i, p); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->tail(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->head(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I i); marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) { graph->erase(i); } marci@76: marci@76: void clear() { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(Graph& _graph) { graph = &_graph; } marci@76: Graph& getGraph() { return (*graph); } marci@76: marci@76: //RevGraphWrapper() : graph(0) { } marci@76: RevGraphWrapper(Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: template marci@76: class SymGraphWrapper marci@76: { marci@76: Graph* graph; marci@76: marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: //FIXME tag-ekkel megcsinalni, hogy abbol csinaljon marci@76: //iranyitatlant, ami van marci@76: //mert csak 1 dolgot lehet be typedef-elni marci@76: typedef typename Graph::OutEdgeIt SymEdgeIt; marci@76: //typedef typename Graph::InEdgeIt SymEdgeIt; marci@76: //typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: template I& getFirst(I& i) const { return graph->getFirst(i); } marci@76: template I& getFirst(I& i, const P& p) const { marci@76: return graph->getFirst(i, p); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->head(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I i); marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) { graph->erase(i); } marci@76: marci@76: void clear() { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(Graph& _graph) { graph = &_graph; } marci@76: Graph& getGraph() { return (*graph); } marci@76: marci@76: //SymGraphWrapper() : graph(0) { } marci@76: SymGraphWrapper(Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: marci@76: // FIXME: comparison should be made better!!! marci@76: template marci@76: class ResGraphWrapper marci@76: { marci@76: Graph* graph; marci@76: marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: class OutEdgeIt { marci@76: public: marci@76: //Graph::NodeIt n; marci@76: bool out_or_in; marci@76: typename Graph::OutEdgeIt o; marci@76: typename Graph::InEdgeIt i; marci@76: }; marci@76: class InEdgeIt { marci@76: public: marci@76: //Graph::NodeIt n; marci@76: bool out_or_in; marci@76: typename Graph::OutEdgeIt o; marci@76: typename Graph::InEdgeIt i; marci@76: }; marci@76: typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } marci@76: marci@76: // EachEdge and SymEdge is missing!!!! marci@76: // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! marci@76: marci@76: //FIXME marci@76: OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const marci@76: { marci@76: e.n=n; marci@76: graph->getFirst(e.o,n); marci@76: while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: if(!graph->valid(e.o)) { marci@76: graph->getFirst(e.i,n); marci@76: while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: } marci@76: return e; marci@76: } marci@76: /* marci@76: OutEdgeIt &goNext(OutEdgeIt &e) marci@76: { marci@76: if(graph->valid(e.o)) { marci@76: while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: if(graph->valid(e.o)) return e; marci@76: else graph->getFirst(e.i,e.n); marci@76: } marci@76: else { marci@76: while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: return e; marci@76: } marci@76: } marci@76: OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} marci@76: */ marci@76: //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} marci@76: marci@76: //FIXME marci@76: InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const marci@76: { marci@76: e.n=n; marci@76: graph->getFirst(e.i,n); marci@76: while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: if(!graph->valid(e.i)) { marci@76: graph->getFirst(e.o,n); marci@76: while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: } marci@76: return e; marci@76: } marci@76: /* marci@76: InEdgeIt &goNext(InEdgeIt &e) marci@76: { marci@76: if(graph->valid(e.i)) { marci@76: while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: if(graph->valid(e.i)) return e; marci@76: else graph->getFirst(e.o,e.n); marci@76: } marci@76: else { marci@76: while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: return e; marci@76: } marci@76: } marci@76: InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} marci@76: */ marci@76: //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} marci@76: marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->head(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I i); marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) { graph->erase(i); } marci@76: marci@76: void clear() { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(Graph& _graph) { graph = &_graph; } marci@76: Graph& getGraph() { return (*graph); } marci@76: marci@76: //ResGraphWrapper() : graph(0) { } marci@76: ResGraphWrapper(Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: marci@76: // FIXME: comparison should be made better!!! marci@76: template marci@76: class ConstResGraphWrapper marci@76: { marci@76: const Graph* graph; marci@76: const LowerMap* low; marci@76: FlowMap* flow; marci@76: const UpperMap* up; marci@76: public: marci@76: typedef Graph BaseGraph; marci@76: marci@76: typedef typename Graph::NodeIt NodeIt; marci@76: typedef typename Graph::EdgeIt EdgeIt; marci@76: marci@76: typedef typename Graph::EachNodeIt EachNodeIt; marci@76: marci@76: class OutEdgeIt { marci@76: public: marci@76: //Graph::NodeIt n; marci@76: bool out_or_in; marci@76: typename Graph::SymEdgeIt sym; marci@76: }; marci@76: class InEdgeIt { marci@76: public: marci@76: //Graph::NodeIt n; marci@76: bool out_or_in; marci@76: typename Graph::OutEdgeIt sym; marci@76: }; marci@76: //typedef typename Graph::SymEdgeIt SymEdgeIt; marci@76: //typedef typename Graph::EachEdgeIt EachEdgeIt; marci@76: marci@76: int nodeNum() const { return graph->nodeNum(); } marci@76: //int edgeNum() const { return graph->edgeNum(); } marci@76: marci@76: NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } marci@76: marci@76: // EachEdge and SymEdge is missing!!!! marci@76: // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! marci@76: marci@76: marci@76: //FIXME marci@76: OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const marci@76: { marci@76: e.n=n; marci@76: graph->getFirst(e.o,n); marci@76: while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: if(!graph->valid(e.o)) { marci@76: graph->getFirst(e.i,n); marci@76: while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: } marci@76: return e; marci@76: } marci@76: /* marci@76: OutEdgeIt &goNext(OutEdgeIt &e) marci@76: { marci@76: if(graph->valid(e.o)) { marci@76: while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: if(graph->valid(e.o)) return e; marci@76: else graph->getFirst(e.i,e.n); marci@76: } marci@76: else { marci@76: while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: return e; marci@76: } marci@76: } marci@76: OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} marci@76: */ marci@76: //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} marci@76: marci@76: //FIXME marci@76: InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const marci@76: { marci@76: e.n=n; marci@76: graph->getFirst(e.i,n); marci@76: while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: if(!graph->valid(e.i)) { marci@76: graph->getFirst(e.o,n); marci@76: while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: } marci@76: return e; marci@76: } marci@76: /* marci@76: InEdgeIt &goNext(InEdgeIt &e) marci@76: { marci@76: if(graph->valid(e.i)) { marci@76: while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) marci@76: graph->goNext(e.i); marci@76: if(graph->valid(e.i)) return e; marci@76: else graph->getFirst(e.o,e.n); marci@76: } marci@76: else { marci@76: while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) marci@76: graph->goNext(e.o); marci@76: return e; marci@76: } marci@76: } marci@76: InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} marci@76: */ marci@76: //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} marci@76: marci@76: //template I &goNext(I &i); { return graph->goNext(i); } marci@76: //template I next(const I i); { return graph->goNext(i); } marci@76: marci@76: template< typename It > It first() const { marci@76: It e; getFirst(e); return e; } marci@76: marci@76: template< typename It > It first(NodeIt v) const { marci@76: It e; getFirst(e, v); return e; } marci@76: marci@76: NodeIt head(const EdgeIt& e) const { return graph->head(e); } marci@76: NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } marci@76: marci@76: template NodeIt aNode(const I& e) const { marci@76: return graph->aNode(e); } marci@76: template NodeIt bNode(const I& e) const { marci@76: return graph->bNode(e); } marci@76: marci@76: //template bool valid(const I i); marci@76: //{ return graph->valid(i); } marci@76: marci@76: //template void setInvalid(const I &i); marci@76: //{ return graph->setInvalid(i); } marci@76: marci@76: NodeIt addNode() { return graph->addNode(); } marci@76: EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { marci@76: return graph->addEdge(tail, head); } marci@76: marci@76: template void erase(const I& i) { graph->erase(i); } marci@76: marci@76: void clear() { graph->clear(); } marci@76: marci@76: template class NodeMap : public Graph::NodeMap { }; marci@76: template class EdgeMap : public Graph::EdgeMap { }; marci@76: marci@76: void setGraph(const Graph& _graph) { graph = &_graph; } marci@76: const Graph& getGraph() { return (*graph); } marci@76: marci@76: //ConstResGraphWrapper() : graph(0) { } marci@76: ConstResGraphWrapper(const Graph& _graph) : graph(&_graph) { } marci@76: }; marci@76: marci@76: marci@76: marci@76: marci@76: alpar@105: } //namespace hugo marci@76: marci@76: #endif //GRAPH_WRAPPER_H marci@76: marci@76: marci@76: // NodeIt &getFirst(NodeIt &n) { return graph->getFirst(n); } marci@76: // InEdgeIt &getFirst(InEdgeIt &e,const NodeIt &n); marci@76: // { return graph->getFirst(e,n); } marci@76: // OutEdgeIt &getFirst(OutEdgeIt &e,const NodeIt &n); marci@76: // { return graph->getFirst(e,n); } marci@76: // SymEdgeIt &getFirst(SymEdgeIt &e,const NodeIt &n); marci@76: // { return graph->getFirst(e,n); } marci@76: // EachEdgeIt &getFirst(EachEdgeIt &e); marci@76: // { return graph->getFirst(e); } marci@76: marci@76: // NodeIt next(const NodeIt &n); marci@76: // { return graph->next(n); } marci@76: // InEdgeIt next(const InEdgeIt &e); marci@76: // { return graph->next(e); } marci@76: // OutEdgeIt next(const OutEdgeIt &e); marci@76: // { return graph->next(e); } marci@76: // SymEdgeIt next(const SymEdgeIt &e); marci@76: // { return graph->next(e); } marci@76: // EachEdgeIt next(const EachEdgeIt &e); marci@76: // { return graph->next(e); } marci@76: marci@76: // NodeIt &goNext(NodeIt &n); marci@76: // { return graph->goNext(n); } marci@76: // InEdgeIt &goNext(InEdgeIt &e); marci@76: // { return graph->goNext(e); } marci@76: // OutEdgeIt &goNext(OutEdgeIt &e); marci@76: // { return graph->goNext(e); } marci@76: // SymEdgeIt &goNext(SymEdgeIt &e); marci@76: // { return graph->goNext(e); } marci@76: // EachEdgeIt &goNext(EachEdgeIt &e); marci@76: // { return graph->goNext(e); } marci@76: