1.1 --- a/src/work/marci/graph_wrapper.h Mon Mar 29 11:08:59 2004 +0000
1.2 +++ b/src/work/marci/graph_wrapper.h Mon Mar 29 16:00:00 2004 +0000
1.3 @@ -1,6 +1,6 @@
1.4 // -*- c++ -*-
1.5 -#ifndef GRAPH_WRAPPER_H
1.6 -#define GRAPH_WRAPPER_H
1.7 +#ifndef HUGO_GRAPH_WRAPPER_H
1.8 +#define HUGO_GRAPH_WRAPPER_H
1.9
1.10 #include <invalid.h>
1.11
1.12 @@ -770,24 +770,26 @@
1.13 template<typename Graph, typename Number, typename FlowMap, typename CapacityMap>
1.14 class ResGraphWrapper {
1.15 public:
1.16 - typedef Graph BaseGraph;
1.17 + //typedef Graph BaseGraph;
1.18 typedef typename Graph::Node Node;
1.19 typedef typename Graph::NodeIt NodeIt;
1.20 private:
1.21 typedef typename Graph::OutEdgeIt OldOutEdgeIt;
1.22 typedef typename Graph::InEdgeIt OldInEdgeIt;
1.23 protected:
1.24 - const Graph* graph;
1.25 + //const Graph* graph;
1.26 + typedef TrivGraphWrapper<const Graph> GraphWrapper;
1.27 + GraphWrapper gw;
1.28 FlowMap* flow;
1.29 const CapacityMap* capacity;
1.30 public:
1.31
1.32 ResGraphWrapper(const Graph& _G, FlowMap& _flow,
1.33 const CapacityMap& _capacity) :
1.34 - graph(&_G), flow(&_flow), capacity(&_capacity) { }
1.35 + gw(_G), flow(&_flow), capacity(&_capacity) { }
1.36
1.37 - void setGraph(const Graph& _graph) { graph = &_graph; }
1.38 - const Graph& getGraph() const { return (*graph); }
1.39 + //void setGraph(const Graph& _graph) { graph = &_graph; }
1.40 + //const Graph& getGraph() const { return (*graph); }
1.41
1.42 class Edge;
1.43 class OutEdgeIt;
1.44 @@ -829,12 +831,12 @@
1.45 OutEdgeIt(const Invalid& i) : Edge(i) { }
1.46 private:
1.47 OutEdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG, Node v) : Edge() {
1.48 - resG.graph->first(out, v);
1.49 - while( resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
1.50 - if (!resG.graph->valid(out)) {
1.51 + resG.gw.first(out, v);
1.52 + while( resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
1.53 + if (!resG.gw.valid(out)) {
1.54 out_or_in=0;
1.55 - resG.graph->first(in, v);
1.56 - while( resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
1.57 + resG.gw.first(in, v);
1.58 + while( resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
1.59 }
1.60 }
1.61 // public:
1.62 @@ -864,23 +866,23 @@
1.63 //EdgeIt(const EdgeIt& e) : Edge(e), v(e.v) { }
1.64 EdgeIt(const Invalid& i) : Edge(i) { }
1.65 EdgeIt(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& resG) : Edge() {
1.66 - resG.graph->first(v);
1.67 - if (resG.graph->valid(v)) resG.graph->first(out, v); else out=OldOutEdgeIt(INVALID);
1.68 - while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
1.69 - while (resG.graph->valid(v) && !resG.graph->valid(out)) {
1.70 - resG.graph->next(v);
1.71 - if (resG.graph->valid(v)) resG.graph->first(out, v);
1.72 - while (resG.graph->valid(out) && !(resG.free(out)>0) ) { resG.graph->next(out); }
1.73 + resG.gw.first(v);
1.74 + if (resG.gw.valid(v)) resG.gw.first(out, v); else out=/*OldOutEdgeIt*/(INVALID);
1.75 + while (resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
1.76 + while (resG.gw.valid(v) && !resG.gw.valid(out)) {
1.77 + resG.gw.next(v);
1.78 + if (resG.gw.valid(v)) resG.gw.first(out, v);
1.79 + while (resG.gw.valid(out) && !(resG.free(out)>0) ) { resG.gw.next(out); }
1.80 }
1.81 - if (!resG.graph->valid(out)) {
1.82 + if (!resG.gw.valid(out)) {
1.83 out_or_in=0;
1.84 - resG.graph->first(v);
1.85 - if (resG.graph->valid(v)) resG.graph->first(in, v); else in=OldInEdgeIt(INVALID);
1.86 - while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
1.87 - while (resG.graph->valid(v) && !resG.graph->valid(in)) {
1.88 - resG.graph->next(v);
1.89 - if (resG.graph->valid(v)) resG.graph->first(in, v);
1.90 - while (resG.graph->valid(in) && !(resG.free(in)>0) ) { resG.graph->next(in); }
1.91 + resG.gw.first(v);
1.92 + if (resG.gw.valid(v)) resG.gw.first(in, v); else in=/*OldInEdgeIt*/(INVALID);
1.93 + while (resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
1.94 + while (resG.gw.valid(v) && !resG.gw.valid(in)) {
1.95 + resG.gw.next(v);
1.96 + if (resG.gw.valid(v)) resG.gw.first(in, v);
1.97 + while (resG.gw.valid(in) && !(resG.free(in)>0) ) { resG.gw.next(in); }
1.98 }
1.99 }
1.100 }
1.101 @@ -917,7 +919,7 @@
1.102 // }
1.103 };
1.104
1.105 - NodeIt& first(NodeIt& v) const { return graph->first(v); }
1.106 + NodeIt& first(NodeIt& v) const { return gw.first(v); }
1.107 OutEdgeIt& first(OutEdgeIt& e, Node v) const {
1.108 e=OutEdgeIt(*this, v);
1.109 return e;
1.110 @@ -927,52 +929,52 @@
1.111 return e;
1.112 }
1.113
1.114 - NodeIt& next(NodeIt& n) const { return graph->next(n); }
1.115 + NodeIt& next(NodeIt& n) const { return gw.next(n); }
1.116
1.117 OutEdgeIt& next(OutEdgeIt& e) const {
1.118 if (e.out_or_in) {
1.119 - Node v=graph->aNode(e.out);
1.120 - graph->next(e.out);
1.121 - while( graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
1.122 - if (!graph->valid(e.out)) {
1.123 + Node v=gw.aNode(e.out);
1.124 + gw.next(e.out);
1.125 + while( gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
1.126 + if (!gw.valid(e.out)) {
1.127 e.out_or_in=0;
1.128 - graph->first(e.in, v);
1.129 - while( graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.130 + gw.first(e.in, v);
1.131 + while( gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.132 }
1.133 } else {
1.134 - graph->next(e.in);
1.135 - while( graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.136 + gw.next(e.in);
1.137 + while( gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.138 }
1.139 return e;
1.140 }
1.141
1.142 EdgeIt& next(EdgeIt& e) const {
1.143 if (e.out_or_in) {
1.144 - graph->next(e.out);
1.145 - while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
1.146 - while (graph->valid(e.v) && !graph->valid(e.out)) {
1.147 - graph->next(e.v);
1.148 - if (graph->valid(e.v)) graph->first(e.out, e.v);
1.149 - while (graph->valid(e.out) && !(free(e.out)>0) ) { graph->next(e.out); }
1.150 + gw.next(e.out);
1.151 + while (gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
1.152 + while (gw.valid(e.v) && !gw.valid(e.out)) {
1.153 + gw.next(e.v);
1.154 + if (gw.valid(e.v)) gw.first(e.out, e.v);
1.155 + while (gw.valid(e.out) && !(free(e.out)>0) ) { gw.next(e.out); }
1.156 }
1.157 - if (!graph->valid(e.out)) {
1.158 + if (!gw.valid(e.out)) {
1.159 e.out_or_in=0;
1.160 - graph->first(e.v);
1.161 - if (graph->valid(e.v)) graph->first(e.in, e.v); else e.in=OldInEdgeIt(INVALID);
1.162 - while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.163 - while (graph->valid(e.v) && !graph->valid(e.in)) {
1.164 - graph->next(e.v);
1.165 - if (graph->valid(e.v)) graph->first(e.in, e.v);
1.166 - while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.167 + gw.first(e.v);
1.168 + if (gw.valid(e.v)) gw.first(e.in, e.v); else e.in=/*OldInEdgeIt*/(INVALID);
1.169 + while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.170 + while (gw.valid(e.v) && !gw.valid(e.in)) {
1.171 + gw.next(e.v);
1.172 + if (gw.valid(e.v)) gw.first(e.in, e.v);
1.173 + while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.174 }
1.175 }
1.176 } else {
1.177 - graph->next(e.in);
1.178 - while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.179 - while (graph->valid(e.v) && !graph->valid(e.in)) {
1.180 - graph->next(e.v);
1.181 - if (graph->valid(e.v)) graph->first(e.in, e.v);
1.182 - while (graph->valid(e.in) && !(free(e.in)>0) ) { graph->next(e.in); }
1.183 + gw.next(e.in);
1.184 + while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.185 + while (gw.valid(e.v) && !gw.valid(e.in)) {
1.186 + gw.next(e.v);
1.187 + if (gw.valid(e.v)) gw.first(e.in, e.v);
1.188 + while (gw.valid(e.in) && !(free(e.in)>0) ) { gw.next(e.in); }
1.189 }
1.190 }
1.191 return e;
1.192 @@ -994,20 +996,20 @@
1.193 }
1.194
1.195 Node tail(Edge e) const {
1.196 - return ((e.out_or_in) ? graph->aNode(e.out) : graph->aNode(e.in)); }
1.197 + return ((e.out_or_in) ? gw.aNode(e.out) : gw.aNode(e.in)); }
1.198 Node head(Edge e) const {
1.199 - return ((e.out_or_in) ? graph->bNode(e.out) : graph->bNode(e.in)); }
1.200 + return ((e.out_or_in) ? gw.bNode(e.out) : gw.bNode(e.in)); }
1.201
1.202 Node aNode(OutEdgeIt e) const {
1.203 - return ((e.out_or_in) ? graph->aNode(e.out) : graph->aNode(e.in)); }
1.204 + return ((e.out_or_in) ? gw.aNode(e.out) : gw.aNode(e.in)); }
1.205 Node bNode(OutEdgeIt e) const {
1.206 - return ((e.out_or_in) ? graph->bNode(e.out) : graph->bNode(e.in)); }
1.207 + return ((e.out_or_in) ? gw.bNode(e.out) : gw.bNode(e.in)); }
1.208
1.209 - int id(Node v) const { return graph->id(v); }
1.210 + int id(Node v) const { return gw.id(v); }
1.211
1.212 - bool valid(Node n) const { return graph->valid(n); }
1.213 + bool valid(Node n) const { return gw.valid(n); }
1.214 bool valid(Edge e) const {
1.215 - return e.out_or_in ? graph->valid(e.out) : graph->valid(e.in); }
1.216 + return e.out_or_in ? gw.valid(e.out) : gw.valid(e.in); }
1.217
1.218 void augment(const Edge& e, Number a) const {
1.219 if (e.out_or_in)
1.220 @@ -1031,12 +1033,12 @@
1.221 return (flow->get(in));
1.222 }
1.223
1.224 - template<typename T> class NodeMap : public Graph::NodeMap<T> {
1.225 + template<typename T> class NodeMap : public GraphWrapper::NodeMap<T> {
1.226 public:
1.227 NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G)
1.228 - : Graph::NodeMap<T>(_G.getGraph()) { }
1.229 + : GraphWrapper::NodeMap<T>(_G.gw) { }
1.230 NodeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G,
1.231 - T a) : Graph::NodeMap<T>(_G.getGraph(), a) { }
1.232 + T a) : GraphWrapper::NodeMap<T>(_G.gw, a) { }
1.233 };
1.234
1.235 // template <typename T>
1.236 @@ -1051,10 +1053,10 @@
1.237
1.238 template <typename T>
1.239 class EdgeMap {
1.240 - typename Graph::EdgeMap<T> forward_map, backward_map;
1.241 + typename GraphWrapper::EdgeMap<T> forward_map, backward_map;
1.242 public:
1.243 - EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) : forward_map(_G.getGraph()), backward_map(_G.getGraph()) { }
1.244 - EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, T a) : forward_map(_G.getGraph(), a), backward_map(_G.getGraph(), a) { }
1.245 + EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G) : forward_map(_G.gw), backward_map(_G.gw) { }
1.246 + EdgeMap(const ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>& _G, T a) : forward_map(_G.gw, a), backward_map(_G.gw, a) { }
1.247 void set(Edge e, T a) {
1.248 if (e.out_or_in)
1.249 forward_map.set(e.out, a);
1.250 @@ -1127,8 +1129,8 @@
1.251 // return first(i, p); }
1.252
1.253 //template<typename I> I getNext(const I& i) const {
1.254 - // return graph->getNext(i); }
1.255 - //template<typename I> I& next(I &i) const { return graph->next(i); }
1.256 + // return gw.getNext(i); }
1.257 + //template<typename I> I& next(I &i) const { return gw.next(i); }
1.258
1.259 template< typename It > It first() const {
1.260 It e; first(e); return e; }
1.261 @@ -1136,23 +1138,23 @@
1.262 template< typename It > It first(const Node& v) const {
1.263 It e; first(e, v); return e; }
1.264
1.265 - //Node head(const Edge& e) const { return graph->head(e); }
1.266 - //Node tail(const Edge& e) const { return graph->tail(e); }
1.267 + //Node head(const Edge& e) const { return gw.head(e); }
1.268 + //Node tail(const Edge& e) const { return gw.tail(e); }
1.269
1.270 //template<typename I> bool valid(const I& i) const
1.271 - // { return graph->valid(i); }
1.272 + // { return gw.valid(i); }
1.273
1.274 - //int nodeNum() const { return graph->nodeNum(); }
1.275 - //int edgeNum() const { return graph->edgeNum(); }
1.276 + //int nodeNum() const { return gw.nodeNum(); }
1.277 + //int edgeNum() const { return gw.edgeNum(); }
1.278
1.279 //template<typename I> Node aNode(const I& e) const {
1.280 - // return graph->aNode(e); }
1.281 + // return gw.aNode(e); }
1.282 //template<typename I> Node bNode(const I& e) const {
1.283 - // return graph->bNode(e); }
1.284 + // return gw.bNode(e); }
1.285
1.286 - //Node addNode() const { return graph->addNode(); }
1.287 + //Node addNode() const { return gw.addNode(); }
1.288 //Edge addEdge(const Node& tail, const Node& head) const {
1.289 - // return graph->addEdge(tail, head); }
1.290 + // return gw.addEdge(tail, head); }
1.291
1.292 //void erase(const OutEdgeIt& e) {
1.293 // first_out_edge(this->tail(e))=e;
1.294 @@ -1162,9 +1164,9 @@
1.295 next(f);
1.296 first_out_edges.set(this->tail(e), f);
1.297 }
1.298 - //template<typename I> void erase(const I& i) const { graph->erase(i); }
1.299 + //template<typename I> void erase(const I& i) const { gw.erase(i); }
1.300
1.301 - //void clear() const { graph->clear(); }
1.302 + //void clear() const { gw.clear(); }
1.303
1.304 template<typename T> class NodeMap : public ResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::NodeMap<T> {
1.305 public:
1.306 @@ -1209,7 +1211,7 @@
1.307 public:
1.308 FilterGraphWrapper(const Graph& _G, FlowMap& _flow,
1.309 const CapacityMap& _capacity) :
1.310 - ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>(_G, _flow, _capacity), dist(*this, graph->nodeNum()) {
1.311 + ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>(_G, _flow, _capacity), dist(*this, gw.nodeNum()) {
1.312 }
1.313
1.314 OutEdgeIt& first(OutEdgeIt& e, const Node& n) const {
1.315 @@ -1248,13 +1250,13 @@
1.316 //void setGraph(Graph& _graph) { graph = &_graph; }
1.317 //Graph& getGraph() const { return (*graph); }
1.318
1.319 - //template<typename I> I& first(I& i) const { return graph->first(i); }
1.320 + //template<typename I> I& first(I& i) const { return gw.first(i); }
1.321 //template<typename I, typename P> I& first(I& i, const P& p) const {
1.322 - // return graph->first(i, p); }
1.323 + // return gw.first(i, p); }
1.324
1.325 //template<typename I> I getNext(const I& i) const {
1.326 - // return graph->getNext(i); }
1.327 - //template<typename I> I& next(I &i) const { return graph->next(i); }
1.328 + // return gw.getNext(i); }
1.329 + //template<typename I> I& next(I &i) const { return gw.next(i); }
1.330
1.331 template< typename It > It first() const {
1.332 It e; first(e); return e; }
1.333 @@ -1262,30 +1264,30 @@
1.334 template< typename It > It first(const Node& v) const {
1.335 It e; first(e, v); return e; }
1.336
1.337 - //Node head(const Edge& e) const { return graph->head(e); }
1.338 - //Node tail(const Edge& e) const { return graph->tail(e); }
1.339 + //Node head(const Edge& e) const { return gw.head(e); }
1.340 + //Node tail(const Edge& e) const { return gw.tail(e); }
1.341
1.342 //template<typename I> bool valid(const I& i) const
1.343 - // { return graph->valid(i); }
1.344 + // { return gw.valid(i); }
1.345
1.346 //template<typename I> void setInvalid(const I &i);
1.347 - //{ return graph->setInvalid(i); }
1.348 + //{ return gw.setInvalid(i); }
1.349
1.350 - //int nodeNum() const { return graph->nodeNum(); }
1.351 - //int edgeNum() const { return graph->edgeNum(); }
1.352 + //int nodeNum() const { return gw.nodeNum(); }
1.353 + //int edgeNum() const { return gw.edgeNum(); }
1.354
1.355 //template<typename I> Node aNode(const I& e) const {
1.356 - // return graph->aNode(e); }
1.357 + // return gw.aNode(e); }
1.358 //template<typename I> Node bNode(const I& e) const {
1.359 - // return graph->bNode(e); }
1.360 + // return gw.bNode(e); }
1.361
1.362 - //Node addNode() const { return graph->addNode(); }
1.363 + //Node addNode() const { return gw.addNode(); }
1.364 //Edge addEdge(const Node& tail, const Node& head) const {
1.365 - // return graph->addEdge(tail, head); }
1.366 + // return gw.addEdge(tail, head); }
1.367
1.368 - //template<typename I> void erase(const I& i) const { graph->erase(i); }
1.369 + //template<typename I> void erase(const I& i) const { gw.erase(i); }
1.370
1.371 - //void clear() const { graph->clear(); }
1.372 + //void clear() const { gw.clear(); }
1.373
1.374 template<typename T> class NodeMap : public ErasingResGraphWrapper<Graph, Number, FlowMap, CapacityMap>::NodeMap<T> {
1.375 public:
1.376 @@ -1341,10 +1343,10 @@
1.377 // typedef typename Graph::SymEdgeIt SymEdgeIt;
1.378 // typedef typename Graph::EdgeIt EdgeIt;
1.379
1.380 -// int nodeNum() const { return graph->nodeNum(); }
1.381 -// int edgeNum() const { return graph->edgeNum(); }
1.382 +// int nodeNum() const { return gw.nodeNum(); }
1.383 +// int edgeNum() const { return gw.edgeNum(); }
1.384
1.385 -// Node& first(Node& n) const { return graph->first(n); }
1.386 +// Node& first(Node& n) const { return gw.first(n); }
1.387
1.388 // // Edge and SymEdge is missing!!!!
1.389 // // Edge <-> In/OutEdgeIt conversion is missing!!!!
1.390 @@ -1353,70 +1355,70 @@
1.391 // OutEdgeIt& first(OutEdgeIt& e, const Node& n) const
1.392 // {
1.393 // e.n=n;
1.394 -// graph->first(e.o,n);
1.395 -// while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
1.396 -// graph->goNext(e.o);
1.397 -// if(!graph->valid(e.o)) {
1.398 -// graph->first(e.i,n);
1.399 -// while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
1.400 -// graph->goNext(e.i);
1.401 +// gw.first(e.o,n);
1.402 +// while(gw.valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
1.403 +// gw.goNext(e.o);
1.404 +// if(!gw.valid(e.o)) {
1.405 +// gw.first(e.i,n);
1.406 +// while(gw.valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
1.407 +// gw.goNext(e.i);
1.408 // }
1.409 // return e;
1.410 // }
1.411 // /*
1.412 // OutEdgeIt &goNext(OutEdgeIt &e)
1.413 // {
1.414 -// if(graph->valid(e.o)) {
1.415 -// while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
1.416 -// graph->goNext(e.o);
1.417 -// if(graph->valid(e.o)) return e;
1.418 -// else graph->first(e.i,e.n);
1.419 +// if(gw.valid(e.o)) {
1.420 +// while(gw.valid(e.o) && fmap.get(e.o)>=himap.get(e.o))
1.421 +// gw.goNext(e.o);
1.422 +// if(gw.valid(e.o)) return e;
1.423 +// else gw.first(e.i,e.n);
1.424 // }
1.425 // else {
1.426 -// while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
1.427 -// graph->goNext(e.i);
1.428 +// while(gw.valid(e.i) && fmap.get(e.i)<=lomap.get(e.i))
1.429 +// gw.goNext(e.i);
1.430 // return e;
1.431 // }
1.432 // }
1.433 // OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);}
1.434 // */
1.435 -// //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);}
1.436 +// //bool valid(const OutEdgeIt e) { return gw.valid(e.o)||gw.valid(e.i);}
1.437
1.438 // //FIXME
1.439 // InEdgeIt& first(InEdgeIt& e, const Node& n) const
1.440 // {
1.441 // e.n=n;
1.442 -// graph->first(e.i,n);
1.443 -// while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
1.444 -// graph->goNext(e.i);
1.445 -// if(!graph->valid(e.i)) {
1.446 -// graph->first(e.o,n);
1.447 -// while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
1.448 -// graph->goNext(e.o);
1.449 +// gw.first(e.i,n);
1.450 +// while(gw.valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
1.451 +// gw.goNext(e.i);
1.452 +// if(!gw.valid(e.i)) {
1.453 +// gw.first(e.o,n);
1.454 +// while(gw.valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
1.455 +// gw.goNext(e.o);
1.456 // }
1.457 // return e;
1.458 // }
1.459 // /*
1.460 // InEdgeIt &goNext(InEdgeIt &e)
1.461 // {
1.462 -// if(graph->valid(e.i)) {
1.463 -// while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
1.464 -// graph->goNext(e.i);
1.465 -// if(graph->valid(e.i)) return e;
1.466 -// else graph->first(e.o,e.n);
1.467 +// if(gw.valid(e.i)) {
1.468 +// while(gw.valid(e.i) && fmap.get(e.i)>=himap.get(e.i))
1.469 +// gw.goNext(e.i);
1.470 +// if(gw.valid(e.i)) return e;
1.471 +// else gw.first(e.o,e.n);
1.472 // }
1.473 // else {
1.474 -// while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
1.475 -// graph->goNext(e.o);
1.476 +// while(gw.valid(e.o) && fmap.get(e.o)<=lomap.get(e.o))
1.477 +// gw.goNext(e.o);
1.478 // return e;
1.479 // }
1.480 // }
1.481 // InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);}
1.482 // */
1.483 -// //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);}
1.484 +// //bool valid(const InEdgeIt e) { return gw.valid(e.i)||gw.valid(e.o);}
1.485
1.486 -// //template<typename I> I &goNext(I &i); { return graph->goNext(i); }
1.487 -// //template<typename I> I next(const I i); { return graph->goNext(i); }
1.488 +// //template<typename I> I &goNext(I &i); { return gw.goNext(i); }
1.489 +// //template<typename I> I next(const I i); { return gw.goNext(i); }
1.490
1.491 // template< typename It > It first() const {
1.492 // It e; first(e); return e; }
1.493 @@ -1424,27 +1426,27 @@
1.494 // template< typename It > It first(Node v) const {
1.495 // It e; first(e, v); return e; }
1.496
1.497 -// Node head(const Edge& e) const { return graph->head(e); }
1.498 -// Node tail(const Edge& e) const { return graph->tail(e); }
1.499 +// Node head(const Edge& e) const { return gw.head(e); }
1.500 +// Node tail(const Edge& e) const { return gw.tail(e); }
1.501
1.502 // template<typename I> Node aNode(const I& e) const {
1.503 -// return graph->aNode(e); }
1.504 +// return gw.aNode(e); }
1.505 // template<typename I> Node bNode(const I& e) const {
1.506 -// return graph->bNode(e); }
1.507 +// return gw.bNode(e); }
1.508
1.509 // //template<typename I> bool valid(const I i);
1.510 -// //{ return graph->valid(i); }
1.511 +// //{ return gw.valid(i); }
1.512
1.513 // //template<typename I> void setInvalid(const I &i);
1.514 -// //{ return graph->setInvalid(i); }
1.515 +// //{ return gw.setInvalid(i); }
1.516
1.517 -// Node addNode() { return graph->addNode(); }
1.518 +// Node addNode() { return gw.addNode(); }
1.519 // Edge addEdge(const Node& tail, const Node& head) {
1.520 -// return graph->addEdge(tail, head); }
1.521 +// return gw.addEdge(tail, head); }
1.522
1.523 -// template<typename I> void erase(const I& i) { graph->erase(i); }
1.524 +// template<typename I> void erase(const I& i) { gw.erase(i); }
1.525
1.526 -// void clear() { graph->clear(); }
1.527 +// void clear() { gw.clear(); }
1.528
1.529 // template<typename S> class NodeMap : public Graph::NodeMap<S> { };
1.530 // template<typename S> class EdgeMap : public Graph::EdgeMap<S> { };
1.531 @@ -1458,5 +1460,5 @@
1.532
1.533 } //namespace hugo
1.534
1.535 -#endif //GRAPH_WRAPPER_H
1.536 +#endif //HUGO_GRAPH_WRAPPER_H
1.537