Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/06/10 01:56:04 (13 years ago)
Author:
swagner
Message:

Merged cloning refactoring branch back into trunk (#922)

Location:
trunk/sources
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources

  • trunk/sources/HeuristicLab.Optimization/3.3/Run.cs

    r4419 r4722  
    3838    [StorableConstructor]
    3939    private Run(bool deserializing) : base(deserializing) { }
     40    private Run(Run original, Cloner cloner)
     41      : base(original, cloner) {
     42      color = original.color;
     43      algorithm = cloner.Clone(original.algorithm);
     44
     45      parameters = new Dictionary<string, IItem>();
     46      foreach (string key in original.parameters.Keys)
     47        parameters.Add(key, cloner.Clone(original.parameters[key]));
     48
     49      results = new Dictionary<string, IItem>();
     50      foreach (string key in original.results.Keys)
     51        results.Add(key, cloner.Clone(original.results[key]));
     52    }
     53    public override IDeepCloneable Clone(Cloner cloner) {
     54      return new Run(this, cloner);
     55    }
     56
    4057    public Run()
    4158      : base() {
     
    8198    }
    8299    [StorableHook(HookType.AfterDeserialization)]
    83     private void AfterDeserializationHook() {
     100    private void AfterDeserialization() {
    84101      if (color == Color.Empty) color = Color.Black;
    85102    }
     
    128145        handler(this, EventArgs.Empty);
    129146    }
    130 
    131     public override IDeepCloneable Clone(Cloner cloner) {
    132       Run clone = (Run)base.Clone(cloner);
    133       clone.color = this.color;
    134       clone.algorithm = (IAlgorithm)cloner.Clone(algorithm);
    135       foreach (string key in parameters.Keys)
    136         clone.parameters.Add(key, (IItem)cloner.Clone(parameters[key]));
    137       foreach (string key in results.Keys)
    138         clone.results.Add(key, (IItem)cloner.Clone(results[key]));
    139       return clone;
    140     }
    141147  }
    142148}
Note: See TracChangeset for help on using the changeset viewer.