From 6fa2a376d2023822a980e14b494fc04d44a63efb Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 6 Oct 2017 15:55:54 -0700 Subject: [PATCH] [DatFile, Machine] Create and use clone method --- SabreTools.Library/Dats/Machine.cs | 31 ++++++++++++++++++- .../Dats/Partials/DatFile.Parsers.cs | 14 ++++----- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/SabreTools.Library/Dats/Machine.cs b/SabreTools.Library/Dats/Machine.cs index bd0ef316..2207efe1 100644 --- a/SabreTools.Library/Dats/Machine.cs +++ b/SabreTools.Library/Dats/Machine.cs @@ -5,7 +5,7 @@ using SabreTools.Library.Data; namespace SabreTools.Library.Dats { - public class Machine + public class Machine : ICloneable { #region Protected instance variables @@ -83,6 +83,35 @@ namespace SabreTools.Library.Dats #endregion + #region Cloning methods + + /// + /// Create a clone of the current machine + /// + /// New machine with the same values as the current one + public object Clone() + { + return new Machine() + { + Name = this.Name, + Comment = this.Comment, + Description = this.Description, + Year = this.Year, + Manufacturer = this.Manufacturer, + RomOf = this.RomOf, + CloneOf = this.CloneOf, + SampleOf = this.SampleOf, + SourceFile = this.SourceFile, + Runnable = this.Runnable, + Board = this.Board, + RebuildTo = this.RebuildTo, + Devices = this.Devices, + MachineType = this.MachineType, + }; + } + + #endregion + #region Equality comparerers /// diff --git a/SabreTools.Library/Dats/Partials/DatFile.Parsers.cs b/SabreTools.Library/Dats/Partials/DatFile.Parsers.cs index 617429e4..8aaefb27 100644 --- a/SabreTools.Library/Dats/Partials/DatFile.Parsers.cs +++ b/SabreTools.Library/Dats/Partials/DatFile.Parsers.cs @@ -1813,7 +1813,7 @@ namespace SabreTools.Library.Dats CRC = subreader.ReadElementContentAsString(), ItemStatus = ItemStatus.None, - Machine = machine, + Machine = (Machine)machine.Clone(), }; // Now process and add the rom @@ -1900,7 +1900,7 @@ namespace SabreTools.Library.Dats Date = date, Default = defaultrel, - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher, @@ -1939,7 +1939,7 @@ namespace SabreTools.Library.Dats Description = subreader.GetAttribute("description"), Default = defaultbios, - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher, @@ -1967,7 +1967,7 @@ namespace SabreTools.Library.Dats { Name = subreader.GetAttribute("name"), - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher, @@ -1995,7 +1995,7 @@ namespace SabreTools.Library.Dats { Name = subreader.GetAttribute("name"), - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher, @@ -2104,7 +2104,7 @@ namespace SabreTools.Library.Dats MergeTag = merge, ItemStatus = its, - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher, @@ -2136,7 +2136,7 @@ namespace SabreTools.Library.Dats MergeTag = merge, Date = date, - Machine = machine, + Machine = (Machine)machine.Clone(), Supported = supported, Publisher = publisher,