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,