Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
07/31/14 17:11:39 (10 years ago)
Author:
bburlacu
Message:

#1772: Ported the rest of the changes to the DirectedGraph and Vertex to the GenealogyGraph and GenealogyGraphNode. Adapted tracking operators, analyzers and views.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionTracking/HeuristicLab.EvolutionTracking/3.4/GenealogyGraph/GenealogyGraphNode.cs

    r11233 r11253  
    3333    [StorableConstructor]
    3434    protected GenealogyGraphNode(bool deserializing) : base(deserializing) { }
     35
    3536    public override IDeepCloneable Clone(Cloner cloner) {
    3637      return new GenealogyGraphNode(this, cloner);
    3738    }
     39
     40    // this constructor emulates the behavior of a copy constructor
     41    // it returns a shallow copy in which the arcs are not cloned
     42    protected GenealogyGraphNode(IGenealogyGraphNode original)
     43      : base((IDeepCloneable)original.Data.Clone()) {
     44      Quality = original.Quality;
     45      Rank = original.Rank;
     46      IsElite = original.IsElite;
     47      Id = Guid.NewGuid().ToString();
     48    }
     49
    3850    protected GenealogyGraphNode(GenealogyGraphNode original, Cloner cloner)
    3951      : base(original, cloner) {
     52      Quality = original.Quality;
     53      Rank = original.Rank;
     54      IsElite = original.IsElite;
     55      Id = Guid.NewGuid().ToString();
    4056    }
    4157
    42     public GenealogyGraphNode(object content)
    43       : base(content) {
     58    public GenealogyGraphNode(IDeepCloneable data)
     59      : base(data) {
    4460      Id = Guid.NewGuid().ToString();
    4561    }
     
    4864      get { return base.InArcs.Cast<IGenealogyGraphArc>(); }
    4965    }
     66
    5067    public new IEnumerable<IGenealogyGraphArc> OutArcs {
    5168      get { return base.OutArcs.Cast<IGenealogyGraphArc>(); }
    5269    }
     70
    5371    public IEnumerable<IGenealogyGraphNode> Ancestors {
    5472      get {
     
    123141  [Item("GenealogyGraphNode", "A genealogy graph node which also has a Content")]
    124142  public class GenealogyGraphNode<T> : GenealogyGraphNode, IGenealogyGraphNode<T> where T : class, IItem {
    125     public new T Content {
    126       get { return (T)base.Content; }
    127       set { base.Content = value; }
     143    public new T Data {
     144      get { return (T)base.Data; }
     145      set { base.Data = value; }
    128146    }
    129147
    130     public GenealogyGraphNode(object content) : base(content) { }
     148    public GenealogyGraphNode(IGenealogyGraphNode<T> original) : base(original) { }
     149
     150    public GenealogyGraphNode(IDeepCloneable content) : base(content) { }
    131151
    132152    protected GenealogyGraphNode(GenealogyGraphNode<T> original, Cloner cloner)
    133153      : base(original, cloner) {
    134       // we do not clone the content
    135       Content = original.Content;
    136154    }
    137155    public override IDeepCloneable Clone(Cloner cloner) {
Note: See TracChangeset for help on using the changeset viewer.