Changeset 2191:ef3560193856 in lemon-0.x for lemon/edge_set.h
- Timestamp:
- 09/04/06 13:09:59 (17 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2916
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/edge_set.h
r2151 r2191 603 603 return; 604 604 } 605 throw UnsupportedOperation();605 throw typename NodesImplBase::Notifier::ImmediateDetach(); 606 606 } 607 607 … … 622 622 623 623 virtual void erase(const Node& node) { 624 _edgeset.eraseNode(node); 625 Parent::erase(node); 624 try { 625 _edgeset.eraseNode(node); 626 Parent::erase(node); 627 } catch (const typename NodesImplBase::Notifier::ImmediateDetach&) { 628 Parent::clear(); 629 } 626 630 } 627 631 virtual void erase(const std::vector<Node>& nodes) { 628 for (int i = 0; i < (int)nodes.size(); ++i) { 629 _edgeset.eraseNode(nodes[i]); 632 try { 633 for (int i = 0; i < (int)nodes.size(); ++i) { 634 _edgeset.eraseNode(nodes[i]); 635 } 636 Parent::erase(nodes); 637 } catch (const typename NodesImplBase::Notifier::ImmediateDetach&) { 638 Parent::clear(); 630 639 } 631 Parent::erase(nodes);632 640 } 633 641 virtual void clear() { … … 682 690 typedef _Graph Graph; 683 691 684 class UnsupportedOperation : public LogicError {685 public:686 virtual const char* what() const throw() {687 return "lemon::SmartUEdgeSet::UnsupportedOperation";688 }689 };690 691 692 protected: 692 693 … … 697 698 return; 698 699 } 699 throw UnsupportedOperation();700 throw typename NodesImplBase::Notifier::ImmediateDetach(); 700 701 } 701 702 … … 716 717 717 718 virtual void erase(const Node& node) { 718 _edgeset.eraseNode(node); 719 Parent::erase(node); 719 try { 720 _edgeset.eraseNode(node); 721 Parent::erase(node); 722 } catch (const typename NodesImplBase::Notifier::ImmediateDetach&) { 723 Parent::clear(); 724 } 720 725 } 721 726 virtual void erase(const std::vector<Node>& nodes) { 722 for (int i = 0; i < (int)nodes.size(); ++i) { 723 _edgeset.eraseNode(nodes[i]); 724 } 725 Parent::erase(nodes); 727 try { 728 for (int i = 0; i < (int)nodes.size(); ++i) { 729 _edgeset.eraseNode(nodes[i]); 730 } 731 Parent::erase(nodes); 732 } catch (const typename NodesImplBase::Notifier::ImmediateDetach&) { 733 Parent::clear(); 734 } 726 735 } 727 736 virtual void clear() {
Note: See TracChangeset
for help on using the changeset viewer.