0
2
0
... | ... |
@@ -508,89 +508,89 @@ |
508 | 508 |
// Returns the base node (ie. the target in this case) of the iterator |
509 | 509 |
Node baseNode(const InArcIt &e) const { |
510 | 510 |
return Parent::target(static_cast<const Arc&>(e)); |
511 | 511 |
} |
512 | 512 |
// \brief Running node of the iterator |
513 | 513 |
// |
514 | 514 |
// Returns the running node (ie. the source in this case) of the |
515 | 515 |
// iterator |
516 | 516 |
Node runningNode(const InArcIt &e) const { |
517 | 517 |
return Parent::source(static_cast<const Arc&>(e)); |
518 | 518 |
} |
519 | 519 |
|
520 | 520 |
// Base node of the iterator |
521 | 521 |
// |
522 | 522 |
// Returns the base node of the iterator |
523 | 523 |
Node baseNode(const IncEdgeIt &e) const { |
524 | 524 |
return e.direction ? u(e) : v(e); |
525 | 525 |
} |
526 | 526 |
// Running node of the iterator |
527 | 527 |
// |
528 | 528 |
// Returns the running node of the iterator |
529 | 529 |
Node runningNode(const IncEdgeIt &e) const { |
530 | 530 |
return e.direction ? v(e) : u(e); |
531 | 531 |
} |
532 | 532 |
|
533 | 533 |
|
534 | 534 |
template <typename _Value> |
535 | 535 |
class ArcMap |
536 | 536 |
: public MapExtender<DefaultMap<Graph, Arc, _Value> > { |
537 | 537 |
typedef MapExtender<DefaultMap<Graph, Arc, _Value> > Parent; |
538 | 538 |
|
539 | 539 |
public: |
540 |
ArcMap(const Graph& _g) |
|
540 |
explicit ArcMap(const Graph& _g) |
|
541 | 541 |
: Parent(_g) {} |
542 | 542 |
ArcMap(const Graph& _g, const _Value& _v) |
543 | 543 |
: Parent(_g, _v) {} |
544 | 544 |
|
545 | 545 |
ArcMap& operator=(const ArcMap& cmap) { |
546 | 546 |
return operator=<ArcMap>(cmap); |
547 | 547 |
} |
548 | 548 |
|
549 | 549 |
template <typename CMap> |
550 | 550 |
ArcMap& operator=(const CMap& cmap) { |
551 | 551 |
Parent::operator=(cmap); |
552 | 552 |
return *this; |
553 | 553 |
} |
554 | 554 |
|
555 | 555 |
}; |
556 | 556 |
|
557 | 557 |
|
558 | 558 |
template <typename _Value> |
559 | 559 |
class EdgeMap |
560 | 560 |
: public MapExtender<DefaultMap<Graph, Edge, _Value> > { |
561 | 561 |
typedef MapExtender<DefaultMap<Graph, Edge, _Value> > Parent; |
562 | 562 |
|
563 | 563 |
public: |
564 |
EdgeMap(const Graph& _g) |
|
564 |
explicit EdgeMap(const Graph& _g) |
|
565 | 565 |
: Parent(_g) {} |
566 | 566 |
|
567 | 567 |
EdgeMap(const Graph& _g, const _Value& _v) |
568 | 568 |
: Parent(_g, _v) {} |
569 | 569 |
|
570 | 570 |
EdgeMap& operator=(const EdgeMap& cmap) { |
571 | 571 |
return operator=<EdgeMap>(cmap); |
572 | 572 |
} |
573 | 573 |
|
574 | 574 |
template <typename CMap> |
575 | 575 |
EdgeMap& operator=(const CMap& cmap) { |
576 | 576 |
Parent::operator=(cmap); |
577 | 577 |
return *this; |
578 | 578 |
} |
579 | 579 |
|
580 | 580 |
}; |
581 | 581 |
|
582 | 582 |
|
583 | 583 |
// Alteration extension |
584 | 584 |
|
585 | 585 |
Edge addEdge(const Node& from, const Node& to) { |
586 | 586 |
Edge edge = Parent::addEdge(from, to); |
587 | 587 |
notifier(Edge()).add(edge); |
588 | 588 |
std::vector<Arc> arcs; |
589 | 589 |
arcs.push_back(Parent::direct(edge, true)); |
590 | 590 |
arcs.push_back(Parent::direct(edge, false)); |
591 | 591 |
notifier(Arc()).add(arcs); |
592 | 592 |
return edge; |
593 | 593 |
} |
594 | 594 |
|
595 | 595 |
void clear() { |
596 | 596 |
notifier(Arc()).clear(); |
... | ... |
@@ -575,113 +575,113 @@ |
575 | 575 |
Node baseNode(const InArcIt &arc) const { |
576 | 576 |
return Parent::target(static_cast<const Arc&>(arc)); |
577 | 577 |
} |
578 | 578 |
// \brief Running node of the iterator |
579 | 579 |
// |
580 | 580 |
// Returns the running node (ie. the source in this case) of the |
581 | 581 |
// iterator |
582 | 582 |
Node runningNode(const InArcIt &arc) const { |
583 | 583 |
return Parent::source(static_cast<const Arc&>(arc)); |
584 | 584 |
} |
585 | 585 |
|
586 | 586 |
// Base node of the iterator |
587 | 587 |
// |
588 | 588 |
// Returns the base node of the iterator |
589 | 589 |
Node baseNode(const IncEdgeIt &edge) const { |
590 | 590 |
return edge._direction ? u(edge) : v(edge); |
591 | 591 |
} |
592 | 592 |
// Running node of the iterator |
593 | 593 |
// |
594 | 594 |
// Returns the running node of the iterator |
595 | 595 |
Node runningNode(const IncEdgeIt &edge) const { |
596 | 596 |
return edge._direction ? v(edge) : u(edge); |
597 | 597 |
} |
598 | 598 |
|
599 | 599 |
// Mappable extension |
600 | 600 |
|
601 | 601 |
template <typename _Value> |
602 | 602 |
class NodeMap |
603 | 603 |
: public MapExtender<DefaultMap<Graph, Node, _Value> > { |
604 | 604 |
typedef MapExtender<DefaultMap<Graph, Node, _Value> > Parent; |
605 | 605 |
|
606 | 606 |
public: |
607 |
NodeMap(const Graph& graph) |
|
607 |
explicit NodeMap(const Graph& graph) |
|
608 | 608 |
: Parent(graph) {} |
609 | 609 |
NodeMap(const Graph& graph, const _Value& value) |
610 | 610 |
: Parent(graph, value) {} |
611 | 611 |
|
612 | 612 |
private: |
613 | 613 |
NodeMap& operator=(const NodeMap& cmap) { |
614 | 614 |
return operator=<NodeMap>(cmap); |
615 | 615 |
} |
616 | 616 |
|
617 | 617 |
template <typename CMap> |
618 | 618 |
NodeMap& operator=(const CMap& cmap) { |
619 | 619 |
Parent::operator=(cmap); |
620 | 620 |
return *this; |
621 | 621 |
} |
622 | 622 |
|
623 | 623 |
}; |
624 | 624 |
|
625 | 625 |
template <typename _Value> |
626 | 626 |
class ArcMap |
627 | 627 |
: public MapExtender<DefaultMap<Graph, Arc, _Value> > { |
628 | 628 |
typedef MapExtender<DefaultMap<Graph, Arc, _Value> > Parent; |
629 | 629 |
|
630 | 630 |
public: |
631 |
ArcMap(const Graph& graph) |
|
631 |
explicit ArcMap(const Graph& graph) |
|
632 | 632 |
: Parent(graph) {} |
633 | 633 |
ArcMap(const Graph& graph, const _Value& value) |
634 | 634 |
: Parent(graph, value) {} |
635 | 635 |
|
636 | 636 |
private: |
637 | 637 |
ArcMap& operator=(const ArcMap& cmap) { |
638 | 638 |
return operator=<ArcMap>(cmap); |
639 | 639 |
} |
640 | 640 |
|
641 | 641 |
template <typename CMap> |
642 | 642 |
ArcMap& operator=(const CMap& cmap) { |
643 | 643 |
Parent::operator=(cmap); |
644 | 644 |
return *this; |
645 | 645 |
} |
646 | 646 |
}; |
647 | 647 |
|
648 | 648 |
|
649 | 649 |
template <typename _Value> |
650 | 650 |
class EdgeMap |
651 | 651 |
: public MapExtender<DefaultMap<Graph, Edge, _Value> > { |
652 | 652 |
typedef MapExtender<DefaultMap<Graph, Edge, _Value> > Parent; |
653 | 653 |
|
654 | 654 |
public: |
655 |
EdgeMap(const Graph& graph) |
|
655 |
explicit EdgeMap(const Graph& graph) |
|
656 | 656 |
: Parent(graph) {} |
657 | 657 |
|
658 | 658 |
EdgeMap(const Graph& graph, const _Value& value) |
659 | 659 |
: Parent(graph, value) {} |
660 | 660 |
|
661 | 661 |
private: |
662 | 662 |
EdgeMap& operator=(const EdgeMap& cmap) { |
663 | 663 |
return operator=<EdgeMap>(cmap); |
664 | 664 |
} |
665 | 665 |
|
666 | 666 |
template <typename CMap> |
667 | 667 |
EdgeMap& operator=(const CMap& cmap) { |
668 | 668 |
Parent::operator=(cmap); |
669 | 669 |
return *this; |
670 | 670 |
} |
671 | 671 |
|
672 | 672 |
}; |
673 | 673 |
|
674 | 674 |
// Alteration extension |
675 | 675 |
|
676 | 676 |
Node addNode() { |
677 | 677 |
Node node = Parent::addNode(); |
678 | 678 |
notifier(Node()).add(node); |
679 | 679 |
return node; |
680 | 680 |
} |
681 | 681 |
|
682 | 682 |
Edge addEdge(const Node& from, const Node& to) { |
683 | 683 |
Edge edge = Parent::addEdge(from, to); |
684 | 684 |
notifier(Edge()).add(edge); |
685 | 685 |
std::vector<Arc> ev; |
686 | 686 |
ev.push_back(Parent::direct(edge, true)); |
687 | 687 |
ev.push_back(Parent::direct(edge, false)); |
0 comments (0 inline)