- Timestamp:
- 12/02/08 21:10:17 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CloningRefactorBranch/HeuristicLab.DataAnalysis/Dataset.cs
r534 r887 105 105 } 106 106 107 /// <summary> 108 /// Copy constructor to create deep clones. 109 /// </summary> 110 /// <param name="original">The instance to be cloned.</param> 111 public Dataset(Dataset original) : this(original, new Dictionary<Guid, object>()) { } 112 /// <summary> 113 /// Copy constructor to create deep clones reusing already cloned object references. 114 /// </summary> 115 /// <param name="original">The instance to be cloned.</param> 116 /// <param name="clonedObjects">Already cloned objects (for referential integrity).</param> 117 protected Dataset(Dataset original, IDictionary<Guid, object> clonedObjects) 118 : base(original, clonedObjects) { 119 double[] cloneSamples = new double[original.rows * original.columns]; 120 Array.Copy(original.samples, cloneSamples, original.samples.Length); 121 this.rows = original.rows; 122 this.columns = original.columns; 123 this.Samples = cloneSamples; 124 this.Name = original.Name; 125 this.VariableNames = new string[original.VariableNames.Length]; 126 Array.Copy(original.VariableNames, this.VariableNames, original.VariableNames.Length); 127 Array.Copy(original.scalingFactor, this.scalingFactor, original.columns); 128 Array.Copy(original.scalingOffset, this.scalingOffset, original.columns); 129 } 130 107 131 private void CreateDictionaries() { 108 132 // keep a means and ranges dictionary for each column (possible target variable) of the dataset. … … 119 143 } 120 144 145 /// <summary> 146 /// Creates a deep clone with the copy constructor reusing already cloned 147 /// object references. 148 /// </summary> 149 /// <param name="clonedObjects">Already cloned objects (for referential integrity).</param> 150 /// <returns>The cloned instance.</returns> 121 151 public override object Clone(IDictionary<Guid, object> clonedObjects) { 122 Dataset clone = new Dataset(); 123 clonedObjects.Add(Guid, clone); 124 double[] cloneSamples = new double[rows * columns]; 125 Array.Copy(samples, cloneSamples, samples.Length); 126 clone.rows = rows; 127 clone.columns = columns; 128 clone.Samples = cloneSamples; 129 clone.Name = Name; 130 clone.VariableNames = new string[VariableNames.Length]; 131 Array.Copy(VariableNames, clone.VariableNames, VariableNames.Length); 132 Array.Copy(scalingFactor, clone.scalingFactor, columns); 133 Array.Copy(scalingOffset, clone.scalingOffset, columns); 134 return clone; 152 return new Dataset(this, clonedObjects); 135 153 } 136 154
Note: See TracChangeset
for help on using the changeset viewer.