diff --git a/SabreTools.Library/DatFiles/AttractMode.cs b/SabreTools.Library/DatFiles/AttractMode.cs
index 5847120c..bdc6dfa2 100644
--- a/SabreTools.Library/DatFiles/AttractMode.cs
+++ b/SabreTools.Library/DatFiles/AttractMode.cs
@@ -29,12 +29,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public AttractMode(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs
index 232c618a..fdb3367f 100644
--- a/SabreTools.Library/DatFiles/ClrMamePro.cs
+++ b/SabreTools.Library/DatFiles/ClrMamePro.cs
@@ -30,12 +30,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public ClrMamePro(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs
index bdee9a56..c327a9b0 100644
--- a/SabreTools.Library/DatFiles/DatFile.cs
+++ b/SabreTools.Library/DatFiles/DatFile.cs
@@ -1557,9 +1557,21 @@ namespace SabreTools.Library.DatFiles
/// Create a new DatFile from an existing one using the header values only
///
///
- public DatFile(DatFile datFile)
+ /// True if only the header should be cloned (default), false if this should be a reference to another DatFile
+ public DatFile(DatFile datFile, bool cloneHeader = true)
{
- _datHeader = (DatHeader)datFile._datHeader.Clone();
+ if (cloneHeader)
+ {
+ this._datHeader = (DatHeader)datFile._datHeader.Clone();
+ }
+ else
+ {
+ this._datHeader = datFile._datHeader;
+ this._items = datFile._items;
+ this._sortedBy = datFile._sortedBy;
+ this._mergedBy = datFile._mergedBy;
+ this._datStats = datFile._datStats;
+ }
}
///
diff --git a/SabreTools.Library/DatFiles/DosCenter.cs b/SabreTools.Library/DatFiles/DosCenter.cs
index 43ec7c7b..d98a9b85 100644
--- a/SabreTools.Library/DatFiles/DosCenter.cs
+++ b/SabreTools.Library/DatFiles/DosCenter.cs
@@ -29,12 +29,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public DosCenter(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/Hashfile.cs b/SabreTools.Library/DatFiles/Hashfile.cs
index ecf98116..6ea613c3 100644
--- a/SabreTools.Library/DatFiles/Hashfile.cs
+++ b/SabreTools.Library/DatFiles/Hashfile.cs
@@ -33,12 +33,8 @@ namespace SabreTools.Library.DatFiles
/// Parent DatFile to copy from
/// Type of hash that is associated with this DAT
public Hashfile(DatFile datFile, Hash hash)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
_hash = hash;
}
diff --git a/SabreTools.Library/DatFiles/Listroms.cs b/SabreTools.Library/DatFiles/Listroms.cs
index ea56ba2a..e619d6f8 100644
--- a/SabreTools.Library/DatFiles/Listroms.cs
+++ b/SabreTools.Library/DatFiles/Listroms.cs
@@ -30,12 +30,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public Listroms(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs
index 4d49aec3..111f1943 100644
--- a/SabreTools.Library/DatFiles/Logiqx.cs
+++ b/SabreTools.Library/DatFiles/Logiqx.cs
@@ -32,12 +32,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public Logiqx(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/Missfile.cs b/SabreTools.Library/DatFiles/Missfile.cs
index 9a218265..f913d17e 100644
--- a/SabreTools.Library/DatFiles/Missfile.cs
+++ b/SabreTools.Library/DatFiles/Missfile.cs
@@ -28,12 +28,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public Missfile(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs
index 7bb0064e..15ab4b79 100644
--- a/SabreTools.Library/DatFiles/OfflineList.cs
+++ b/SabreTools.Library/DatFiles/OfflineList.cs
@@ -29,12 +29,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public OfflineList(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs
index f625f66f..25d60e8e 100644
--- a/SabreTools.Library/DatFiles/RomCenter.cs
+++ b/SabreTools.Library/DatFiles/RomCenter.cs
@@ -30,12 +30,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public RomCenter(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs
index 1eb8b41b..044b7053 100644
--- a/SabreTools.Library/DatFiles/SabreDat.cs
+++ b/SabreTools.Library/DatFiles/SabreDat.cs
@@ -30,12 +30,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public SabreDat(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///
diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs
index cd919ff0..b097f04b 100644
--- a/SabreTools.Library/DatFiles/SeparatedValue.cs
+++ b/SabreTools.Library/DatFiles/SeparatedValue.cs
@@ -32,12 +32,8 @@ namespace SabreTools.Library.DatFiles
/// Parent DatFile to copy from
/// Delimiter for parsing individual lines
public SeparatedValue(DatFile datFile, char delim)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
_delim = delim;
}
diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs
index 7f447e11..a494b0be 100644
--- a/SabreTools.Library/DatFiles/SoftwareList.cs
+++ b/SabreTools.Library/DatFiles/SoftwareList.cs
@@ -29,12 +29,8 @@ namespace SabreTools.Library.DatFiles
///
/// Parent DatFile to copy from
public SoftwareList(DatFile datFile)
+ : base(datFile, cloneHeader: false)
{
- this._datHeader = datFile._datHeader;
- this._items = datFile._items;
- this._sortedBy = datFile._sortedBy;
- this._mergedBy = datFile._mergedBy;
- this._datStats = datFile._datStats;
}
///