Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/05/15 13:55:04 (9 years ago)
Author:
bburlacu
Message:

#2223: Moved Data member to the generic versions of Vertex and Arc (restricted to be an IDeepCloneable). Fixed AddVertices method and added complementary AddArcs and RemoveArcs methods.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core/3.3/Collections/DirectedGraph/Arc.cs

    r11879 r11912  
    5656    }
    5757
    58     [Storable]
    59     protected object data;
    60     public object Data {
    61       get { return data; }
    62       set {
    63         if (data == value) return;
    64         data = value;
    65         OnChanged(this, EventArgs.Empty);
    66       }
    67     }
    6858
    6959    [StorableConstructor]
     
    8171      label = original.Label;
    8272      weight = original.Weight;
    83       if (data is IDeepCloneable)
    84         data = cloner.Clone((IDeepCloneable)data);
    85       else data = original.Data;
    8673    }
    8774    public override IDeepCloneable Clone(Cloner cloner) { return new Arc(this, cloner); }
     
    9683
    9784  [StorableClass]
    98   public class Arc<T> : Arc, IArc<T> where T : class,IItem {
     85  public class Arc<T> : Arc, IArc<T> where T : class,IDeepCloneable {
     86    [Storable]
     87    protected T data;
     88    public T Data {
     89      get { return data; }
     90      set {
     91        if (data == value) return;
     92        data = value;
     93        OnChanged(this, EventArgs.Empty);
     94      }
     95    }
     96
     97    public override IDeepCloneable Clone(Cloner cloner) {
     98      return new Arc<T>(this, cloner);
     99    }
     100
     101    protected Arc(Arc<T> original, Cloner cloner)
     102      : base(original, cloner) {
     103      if (original.Data != null)
     104        Data = cloner.Clone(original.Data);
     105    }
     106
    99107    public Arc(bool deserializing)
    100108      : base(deserializing) {
     
    108116      : base(original, cloner) {
    109117    }
    110 
    111     new public IVertex<T> Source {
    112       get { return (IVertex<T>)base.Source; }
    113     }
    114     new public IVertex<T> Target {
    115       get { return (IVertex<T>)base.Target; }
    116     }
    117118  }
    118119}
Note: See TracChangeset for help on using the changeset viewer.