diff --git a/SabreTools.RedumpLib.Test/BuilderTests.cs b/SabreTools.RedumpLib.Test/BuilderTests.cs
index 1743dcc..fdce855 100644
--- a/SabreTools.RedumpLib.Test/BuilderTests.cs
+++ b/SabreTools.RedumpLib.Test/BuilderTests.cs
@@ -26,102 +26,6 @@ namespace SabreTools.RedumpLib.Test
Assert.Equal(expectNull, si == null);
}
- [Fact]
- public void EnsureAllSections_Null_Filled()
- {
- SubmissionInfo? si = null;
- var actual = Builder.EnsureAllSections(si);
-
- Assert.NotNull(actual);
- Assert.NotNull(actual.CommonDiscInfo);
- Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields);
- Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields);
- Assert.NotNull(actual.VersionAndEditions);
- Assert.NotNull(actual.EDC);
- Assert.NotNull(actual.ParentCloneRelationship);
- Assert.NotNull(actual.Extras);
- Assert.NotNull(actual.CopyProtection);
- Assert.NotNull(actual.DumpersAndStatus);
- Assert.NotNull(actual.TracksAndWriteOffsets);
- Assert.NotNull(actual.SizeAndChecksums);
- Assert.NotNull(actual.DumpingInfo);
- Assert.NotNull(actual.Artifacts);
- }
-
- [Fact]
- public void EnsureAllSections_Empty_Filled()
- {
- SubmissionInfo? si = new SubmissionInfo
- {
- CommonDiscInfo = null,
- VersionAndEditions = null,
- EDC = null,
- ParentCloneRelationship = null,
- Extras = null,
- CopyProtection = null,
- DumpersAndStatus = null,
- TracksAndWriteOffsets = null,
- SizeAndChecksums = null,
- DumpingInfo = null,
- Artifacts = null,
- };
- var actual = Builder.EnsureAllSections(si);
-
- Assert.NotNull(actual);
- Assert.NotNull(actual.CommonDiscInfo);
- Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields);
- Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields);
- Assert.NotNull(actual.VersionAndEditions);
- Assert.NotNull(actual.EDC);
- Assert.NotNull(actual.ParentCloneRelationship);
- Assert.NotNull(actual.Extras);
- Assert.NotNull(actual.CopyProtection);
- Assert.NotNull(actual.DumpersAndStatus);
- Assert.NotNull(actual.TracksAndWriteOffsets);
- Assert.NotNull(actual.SizeAndChecksums);
- Assert.NotNull(actual.DumpingInfo);
- Assert.NotNull(actual.Artifacts);
- }
-
- [Fact]
- public void EnsureAllSections_Filled_Filled()
- {
- SubmissionInfo? si = new SubmissionInfo
- {
- CommonDiscInfo = new CommonDiscInfoSection
- {
- CommentsSpecialFields = [],
- ContentsSpecialFields = [],
- },
- VersionAndEditions = new VersionAndEditionsSection(),
- EDC = new EDCSection(),
- ParentCloneRelationship = new ParentCloneRelationshipSection(),
- Extras = new ExtrasSection(),
- CopyProtection = new CopyProtectionSection(),
- DumpersAndStatus = new DumpersAndStatusSection(),
- TracksAndWriteOffsets = new TracksAndWriteOffsetsSection(),
- SizeAndChecksums = new SizeAndChecksumsSection(),
- DumpingInfo = new DumpingInfoSection(),
- Artifacts = [],
- };
- var actual = Builder.EnsureAllSections(si);
-
- Assert.NotNull(actual);
- Assert.NotNull(actual.CommonDiscInfo);
- Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields);
- Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields);
- Assert.NotNull(actual.VersionAndEditions);
- Assert.NotNull(actual.EDC);
- Assert.NotNull(actual.ParentCloneRelationship);
- Assert.NotNull(actual.Extras);
- Assert.NotNull(actual.CopyProtection);
- Assert.NotNull(actual.DumpersAndStatus);
- Assert.NotNull(actual.TracksAndWriteOffsets);
- Assert.NotNull(actual.SizeAndChecksums);
- Assert.NotNull(actual.DumpingInfo);
- Assert.NotNull(actual.Artifacts);
- }
-
[Fact]
public void InjectSubmissionInformation_BothNull_Null()
{
@@ -188,4 +92,4 @@ namespace SabreTools.RedumpLib.Test
Assert.Equal(expected, actual);
}
}
-}
\ No newline at end of file
+}
diff --git a/SabreTools.RedumpLib.Test/ValidatorTests.cs b/SabreTools.RedumpLib.Test/ValidatorTests.cs
index af1794c..18aaaa0 100644
--- a/SabreTools.RedumpLib.Test/ValidatorTests.cs
+++ b/SabreTools.RedumpLib.Test/ValidatorTests.cs
@@ -28,7 +28,7 @@ namespace SabreTools.RedumpLib.Test
SubmissionInfo si = new SubmissionInfo
{
CommonDiscInfo = new CommonDiscInfoSection { Media = DiscType.CD },
- SizeAndChecksums = null,
+ SizeAndChecksums = new(),
};
Validator.NormalizeDiscType(si);
@@ -301,4 +301,4 @@ namespace SabreTools.RedumpLib.Test
Assert.Equal(expected, si.CommonDiscInfo.Media);
}
}
-}
\ No newline at end of file
+}
diff --git a/SabreTools.RedumpLib/Builder.cs b/SabreTools.RedumpLib/Builder.cs
index 0fdf24d..9932fd1 100644
--- a/SabreTools.RedumpLib/Builder.cs
+++ b/SabreTools.RedumpLib/Builder.cs
@@ -253,8 +253,6 @@ namespace SabreTools.RedumpLib
/// True to include all pullable information, false to do bare minimum
public async static Task FillFromId(RedumpClient rc, SubmissionInfo info, int id, bool includeAllData)
{
- // Ensure that required sections exist
- info = EnsureAllSections(info);
var discData = await rc.DownloadSingleSiteID(id);
if (string.IsNullOrEmpty(discData))
return false;
@@ -605,35 +603,6 @@ namespace SabreTools.RedumpLib
return true;
}
- ///
- /// Ensure all required sections in a submission info exist
- ///
- /// SubmissionInfo object to verify
- public static SubmissionInfo EnsureAllSections(SubmissionInfo? info)
- {
- // If there's no info, create one
- info ??= new SubmissionInfo();
-
- // Ensure all sections
- info.CommonDiscInfo ??= new CommonDiscInfoSection();
- info.VersionAndEditions ??= new VersionAndEditionsSection();
- info.EDC ??= new EDCSection();
- info.ParentCloneRelationship ??= new ParentCloneRelationshipSection();
- info.Extras ??= new ExtrasSection();
- info.CopyProtection ??= new CopyProtectionSection();
- info.DumpersAndStatus ??= new DumpersAndStatusSection();
- info.TracksAndWriteOffsets ??= new TracksAndWriteOffsetsSection();
- info.SizeAndChecksums ??= new SizeAndChecksumsSection();
- info.DumpingInfo ??= new DumpingInfoSection();
- info.Artifacts ??= [];
-
- // Ensure special dictionaries
- info.CommonDiscInfo.CommentsSpecialFields ??= [];
- info.CommonDiscInfo.ContentsSpecialFields ??= [];
-
- return info;
- }
-
///
/// Inject information from a seed SubmissionInfo into the existing one
///
@@ -645,62 +614,52 @@ namespace SabreTools.RedumpLib
if (seed == null)
return info;
- // Ensure that required sections exist
- info = EnsureAllSections(info);
-
// Otherwise, inject information as necessary
- if (info.CommonDiscInfo != null && seed.CommonDiscInfo != null)
- {
- // Info that only overwrites if supplied
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Title)) info.CommonDiscInfo.Title = seed.CommonDiscInfo.Title;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.ForeignTitleNonLatin)) info.CommonDiscInfo.ForeignTitleNonLatin = seed.CommonDiscInfo.ForeignTitleNonLatin;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscNumberLetter)) info.CommonDiscInfo.DiscNumberLetter = seed.CommonDiscInfo.DiscNumberLetter;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscTitle)) info.CommonDiscInfo.DiscTitle = seed.CommonDiscInfo.DiscTitle;
- if (seed.CommonDiscInfo.Category != null) info.CommonDiscInfo.Category = seed.CommonDiscInfo.Category;
- if (seed.CommonDiscInfo.Region != null) info.CommonDiscInfo.Region = seed.CommonDiscInfo.Region;
- if (seed.CommonDiscInfo.Languages != null) info.CommonDiscInfo.Languages = seed.CommonDiscInfo.Languages;
- if (seed.CommonDiscInfo.LanguageSelection != null) info.CommonDiscInfo.LanguageSelection = seed.CommonDiscInfo.LanguageSelection;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Serial)) info.CommonDiscInfo.Serial = seed.CommonDiscInfo.Serial;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Barcode)) info.CommonDiscInfo.Barcode = seed.CommonDiscInfo.Barcode;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Comments)) info.CommonDiscInfo.Comments = seed.CommonDiscInfo.Comments;
- if (seed.CommonDiscInfo.CommentsSpecialFields != null) info.CommonDiscInfo.CommentsSpecialFields = seed.CommonDiscInfo.CommentsSpecialFields;
- if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Contents)) info.CommonDiscInfo.Contents = seed.CommonDiscInfo.Contents;
- if (seed.CommonDiscInfo.ContentsSpecialFields != null) info.CommonDiscInfo.ContentsSpecialFields = seed.CommonDiscInfo.ContentsSpecialFields;
+ info ??= new SubmissionInfo();
- // Info that always overwrites
- info.CommonDiscInfo.Layer0MasteringRing = seed.CommonDiscInfo.Layer0MasteringRing;
- info.CommonDiscInfo.Layer0MasteringSID = seed.CommonDiscInfo.Layer0MasteringSID;
- info.CommonDiscInfo.Layer0ToolstampMasteringCode = seed.CommonDiscInfo.Layer0ToolstampMasteringCode;
- info.CommonDiscInfo.Layer0MouldSID = seed.CommonDiscInfo.Layer0MouldSID;
- info.CommonDiscInfo.Layer0AdditionalMould = seed.CommonDiscInfo.Layer0AdditionalMould;
+ // Info that only overwrites if supplied
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Title)) info.CommonDiscInfo.Title = seed.CommonDiscInfo.Title;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.ForeignTitleNonLatin)) info.CommonDiscInfo.ForeignTitleNonLatin = seed.CommonDiscInfo.ForeignTitleNonLatin;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscNumberLetter)) info.CommonDiscInfo.DiscNumberLetter = seed.CommonDiscInfo.DiscNumberLetter;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscTitle)) info.CommonDiscInfo.DiscTitle = seed.CommonDiscInfo.DiscTitle;
+ if (seed.CommonDiscInfo.Category != null) info.CommonDiscInfo.Category = seed.CommonDiscInfo.Category;
+ if (seed.CommonDiscInfo.Region != null) info.CommonDiscInfo.Region = seed.CommonDiscInfo.Region;
+ if (seed.CommonDiscInfo.Languages != null) info.CommonDiscInfo.Languages = seed.CommonDiscInfo.Languages;
+ if (seed.CommonDiscInfo.LanguageSelection != null) info.CommonDiscInfo.LanguageSelection = seed.CommonDiscInfo.LanguageSelection;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Serial)) info.CommonDiscInfo.Serial = seed.CommonDiscInfo.Serial;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Barcode)) info.CommonDiscInfo.Barcode = seed.CommonDiscInfo.Barcode;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Comments)) info.CommonDiscInfo.Comments = seed.CommonDiscInfo.Comments;
+ if (seed.CommonDiscInfo.CommentsSpecialFields != null) info.CommonDiscInfo.CommentsSpecialFields = seed.CommonDiscInfo.CommentsSpecialFields;
+ if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Contents)) info.CommonDiscInfo.Contents = seed.CommonDiscInfo.Contents;
+ if (seed.CommonDiscInfo.ContentsSpecialFields != null) info.CommonDiscInfo.ContentsSpecialFields = seed.CommonDiscInfo.ContentsSpecialFields;
- info.CommonDiscInfo.Layer1MasteringRing = seed.CommonDiscInfo.Layer1MasteringRing;
- info.CommonDiscInfo.Layer1MasteringSID = seed.CommonDiscInfo.Layer1MasteringSID;
- info.CommonDiscInfo.Layer1ToolstampMasteringCode = seed.CommonDiscInfo.Layer1ToolstampMasteringCode;
- info.CommonDiscInfo.Layer1MouldSID = seed.CommonDiscInfo.Layer1MouldSID;
- info.CommonDiscInfo.Layer1AdditionalMould = seed.CommonDiscInfo.Layer1AdditionalMould;
+ // Info that always overwrites
+ info.CommonDiscInfo.Layer0MasteringRing = seed.CommonDiscInfo.Layer0MasteringRing;
+ info.CommonDiscInfo.Layer0MasteringSID = seed.CommonDiscInfo.Layer0MasteringSID;
+ info.CommonDiscInfo.Layer0ToolstampMasteringCode = seed.CommonDiscInfo.Layer0ToolstampMasteringCode;
+ info.CommonDiscInfo.Layer0MouldSID = seed.CommonDiscInfo.Layer0MouldSID;
+ info.CommonDiscInfo.Layer0AdditionalMould = seed.CommonDiscInfo.Layer0AdditionalMould;
- info.CommonDiscInfo.Layer2MasteringRing = seed.CommonDiscInfo.Layer2MasteringRing;
- info.CommonDiscInfo.Layer2MasteringSID = seed.CommonDiscInfo.Layer2MasteringSID;
- info.CommonDiscInfo.Layer2ToolstampMasteringCode = seed.CommonDiscInfo.Layer2ToolstampMasteringCode;
+ info.CommonDiscInfo.Layer1MasteringRing = seed.CommonDiscInfo.Layer1MasteringRing;
+ info.CommonDiscInfo.Layer1MasteringSID = seed.CommonDiscInfo.Layer1MasteringSID;
+ info.CommonDiscInfo.Layer1ToolstampMasteringCode = seed.CommonDiscInfo.Layer1ToolstampMasteringCode;
+ info.CommonDiscInfo.Layer1MouldSID = seed.CommonDiscInfo.Layer1MouldSID;
+ info.CommonDiscInfo.Layer1AdditionalMould = seed.CommonDiscInfo.Layer1AdditionalMould;
- info.CommonDiscInfo.Layer3MasteringRing = seed.CommonDiscInfo.Layer3MasteringRing;
- info.CommonDiscInfo.Layer3MasteringSID = seed.CommonDiscInfo.Layer3MasteringSID;
- info.CommonDiscInfo.Layer3ToolstampMasteringCode = seed.CommonDiscInfo.Layer3ToolstampMasteringCode;
- }
+ info.CommonDiscInfo.Layer2MasteringRing = seed.CommonDiscInfo.Layer2MasteringRing;
+ info.CommonDiscInfo.Layer2MasteringSID = seed.CommonDiscInfo.Layer2MasteringSID;
+ info.CommonDiscInfo.Layer2ToolstampMasteringCode = seed.CommonDiscInfo.Layer2ToolstampMasteringCode;
- if (info.VersionAndEditions != null && seed.VersionAndEditions != null)
- {
- // Info that only overwrites if supplied
- if (!string.IsNullOrEmpty(seed.VersionAndEditions.Version)) info.VersionAndEditions.Version = seed.VersionAndEditions.Version;
- if (!string.IsNullOrEmpty(seed.VersionAndEditions.OtherEditions)) info.VersionAndEditions.OtherEditions = seed.VersionAndEditions.OtherEditions;
- }
+ info.CommonDiscInfo.Layer3MasteringRing = seed.CommonDiscInfo.Layer3MasteringRing;
+ info.CommonDiscInfo.Layer3MasteringSID = seed.CommonDiscInfo.Layer3MasteringSID;
+ info.CommonDiscInfo.Layer3ToolstampMasteringCode = seed.CommonDiscInfo.Layer3ToolstampMasteringCode;
- if (info.CopyProtection != null && seed.CopyProtection != null)
- {
- // Info that only overwrites if supplied
- if (!string.IsNullOrEmpty(seed.CopyProtection.Protection)) info.CopyProtection.Protection = seed.CopyProtection.Protection;
- }
+ // Info that only overwrites if supplied
+ if (!string.IsNullOrEmpty(seed.VersionAndEditions.Version)) info.VersionAndEditions.Version = seed.VersionAndEditions.Version;
+ if (!string.IsNullOrEmpty(seed.VersionAndEditions.OtherEditions)) info.VersionAndEditions.OtherEditions = seed.VersionAndEditions.OtherEditions;
+
+ // Info that only overwrites if supplied
+ if (!string.IsNullOrEmpty(seed.CopyProtection.Protection)) info.CopyProtection.Protection = seed.CopyProtection.Protection;
return info;
}
diff --git a/SabreTools.RedumpLib/Data/SubmissionInfo.cs b/SabreTools.RedumpLib/Data/SubmissionInfo.cs
index c9a140c..07f506a 100644
--- a/SabreTools.RedumpLib/Data/SubmissionInfo.cs
+++ b/SabreTools.RedumpLib/Data/SubmissionInfo.cs
@@ -38,48 +38,44 @@ namespace SabreTools.RedumpLib.Data
public DateTime? LastModified { get; set; }
[JsonProperty(PropertyName = "common_disc_info", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public CommonDiscInfoSection? CommonDiscInfo { get; set; } = new CommonDiscInfoSection();
+ public CommonDiscInfoSection CommonDiscInfo { get; set; } = new CommonDiscInfoSection();
[JsonProperty(PropertyName = "versions_and_editions", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public VersionAndEditionsSection? VersionAndEditions { get; set; } = new VersionAndEditionsSection();
+ public VersionAndEditionsSection VersionAndEditions { get; set; } = new VersionAndEditionsSection();
[JsonProperty(PropertyName = "edc", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public EDCSection? EDC { get; set; } = new EDCSection();
+ public EDCSection EDC { get; set; } = new EDCSection();
[JsonProperty(PropertyName = "parent_clone_relationship", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public ParentCloneRelationshipSection? ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection();
+ public ParentCloneRelationshipSection ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection();
[JsonProperty(PropertyName = "extras", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public ExtrasSection? Extras { get; set; } = new ExtrasSection();
+ public ExtrasSection Extras { get; set; } = new ExtrasSection();
[JsonProperty(PropertyName = "copy_protection", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public CopyProtectionSection? CopyProtection { get; set; } = new CopyProtectionSection();
+ public CopyProtectionSection CopyProtection { get; set; } = new CopyProtectionSection();
[JsonProperty(PropertyName = "dumpers_and_status", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public DumpersAndStatusSection? DumpersAndStatus { get; set; } = new DumpersAndStatusSection();
+ public DumpersAndStatusSection DumpersAndStatus { get; set; } = new DumpersAndStatusSection();
[JsonProperty(PropertyName = "tracks_and_write_offsets", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public TracksAndWriteOffsetsSection? TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection();
+ public TracksAndWriteOffsetsSection TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection();
[JsonProperty(PropertyName = "size_and_checksums", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public SizeAndChecksumsSection? SizeAndChecksums { get; set; } = new SizeAndChecksumsSection();
+ public SizeAndChecksumsSection SizeAndChecksums { get; set; } = new SizeAndChecksumsSection();
[JsonProperty(PropertyName = "dumping_info", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public DumpingInfoSection? DumpingInfo { get; set; } = new DumpingInfoSection();
+ public DumpingInfoSection DumpingInfo { get; set; } = new DumpingInfoSection();
[JsonProperty(PropertyName = "artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public Dictionary? Artifacts { get; set; } = [];
+ public Dictionary Artifacts { get; set; } = [];
public object Clone()
{
- Dictionary? artifacts = null;
- if (this.Artifacts != null)
+ Dictionary artifacts = [];
+ foreach (var kvp in this.Artifacts)
{
- artifacts = new Dictionary();
- foreach (var kvp in this.Artifacts)
- {
- artifacts[kvp.Key] = kvp.Value;
- }
+ artifacts[kvp.Key] = kvp.Value;
}
return new SubmissionInfo
@@ -89,16 +85,16 @@ namespace SabreTools.RedumpLib.Data
PartiallyMatchedIDs = this.PartiallyMatchedIDs,
Added = this.Added,
LastModified = this.LastModified,
- CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection,
- VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection,
- EDC = this.EDC?.Clone() as EDCSection,
- ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection,
- Extras = this.Extras?.Clone() as ExtrasSection,
- CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection,
- DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection,
- TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection,
- SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection,
- DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection,
+ CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection ?? new CommonDiscInfoSection(),
+ VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection ?? new VersionAndEditionsSection(),
+ EDC = this.EDC?.Clone() as EDCSection ?? new EDCSection(),
+ ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection ?? new ParentCloneRelationshipSection(),
+ Extras = this.Extras?.Clone() as ExtrasSection ?? new ExtrasSection(),
+ CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection ?? new CopyProtectionSection(),
+ DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection ?? new DumpersAndStatusSection(),
+ TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection ?? new TracksAndWriteOffsetsSection(),
+ SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection ?? new SizeAndChecksumsSection(),
+ DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection ?? new DumpingInfoSection(),
Artifacts = artifacts,
};
}
@@ -232,34 +228,26 @@ namespace SabreTools.RedumpLib.Data
public string? Comments { get; set; }
[JsonIgnore]
- public Dictionary? CommentsSpecialFields { get; set; }
+ public Dictionary CommentsSpecialFields { get; set; } = [];
[JsonProperty(PropertyName = "d_contents", NullValueHandling = NullValueHandling.Ignore)]
public string? Contents { get; set; }
[JsonIgnore]
- public Dictionary? ContentsSpecialFields { get; set; }
+ public Dictionary ContentsSpecialFields { get; set; } = [];
public object Clone()
{
- Dictionary? commentsSpecialFields = null;
- if (this.CommentsSpecialFields != null)
+ Dictionary commentsSpecialFields = [];
+ foreach (var kvp in this.CommentsSpecialFields)
{
- commentsSpecialFields = new Dictionary();
- foreach (var kvp in this.CommentsSpecialFields)
- {
- commentsSpecialFields[kvp.Key] = kvp.Value;
- }
+ commentsSpecialFields[kvp.Key] = kvp.Value;
}
- Dictionary? contentsSpecialFields = null;
- if (this.ContentsSpecialFields != null)
+ Dictionary contentsSpecialFields = [];
+ foreach (var kvp in this.ContentsSpecialFields)
{
- contentsSpecialFields = new Dictionary();
- foreach (var kvp in this.ContentsSpecialFields)
- {
- contentsSpecialFields[kvp.Key] = kvp.Value;
- }
+ contentsSpecialFields[kvp.Key] = kvp.Value;
}
return new CommonDiscInfoSection
diff --git a/SabreTools.RedumpLib/Formatter.cs b/SabreTools.RedumpLib/Formatter.cs
index 8186304..4a1a259 100644
--- a/SabreTools.RedumpLib/Formatter.cs
+++ b/SabreTools.RedumpLib/Formatter.cs
@@ -156,7 +156,7 @@ namespace SabreTools.RedumpLib
output.AppendLine();
// EDC section
- FormatOutputData(output, info.EDC, info.CommonDiscInfo?.System);
+ FormatOutputData(output, info.EDC, info.CommonDiscInfo.System);
output.AppendLine();
// Extras section
@@ -164,11 +164,11 @@ namespace SabreTools.RedumpLib
output.AppendLine();
// Copy Protection section
- FormatOutputData(output, info.CopyProtection, info.CommonDiscInfo?.System);
+ FormatOutputData(output, info.CopyProtection, info.CommonDiscInfo.System);
output.AppendLine();
// Tracks and Write Offsets section
- if (!string.IsNullOrEmpty(info.TracksAndWriteOffsets?.ClrMameProData))
+ if (!string.IsNullOrEmpty(info.TracksAndWriteOffsets.ClrMameProData))
{
FormatOutputData(output, info.TracksAndWriteOffsets!);
output.AppendLine();
@@ -178,8 +178,8 @@ namespace SabreTools.RedumpLib
{
FormatOutputData(output,
info.SizeAndChecksums,
- info.CommonDiscInfo?.Media.ToMediaType(),
- info.CommonDiscInfo?.System,
+ info.CommonDiscInfo.Media.ToMediaType(),
+ info.CommonDiscInfo.System,
enableRedumpCompatibility);
output.AppendLine();
}
@@ -226,7 +226,7 @@ namespace SabreTools.RedumpLib
info.CommonDiscInfo.Comments = info.CommonDiscInfo.Comments.Trim();
// Wipe out the special fields dictionary
- info.CommonDiscInfo.CommentsSpecialFields = null;
+ info.CommonDiscInfo.CommentsSpecialFields.Clear();
}
// Process the contents field
@@ -246,7 +246,7 @@ namespace SabreTools.RedumpLib
info.CommonDiscInfo.Contents = info.CommonDiscInfo.Contents.Trim();
// Wipe out the special fields dictionary
- info.CommonDiscInfo.ContentsSpecialFields = null;
+ info.CommonDiscInfo.ContentsSpecialFields.Clear();
}
}
diff --git a/SabreTools.RedumpLib/Validator.cs b/SabreTools.RedumpLib/Validator.cs
index f26ff71..6acc524 100644
--- a/SabreTools.RedumpLib/Validator.cs
+++ b/SabreTools.RedumpLib/Validator.cs
@@ -16,7 +16,7 @@ namespace SabreTools.RedumpLib
public static void NormalizeDiscType(SubmissionInfo info)
{
// If we have nothing valid, do nothing
- if (info?.CommonDiscInfo?.Media == null || info?.SizeAndChecksums == null)
+ if (info.CommonDiscInfo.Media == null || info.SizeAndChecksums == default)
return;
switch (info.CommonDiscInfo.Media)
@@ -161,7 +161,7 @@ namespace SabreTools.RedumpLib
public async static Task?> ValidateUniversalHash(RedumpClient rc, SubmissionInfo info)
{
// If we don't have special fields
- if (info.CommonDiscInfo?.CommentsSpecialFields == null)
+ if (info.CommonDiscInfo.CommentsSpecialFields == null)
return null;
// If we don't have a universal hash