gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Bug fix in SmartGraph::restoreSnapshot() (#171)
0 1 0
default
1 file changed with 2 insertions and 2 deletions:
↑ Collapse diff ↑
Ignore white space 48 line context
... ...
@@ -709,50 +709,50 @@
709 709

	
710 710
  public:
711 711

	
712 712
    class Snapshot;
713 713

	
714 714
  protected:
715 715

	
716 716
    void saveSnapshot(Snapshot &s)
717 717
    {
718 718
      s._graph = this;
719 719
      s.node_num = nodes.size();
720 720
      s.arc_num = arcs.size();
721 721
    }
722 722

	
723 723
    void restoreSnapshot(const Snapshot &s)
724 724
    {
725 725
      while(s.arc_num<arcs.size()) {
726 726
        int n=arcs.size()-1;
727 727
        Edge arc=edgeFromId(n/2);
728 728
        Parent::notifier(Edge()).erase(arc);
729 729
        std::vector<Arc> dir;
730 730
        dir.push_back(arcFromId(n));
731 731
        dir.push_back(arcFromId(n-1));
732 732
        Parent::notifier(Arc()).erase(dir);
733
        nodes[arcs[n].target].first_out=arcs[n].next_out;
734
        nodes[arcs[n-1].target].first_out=arcs[n-1].next_out;
733
        nodes[arcs[n-1].target].first_out=arcs[n].next_out;
734
        nodes[arcs[n].target].first_out=arcs[n-1].next_out;
735 735
        arcs.pop_back();
736 736
        arcs.pop_back();
737 737
      }
738 738
      while(s.node_num<nodes.size()) {
739 739
        int n=nodes.size()-1;
740 740
        Node node = nodeFromId(n);
741 741
        Parent::notifier(Node()).erase(node);
742 742
        nodes.pop_back();
743 743
      }
744 744
    }
745 745

	
746 746
  public:
747 747

	
748 748
    ///Class to make a snapshot of the digraph and to restrore to it later.
749 749

	
750 750
    ///Class to make a snapshot of the digraph and to restrore to it later.
751 751
    ///
752 752
    ///The newly added nodes and arcs can be removed using the
753 753
    ///restore() function.
754 754
    ///
755 755
    ///\note After you restore a state, you cannot restore
756 756
    ///a later state, in other word you cannot add again the arcs deleted
757 757
    ///by restore() using another one Snapshot instance.
758 758
    ///
0 comments (0 inline)