Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
11/06/10 01:56:04 (14 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.Problems.Knapsack/3.3/KnapsackSolution.cs

    r4513 r4722  
    109109    }
    110110
     111    [StorableConstructor]
     112    protected KnapsackSolution(bool deserializing) : base(deserializing) { }
     113    protected KnapsackSolution(KnapsackSolution original, Cloner cloner)
     114      : base(original, cloner) {
     115      this.binaryVector = cloner.Clone(original.binaryVector);
     116      this.quality = cloner.Clone(original.quality);
     117      this.capacity = cloner.Clone(original.capacity);
     118      this.weights = cloner.Clone(original.weights);
     119      this.values = cloner.Clone(original.values);
     120      Initialize();
     121    }
     122    public override IDeepCloneable Clone(Cloner cloner) {
     123      return new KnapsackSolution(this, cloner);
     124    }
    111125    public KnapsackSolution() : base() { }
    112126    public KnapsackSolution(BinaryVector binaryVector, DoubleValue quality, IntValue capacity, IntArray weights, IntArray values)
     
    119133      Initialize();
    120134    }
    121     [StorableConstructor]
    122     private KnapsackSolution(bool deserializing) : base(deserializing) { }
    123135
    124136    [StorableHook(HookType.AfterDeserialization)]
     137    private void AfterDeserialization() {
     138      Initialize();
     139    }
     140
    125141    private void Initialize() {
    126142      if (binaryVector != null) RegisterBinaryVectorEvents();
     
    131147    }
    132148
    133     public override IDeepCloneable Clone(Cloner cloner) {
    134       KnapsackSolution clone = new KnapsackSolution();
    135       cloner.RegisterClonedObject(this, clone);
    136       clone.binaryVector = (BinaryVector)cloner.Clone(binaryVector);
    137       clone.quality = (DoubleValue)cloner.Clone(quality);
    138       clone.capacity = (IntValue)cloner.Clone(capacity);
    139       clone.weights = (IntArray)cloner.Clone(weights);
    140       clone.values = (IntArray)cloner.Clone(values);
    141       clone.Initialize();
    142       return clone;
    143     }
    144 
    145149    #region Events
    146150    public event EventHandler BinaryVectorChanged;
Note: See TracChangeset for help on using the changeset viewer.