- Timestamp:
- 12/02/08 14:13:06 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CloningRefactorBranch/HeuristicLab.Core/OperatorGraph.cs
r776 r885 60 60 61 61 /// <summary> 62 /// Copy constructor to create a deep clone of an OperatorGraph instance. 63 /// </summary> 64 /// <param name="original">The original instance to be cloned.</param> 65 public OperatorGraph(OperatorGraph original) : this(original, new Dictionary<Guid, object>()) { } 66 67 /// <summary> 68 /// Copy constructor to create a deep clone of an OperatorGraph instance 69 /// reusing already cloned objects. 70 /// </summary> 71 /// <param name="original">The original instance to be cloned</param> 72 /// <param name="clonedObjects">Already cloned objects (for referential integrity).</param> 73 protected OperatorGraph(OperatorGraph original, IDictionary<Guid, object> clonedObjects) 74 : base(original, clonedObjects) { 75 foreach (IOperator op in original.Operators) 76 this.AddOperator((IOperator)Auxiliary.Clone(op, clonedObjects)); 77 if (original.InitialOperator != null) 78 this.myInitialOperator = (IOperator)Auxiliary.Clone(original.InitialOperator, clonedObjects); 79 } 80 81 /// <summary> 62 82 /// Creates a new instance of <see cref="OperatorGraphView"/> to represent the current instance 63 83 /// visually. … … 71 91 /// Clones the current instance (deep clone). 72 92 /// </summary> 73 /// <remarks>Deep clone through <see cref="Auxiliary.Clone"/> method of helper class 74 /// <see cref="Auxiliary"/>.</remarks> 93 /// <remarks>Deep clone using the copy constructor.</remarks> 75 94 /// <param name="clonedObjects">Dictionary of all already cloned objects. (Needed to avoid cycles.)</param> 76 95 /// <returns>The cloned object as <see cref="OperatorGraph"/>.</returns> 77 96 public override object Clone(IDictionary<Guid, object> clonedObjects) { 78 OperatorGraph clone = new OperatorGraph(); 79 clonedObjects.Add(Guid, clone); 80 foreach (IOperator op in Operators) 81 clone.AddOperator((IOperator)Auxiliary.Clone(op, clonedObjects)); 82 if (InitialOperator != null) 83 clone.myInitialOperator = (IOperator)Auxiliary.Clone(InitialOperator, clonedObjects); 84 return clone; 97 return new OperatorGraph(this, clonedObjects); 85 98 } 86 99 … … 179 192 /// (Needed to avoid cycles.)</param> 180 193 /// <returns>The saved <see cref="XmlNode"/>.</returns> 181 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {194 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 182 195 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 183 196 XmlNode ops = document.CreateNode(XmlNodeType.Element, "Operators", null); … … 197 210 /// <param name="restoredObjects">The dictionary of all already restored objects. 198 211 /// (Needed to avoid cycles.)</param> 199 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {212 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 200 213 base.Populate(node, restoredObjects); 201 214
Note: See TracChangeset
for help on using the changeset viewer.