273 //SymGraphWrapper() : graph(0) { } |
273 //SymGraphWrapper() : graph(0) { } |
274 SymGraphWrapper(Graph& _graph) : graph(&_graph) { } |
274 SymGraphWrapper(Graph& _graph) : graph(&_graph) { } |
275 }; |
275 }; |
276 |
276 |
277 |
277 |
278 // FIXME: comparison should be made better!!! |
278 |
279 template<typename Graph, typename T, typename LowerMap, typename FlowMap, typename UpperMap> |
279 // // FIXME: comparison should be made better!!! |
280 class ResGraphWrapper |
280 // template<typename Graph, typename T, typename LowerMap, typename FlowMap, typename UpperMap> |
281 { |
281 // class ResGraphWrapper |
282 Graph* graph; |
282 // { |
283 |
283 // Graph* graph; |
284 public: |
284 |
285 typedef Graph BaseGraph; |
285 // public: |
286 |
286 // typedef Graph BaseGraph; |
287 typedef typename Graph::NodeIt NodeIt; |
287 |
288 typedef typename Graph::EdgeIt EdgeIt; |
288 // typedef typename Graph::NodeIt NodeIt; |
289 |
289 // typedef typename Graph::EdgeIt EdgeIt; |
290 typedef typename Graph::EachNodeIt EachNodeIt; |
290 |
|
291 // typedef typename Graph::EachNodeIt EachNodeIt; |
291 |
292 |
292 class OutEdgeIt { |
293 // class OutEdgeIt { |
293 public: |
294 // public: |
294 //Graph::NodeIt n; |
295 // //Graph::NodeIt n; |
295 bool out_or_in; |
296 // bool out_or_in; |
296 typename Graph::OutEdgeIt o; |
297 // typename Graph::OutEdgeIt o; |
297 typename Graph::InEdgeIt i; |
298 // typename Graph::InEdgeIt i; |
298 }; |
299 // }; |
299 class InEdgeIt { |
300 // class InEdgeIt { |
300 public: |
301 // public: |
301 //Graph::NodeIt n; |
302 // //Graph::NodeIt n; |
302 bool out_or_in; |
303 // bool out_or_in; |
303 typename Graph::OutEdgeIt o; |
304 // typename Graph::OutEdgeIt o; |
304 typename Graph::InEdgeIt i; |
305 // typename Graph::InEdgeIt i; |
305 }; |
306 // }; |
306 typedef typename Graph::SymEdgeIt SymEdgeIt; |
307 // typedef typename Graph::SymEdgeIt SymEdgeIt; |
307 typedef typename Graph::EachEdgeIt EachEdgeIt; |
308 // typedef typename Graph::EachEdgeIt EachEdgeIt; |
308 |
309 |
309 int nodeNum() const { return graph->nodeNum(); } |
310 // int nodeNum() const { return graph->nodeNum(); } |
310 int edgeNum() const { return graph->edgeNum(); } |
311 // int edgeNum() const { return graph->edgeNum(); } |
311 |
312 |
312 NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } |
313 // NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } |
313 |
314 |
314 // EachEdge and SymEdge is missing!!!! |
315 // // EachEdge and SymEdge is missing!!!! |
315 // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! |
316 // // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! |
316 |
317 |
317 //FIXME |
318 // //FIXME |
318 OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const |
319 // OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const |
319 { |
320 // { |
320 e.n=n; |
321 // e.n=n; |
321 graph->getFirst(e.o,n); |
322 // graph->getFirst(e.o,n); |
322 while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
323 // while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
323 graph->goNext(e.o); |
324 // graph->goNext(e.o); |
324 if(!graph->valid(e.o)) { |
325 // if(!graph->valid(e.o)) { |
325 graph->getFirst(e.i,n); |
326 // graph->getFirst(e.i,n); |
326 while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
327 // while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
327 graph->goNext(e.i); |
328 // graph->goNext(e.i); |
328 } |
329 // } |
329 return e; |
330 // return e; |
330 } |
331 // } |
331 /* |
332 // /* |
332 OutEdgeIt &goNext(OutEdgeIt &e) |
333 // OutEdgeIt &goNext(OutEdgeIt &e) |
333 { |
334 // { |
334 if(graph->valid(e.o)) { |
335 // if(graph->valid(e.o)) { |
335 while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
336 // while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
336 graph->goNext(e.o); |
337 // graph->goNext(e.o); |
337 if(graph->valid(e.o)) return e; |
338 // if(graph->valid(e.o)) return e; |
338 else graph->getFirst(e.i,e.n); |
339 // else graph->getFirst(e.i,e.n); |
339 } |
340 // } |
340 else { |
341 // else { |
341 while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
342 // while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
342 graph->goNext(e.i); |
343 // graph->goNext(e.i); |
343 return e; |
344 // return e; |
344 } |
345 // } |
345 } |
346 // } |
346 OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} |
347 // OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} |
347 */ |
348 // */ |
348 //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} |
349 // //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} |
349 |
350 |
350 //FIXME |
351 // //FIXME |
351 InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const |
352 // InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const |
352 { |
353 // { |
353 e.n=n; |
354 // e.n=n; |
354 graph->getFirst(e.i,n); |
355 // graph->getFirst(e.i,n); |
355 while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
356 // while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
356 graph->goNext(e.i); |
357 // graph->goNext(e.i); |
357 if(!graph->valid(e.i)) { |
358 // if(!graph->valid(e.i)) { |
358 graph->getFirst(e.o,n); |
359 // graph->getFirst(e.o,n); |
359 while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
360 // while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
360 graph->goNext(e.o); |
361 // graph->goNext(e.o); |
361 } |
362 // } |
362 return e; |
363 // return e; |
363 } |
364 // } |
364 /* |
365 // /* |
365 InEdgeIt &goNext(InEdgeIt &e) |
366 // InEdgeIt &goNext(InEdgeIt &e) |
366 { |
367 // { |
367 if(graph->valid(e.i)) { |
368 // if(graph->valid(e.i)) { |
368 while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
369 // while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
369 graph->goNext(e.i); |
370 // graph->goNext(e.i); |
370 if(graph->valid(e.i)) return e; |
371 // if(graph->valid(e.i)) return e; |
371 else graph->getFirst(e.o,e.n); |
372 // else graph->getFirst(e.o,e.n); |
372 } |
373 // } |
373 else { |
374 // else { |
374 while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
375 // while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
375 graph->goNext(e.o); |
376 // graph->goNext(e.o); |
376 return e; |
377 // return e; |
377 } |
378 // } |
378 } |
379 // } |
379 InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} |
380 // InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} |
380 */ |
381 // */ |
381 //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} |
382 // //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} |
382 |
383 |
383 //template<typename I> I &goNext(I &i); { return graph->goNext(i); } |
384 // //template<typename I> I &goNext(I &i); { return graph->goNext(i); } |
384 //template<typename I> I next(const I i); { return graph->goNext(i); } |
385 // //template<typename I> I next(const I i); { return graph->goNext(i); } |
385 |
386 |
386 template< typename It > It first() const { |
387 // template< typename It > It first() const { |
387 It e; getFirst(e); return e; } |
388 // It e; getFirst(e); return e; } |
388 |
389 |
389 template< typename It > It first(NodeIt v) const { |
390 // template< typename It > It first(NodeIt v) const { |
390 It e; getFirst(e, v); return e; } |
391 // It e; getFirst(e, v); return e; } |
391 |
392 |
392 NodeIt head(const EdgeIt& e) const { return graph->head(e); } |
393 // NodeIt head(const EdgeIt& e) const { return graph->head(e); } |
393 NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } |
394 // NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } |
394 |
395 |
395 template<typename I> NodeIt aNode(const I& e) const { |
396 // template<typename I> NodeIt aNode(const I& e) const { |
396 return graph->aNode(e); } |
397 // return graph->aNode(e); } |
397 template<typename I> NodeIt bNode(const I& e) const { |
398 // template<typename I> NodeIt bNode(const I& e) const { |
398 return graph->bNode(e); } |
399 // return graph->bNode(e); } |
399 |
400 |
400 //template<typename I> bool valid(const I i); |
401 // //template<typename I> bool valid(const I i); |
401 //{ return graph->valid(i); } |
402 // //{ return graph->valid(i); } |
402 |
403 |
403 //template<typename I> void setInvalid(const I &i); |
404 // //template<typename I> void setInvalid(const I &i); |
404 //{ return graph->setInvalid(i); } |
405 // //{ return graph->setInvalid(i); } |
405 |
406 |
406 NodeIt addNode() { return graph->addNode(); } |
407 // NodeIt addNode() { return graph->addNode(); } |
407 EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { |
408 // EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { |
408 return graph->addEdge(tail, head); } |
409 // return graph->addEdge(tail, head); } |
409 |
410 |
410 template<typename I> void erase(const I& i) { graph->erase(i); } |
411 // template<typename I> void erase(const I& i) { graph->erase(i); } |
411 |
412 |
412 void clear() { graph->clear(); } |
413 // void clear() { graph->clear(); } |
413 |
414 |
414 template<typename S> class NodeMap : public Graph::NodeMap<S> { }; |
415 // template<typename S> class NodeMap : public Graph::NodeMap<S> { }; |
415 template<typename S> class EdgeMap : public Graph::EdgeMap<S> { }; |
416 // template<typename S> class EdgeMap : public Graph::EdgeMap<S> { }; |
416 |
417 |
417 void setGraph(Graph& _graph) { graph = &_graph; } |
418 // void setGraph(Graph& _graph) { graph = &_graph; } |
418 Graph& getGraph() { return (*graph); } |
419 // Graph& getGraph() { return (*graph); } |
419 |
420 |
420 //ResGraphWrapper() : graph(0) { } |
421 // //ResGraphWrapper() : graph(0) { } |
421 ResGraphWrapper(Graph& _graph) : graph(&_graph) { } |
422 // ResGraphWrapper(Graph& _graph) : graph(&_graph) { } |
422 }; |
423 // }; |
423 |
424 |
424 |
425 |
425 // FIXME: comparison should be made better!!! |
426 // // FIXME: comparison should be made better!!! |
426 template<typename Graph, typename T, typename LowerMap, typename FlowMap, typename UpperMap> |
427 // template<typename Graph, typename T, typename LowerMap, typename FlowMap, typename UpperMap> |
427 class ConstResGraphWrapper |
428 // class ConstResGraphWrapper |
428 { |
429 // { |
429 const Graph* graph; |
430 // const Graph* graph; |
430 const LowerMap* low; |
431 // const LowerMap* low; |
431 FlowMap* flow; |
432 // FlowMap* flow; |
432 const UpperMap* up; |
433 // const UpperMap* up; |
433 public: |
434 // public: |
434 typedef Graph BaseGraph; |
435 // typedef Graph BaseGraph; |
435 |
436 |
436 typedef typename Graph::NodeIt NodeIt; |
437 // typedef typename Graph::NodeIt NodeIt; |
437 typedef typename Graph::EdgeIt EdgeIt; |
438 // typedef typename Graph::EdgeIt EdgeIt; |
438 |
439 |
439 typedef typename Graph::EachNodeIt EachNodeIt; |
440 // typedef typename Graph::EachNodeIt EachNodeIt; |
440 |
441 |
441 class OutEdgeIt { |
442 // class OutEdgeIt { |
442 public: |
443 // public: |
443 //Graph::NodeIt n; |
444 // //Graph::NodeIt n; |
444 bool out_or_in; |
445 // bool out_or_in; |
445 typename Graph::SymEdgeIt sym; |
446 // typename Graph::SymEdgeIt sym; |
446 }; |
447 // }; |
447 class InEdgeIt { |
448 // class InEdgeIt { |
448 public: |
449 // public: |
449 //Graph::NodeIt n; |
450 // //Graph::NodeIt n; |
450 bool out_or_in; |
451 // bool out_or_in; |
451 typename Graph::OutEdgeIt sym; |
452 // typename Graph::OutEdgeIt sym; |
452 }; |
453 // }; |
453 //typedef typename Graph::SymEdgeIt SymEdgeIt; |
454 // //typedef typename Graph::SymEdgeIt SymEdgeIt; |
454 //typedef typename Graph::EachEdgeIt EachEdgeIt; |
455 // //typedef typename Graph::EachEdgeIt EachEdgeIt; |
455 |
456 |
456 int nodeNum() const { return graph->nodeNum(); } |
457 // int nodeNum() const { return graph->nodeNum(); } |
457 //int edgeNum() const { return graph->edgeNum(); } |
458 // //int edgeNum() const { return graph->edgeNum(); } |
458 |
459 |
459 NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } |
460 // NodeIt& getFirst(NodeIt& n) const { return graph->getFirst(n); } |
460 |
461 |
461 // EachEdge and SymEdge is missing!!!! |
462 // // EachEdge and SymEdge is missing!!!! |
462 // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! |
463 // // EdgeIt <-> In/OutEdgeIt conversion is missing!!!! |
463 |
464 |
464 |
465 |
465 //FIXME |
466 // //FIXME |
466 OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const |
467 // OutEdgeIt& getFirst(OutEdgeIt& e, const NodeIt& n) const |
467 { |
468 // { |
468 e.n=n; |
469 // e.n=n; |
469 graph->getFirst(e.o,n); |
470 // graph->getFirst(e.o,n); |
470 while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
471 // while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
471 graph->goNext(e.o); |
472 // graph->goNext(e.o); |
472 if(!graph->valid(e.o)) { |
473 // if(!graph->valid(e.o)) { |
473 graph->getFirst(e.i,n); |
474 // graph->getFirst(e.i,n); |
474 while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
475 // while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
475 graph->goNext(e.i); |
476 // graph->goNext(e.i); |
476 } |
477 // } |
477 return e; |
478 // return e; |
478 } |
479 // } |
479 /* |
480 // /* |
480 OutEdgeIt &goNext(OutEdgeIt &e) |
481 // OutEdgeIt &goNext(OutEdgeIt &e) |
481 { |
482 // { |
482 if(graph->valid(e.o)) { |
483 // if(graph->valid(e.o)) { |
483 while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
484 // while(graph->valid(e.o) && fmap.get(e.o)>=himap.get(e.o)) |
484 graph->goNext(e.o); |
485 // graph->goNext(e.o); |
485 if(graph->valid(e.o)) return e; |
486 // if(graph->valid(e.o)) return e; |
486 else graph->getFirst(e.i,e.n); |
487 // else graph->getFirst(e.i,e.n); |
487 } |
488 // } |
488 else { |
489 // else { |
489 while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
490 // while(graph->valid(e.i) && fmap.get(e.i)<=lomap.get(e.i)) |
490 graph->goNext(e.i); |
491 // graph->goNext(e.i); |
491 return e; |
492 // return e; |
492 } |
493 // } |
493 } |
494 // } |
494 OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} |
495 // OutEdgeIt Next(const OutEdgeIt &e) {OutEdgeIt t(e); return goNext(t);} |
495 */ |
496 // */ |
496 //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} |
497 // //bool valid(const OutEdgeIt e) { return graph->valid(e.o)||graph->valid(e.i);} |
497 |
498 |
498 //FIXME |
499 // //FIXME |
499 InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const |
500 // InEdgeIt& getFirst(InEdgeIt& e, const NodeIt& n) const |
500 { |
501 // { |
501 e.n=n; |
502 // e.n=n; |
502 graph->getFirst(e.i,n); |
503 // graph->getFirst(e.i,n); |
503 while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
504 // while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
504 graph->goNext(e.i); |
505 // graph->goNext(e.i); |
505 if(!graph->valid(e.i)) { |
506 // if(!graph->valid(e.i)) { |
506 graph->getFirst(e.o,n); |
507 // graph->getFirst(e.o,n); |
507 while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
508 // while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
508 graph->goNext(e.o); |
509 // graph->goNext(e.o); |
509 } |
510 // } |
510 return e; |
511 // return e; |
511 } |
512 // } |
512 /* |
513 // /* |
513 InEdgeIt &goNext(InEdgeIt &e) |
514 // InEdgeIt &goNext(InEdgeIt &e) |
514 { |
515 // { |
515 if(graph->valid(e.i)) { |
516 // if(graph->valid(e.i)) { |
516 while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
517 // while(graph->valid(e.i) && fmap.get(e.i)>=himap.get(e.i)) |
517 graph->goNext(e.i); |
518 // graph->goNext(e.i); |
518 if(graph->valid(e.i)) return e; |
519 // if(graph->valid(e.i)) return e; |
519 else graph->getFirst(e.o,e.n); |
520 // else graph->getFirst(e.o,e.n); |
520 } |
521 // } |
521 else { |
522 // else { |
522 while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
523 // while(graph->valid(e.o) && fmap.get(e.o)<=lomap.get(e.o)) |
523 graph->goNext(e.o); |
524 // graph->goNext(e.o); |
524 return e; |
525 // return e; |
525 } |
526 // } |
526 } |
527 // } |
527 InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} |
528 // InEdgeIt Next(const InEdgeIt &e) {InEdgeIt t(e); return goNext(t);} |
528 */ |
529 // */ |
529 //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} |
530 // //bool valid(const InEdgeIt e) { return graph->valid(e.i)||graph->valid(e.o);} |
530 |
531 |
531 //template<typename I> I &goNext(I &i); { return graph->goNext(i); } |
532 // //template<typename I> I &goNext(I &i); { return graph->goNext(i); } |
532 //template<typename I> I next(const I i); { return graph->goNext(i); } |
533 // //template<typename I> I next(const I i); { return graph->goNext(i); } |
533 |
534 |
534 template< typename It > It first() const { |
535 // template< typename It > It first() const { |
535 It e; getFirst(e); return e; } |
536 // It e; getFirst(e); return e; } |
536 |
537 |
537 template< typename It > It first(NodeIt v) const { |
538 // template< typename It > It first(NodeIt v) const { |
538 It e; getFirst(e, v); return e; } |
539 // It e; getFirst(e, v); return e; } |
539 |
540 |
540 NodeIt head(const EdgeIt& e) const { return graph->head(e); } |
541 // NodeIt head(const EdgeIt& e) const { return graph->head(e); } |
541 NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } |
542 // NodeIt tail(const EdgeIt& e) const { return graph->tail(e); } |
542 |
543 |
543 template<typename I> NodeIt aNode(const I& e) const { |
544 // template<typename I> NodeIt aNode(const I& e) const { |
544 return graph->aNode(e); } |
545 // return graph->aNode(e); } |
545 template<typename I> NodeIt bNode(const I& e) const { |
546 // template<typename I> NodeIt bNode(const I& e) const { |
546 return graph->bNode(e); } |
547 // return graph->bNode(e); } |
547 |
548 |
548 //template<typename I> bool valid(const I i); |
549 // //template<typename I> bool valid(const I i); |
549 //{ return graph->valid(i); } |
550 // //{ return graph->valid(i); } |
550 |
551 |
551 //template<typename I> void setInvalid(const I &i); |
552 // //template<typename I> void setInvalid(const I &i); |
552 //{ return graph->setInvalid(i); } |
553 // //{ return graph->setInvalid(i); } |
553 |
554 |
554 NodeIt addNode() { return graph->addNode(); } |
555 // NodeIt addNode() { return graph->addNode(); } |
555 EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { |
556 // EdgeIt addEdge(const NodeIt& tail, const NodeIt& head) { |
556 return graph->addEdge(tail, head); } |
557 // return graph->addEdge(tail, head); } |
557 |
558 |
558 template<typename I> void erase(const I& i) { graph->erase(i); } |
559 // template<typename I> void erase(const I& i) { graph->erase(i); } |
559 |
560 |
560 void clear() { graph->clear(); } |
561 // void clear() { graph->clear(); } |
561 |
562 |
562 template<typename S> class NodeMap : public Graph::NodeMap<S> { }; |
563 // template<typename S> class NodeMap : public Graph::NodeMap<S> { }; |
563 template<typename S> class EdgeMap : public Graph::EdgeMap<S> { }; |
564 // template<typename S> class EdgeMap : public Graph::EdgeMap<S> { }; |
564 |
565 |
565 void setGraph(const Graph& _graph) { graph = &_graph; } |
566 // void setGraph(const Graph& _graph) { graph = &_graph; } |
566 const Graph& getGraph() { return (*graph); } |
567 // const Graph& getGraph() { return (*graph); } |
567 |
568 |
568 //ConstResGraphWrapper() : graph(0) { } |
569 // //ConstResGraphWrapper() : graph(0) { } |
569 ConstResGraphWrapper(const Graph& _graph) : graph(&_graph) { } |
570 // ConstResGraphWrapper(const Graph& _graph) : graph(&_graph) { } |
570 }; |
571 // }; |
571 |
572 |
572 |
573 |
573 |
574 |
574 |
575 |
575 |
576 |