Finish and use more enum conversions

This commit is contained in:
Matt Nadareski
2020-08-24 13:21:59 -07:00
parent d8fdce88c0
commit df9d908d04
11 changed files with 439 additions and 343 deletions

View File

@@ -565,31 +565,11 @@ namespace SabreTools.Library.DatFiles
if (!string.IsNullOrWhiteSpace(Header.Comment))
cmpw.WriteStandalone("comment", Header.Comment);
switch (Header.ForcePacking)
{
case PackingFlag.Unzip:
cmpw.WriteStandalone("forcezipping", "no", false);
break;
case PackingFlag.Zip:
cmpw.WriteStandalone("forcezipping", "yes", false);
break;
}
if (Header.ForcePacking != PackingFlag.None)
cmpw.WriteStandalone("forcezipping", Header.ForcePacking.FromPackingFlag(true), false);
switch (Header.ForceMerging)
{
case MergingFlag.Full:
cmpw.WriteStandalone("forcemerging", "full", false);
break;
case MergingFlag.Split:
cmpw.WriteStandalone("forcemerging", "split", false);
break;
case MergingFlag.Merged:
cmpw.WriteStandalone("forcemerging", "merged", false);
break;
case MergingFlag.NonMerged:
cmpw.WriteStandalone("forcemerging", "nonmerged", false);
break;
}
if (Header.ForceMerging != MergingFlag.None)
cmpw.WriteStandalone("forcemerging", Header.ForceMerging.FromMergingFlag(false), false);
// End clrmamepro
cmpw.WriteEndElement();

View File

@@ -1011,8 +1011,8 @@ namespace SabreTools.Library.DatFiles
MachineDescriptionToName();
// If we are using tags from the DAT, set the proper input for split type unless overridden
if (useTags && filter.InternalSplit == SplitType.None)
filter.InternalSplit = Header.ForceMerging.AsSplitType();
if (useTags && filter.InternalSplit == MergingFlag.None)
filter.InternalSplit = Header.ForceMerging;
// Run internal splitting
ProcessSplitType(filter.InternalSplit);
@@ -1344,30 +1344,30 @@ namespace SabreTools.Library.DatFiles
#region Internal Splitting/Merging
/// <summary>
/// Process items according to SplitType
/// Process items according to split type
/// </summary>
/// <param name="splitType">SplitType to implement</param>
public void ProcessSplitType(SplitType splitType)
/// <param name="splitType">MergingFlag to implement</param>
public void ProcessSplitType(MergingFlag splitType)
{
// Now we pre-process the DAT with the splitting/merging mode
switch (splitType)
{
case SplitType.None:
case MergingFlag.None:
// No-op
break;
case SplitType.DeviceNonMerged:
case MergingFlag.Device:
CreateDeviceNonMergedSets(DedupeType.None);
break;
case SplitType.FullNonMerged:
case MergingFlag.Full:
CreateFullyNonMergedSets(DedupeType.None);
break;
case SplitType.NonMerged:
case MergingFlag.NonMerged:
CreateNonMergedSets(DedupeType.None);
break;
case SplitType.Merged:
case MergingFlag.Merged:
CreateMergedSets(DedupeType.None);
break;
case SplitType.Split:
case MergingFlag.Split:
CreateSplitSets(DedupeType.None);
break;
}

View File

@@ -213,6 +213,7 @@ namespace SabreTools.Library.DatFiles
Merged,
NonMerged,
Full,
Device, // This is not usually defined for Merging flags
}
/// <summary>
@@ -246,19 +247,6 @@ namespace SabreTools.Library.DatFiles
File,
}
/// <summary>
/// Determines how a DAT will be split internally
/// </summary>
public enum SplitType
{
None = 0,
NonMerged,
Merged,
FullNonMerged,
Split,
DeviceNonMerged
}
/// <summary>
/// Determines what sort of files get externally hashed
/// </summary>

View File

@@ -1034,18 +1034,7 @@ namespace SabreTools.Library.DatFiles
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
xtw.WriteAttributeString("ismechanical", "yes");
switch (datItem.Machine.Runnable)
{
case Runnable.No:
xtw.WriteAttributeString("runnable", "no");
break;
case Runnable.Partial:
xtw.WriteAttributeString("runnable", "partial");
break;
case Runnable.Yes:
xtw.WriteAttributeString("runnable", "yes");
break;
}
xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable());
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
@@ -1150,7 +1139,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("region", disk.Region);
xtw.WriteOptionalAttributeString("index", disk.Index);
xtw.WriteOptionalAttributeString("writable", disk.Writable.FromYesNo());
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString());
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
xtw.WriteOptionalAttributeString("optional", disk.Optional.FromYesNo());
xtw.WriteEndElement();
break;
@@ -1173,7 +1162,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("merge", rom.MergeTag);
xtw.WriteOptionalAttributeString("region", rom.Region);
xtw.WriteOptionalAttributeString("offset", rom.Offset);
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
xtw.WriteOptionalAttributeString("optional", rom.Optional.FromYesNo());
xtw.WriteEndElement();
break;

View File

@@ -785,45 +785,10 @@ namespace SabreTools.Library.DatFiles
|| !string.IsNullOrWhiteSpace(Header.HeaderSkipper))
{
xtw.WriteStartElement("clrmamepro");
switch (Header.ForcePacking)
{
case PackingFlag.Unzip:
xtw.WriteAttributeString("forcepacking", "unzip");
break;
case PackingFlag.Zip:
xtw.WriteAttributeString("forcepacking", "zip");
break;
}
switch (Header.ForceMerging)
{
case MergingFlag.Full:
xtw.WriteAttributeString("forcemerging", "full");
break;
case MergingFlag.Split:
xtw.WriteAttributeString("forcemerging", "split");
break;
case MergingFlag.Merged:
xtw.WriteAttributeString("forcemerging", "merged");
break;
case MergingFlag.NonMerged:
xtw.WriteAttributeString("forcemerging", "nonmerged");
break;
}
switch (Header.ForceNodump)
{
case NodumpFlag.Ignore:
xtw.WriteAttributeString("forcenodump", "ignore");
break;
case NodumpFlag.Obsolete:
xtw.WriteAttributeString("forcenodump", "obsolete");
break;
case NodumpFlag.Required:
xtw.WriteAttributeString("forcenodump", "required");
break;
}
xtw.WriteOptionalAttributeString("forcepacking", Header.ForcePacking.FromPackingFlag(false));
xtw.WriteOptionalAttributeString("forcemerging", Header.ForceMerging.FromMergingFlag(false));
xtw.WriteOptionalAttributeString("forcenodump", Header.ForceNodump.FromNodumpFlag());
xtw.WriteOptionalAttributeString("header", Header.HeaderSkipper);
// End clrmamepro
@@ -838,43 +803,9 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("romcenter");
xtw.WriteOptionalAttributeString("plugin", Header.System);
switch (Header.RomMode)
{
case MergingFlag.Split:
xtw.WriteAttributeString("rommode", "split");
break;
case MergingFlag.Merged:
xtw.WriteAttributeString("rommode", "merged");
break;
case MergingFlag.NonMerged:
xtw.WriteAttributeString("rommode", "unmerged");
break;
}
switch (Header.BiosMode)
{
case MergingFlag.Split:
xtw.WriteAttributeString("biosmode", "split");
break;
case MergingFlag.Merged:
xtw.WriteAttributeString("biosmode", "merged");
break;
case MergingFlag.NonMerged:
xtw.WriteAttributeString("biosmode", "unmerged");
break;
}
switch (Header.SampleMode)
{
case MergingFlag.Merged:
xtw.WriteAttributeString("samplemode", "merged");
break;
case MergingFlag.NonMerged:
xtw.WriteAttributeString("samplemode", "unmerged");
break;
}
xtw.WriteOptionalAttributeString("rommode", Header.RomMode.FromMergingFlag(true));
xtw.WriteOptionalAttributeString("biosmode", Header.BiosMode.FromMergingFlag(true));
xtw.WriteOptionalAttributeString("samplemode", Header.SampleMode.FromMergingFlag(true));
xtw.WriteOptionalAttributeString("lockrommode", Header.LockRomMode.FromYesNo());
xtw.WriteOptionalAttributeString("lockbiosmode", Header.LockBiosMode.FromYesNo());
xtw.WriteOptionalAttributeString("locksamplemode", Header.LockSampleMode.FromYesNo());
@@ -921,21 +852,7 @@ namespace SabreTools.Library.DatFiles
if (datItem.Machine.MachineType.HasFlag(MachineType.Mechanical))
xtw.WriteAttributeString("ismechanical", "yes");
if (datItem.Machine.Runnable != Runnable.NULL)
{
switch (datItem.Machine.Runnable)
{
case Runnable.No:
xtw.WriteAttributeString("runnable", "no");
break;
case Runnable.Partial:
xtw.WriteAttributeString("runnable", "partial");
break;
case Runnable.Yes:
xtw.WriteAttributeString("runnable", "yes");
break;
}
}
xtw.WriteOptionalAttributeString("runnable", datItem.Machine.Runnable.FromRunnable());
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
@@ -1065,7 +982,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
xtw.WriteEndElement();
break;
@@ -1095,7 +1012,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("sha384", rom.SHA384?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("date", rom.Date);
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
xtw.WriteOptionalAttributeString("inverted", rom.Inverted.FromYesNo());
xtw.WriteEndElement();
break;

View File

@@ -739,7 +739,7 @@ namespace SabreTools.Library.DatFiles
// Default to Rom for converting from other formats
case OpenMSXSubType.Rom:
case OpenMSXSubType.NULL:
xtw.WriteStartElement("rom");
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
xtw.WriteOptionalElementString("start", rom.Offset);
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
@@ -748,7 +748,7 @@ namespace SabreTools.Library.DatFiles
break;
case OpenMSXSubType.MegaRom:
xtw.WriteStartElement("megarom");
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
xtw.WriteOptionalElementString("start", rom.Offset);
xtw.WriteOptionalElementString("type", rom.OpenMSXType);
@@ -757,7 +757,7 @@ namespace SabreTools.Library.DatFiles
break;
case OpenMSXSubType.SCCPlusCart:
xtw.WriteStartElement("sccpluscart");
xtw.WriteStartElement(datItem.OpenMSXSubType.FromOpenMSXSubType());
xtw.WriteOptionalElementString("boot", rom.Boot);
xtw.WriteRequiredElementString("hash", rom.SHA1?.ToLowerInvariant());
xtw.WriteOptionalElementString("remark", rom.Remark);

View File

@@ -686,70 +686,28 @@ namespace SabreTools.Library.DatFiles
xtw.WriteEndElement();
}
switch (Header.ForcePacking)
if (Header.ForcePacking != PackingFlag.None)
{
case PackingFlag.Unzip:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcepacking");
xtw.WriteAttributeString("value", "unzip");
xtw.WriteEndElement();
break;
case PackingFlag.Zip:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcepacking");
xtw.WriteAttributeString("value", "zip");
xtw.WriteEndElement();
break;
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcepacking");
xtw.WriteOptionalAttributeString("value", Header.ForcePacking.FromPackingFlag(false));
xtw.WriteEndElement();
}
switch (Header.ForceMerging)
if (Header.ForceMerging != MergingFlag.None)
{
case MergingFlag.Full:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "full");
xtw.WriteEndElement();
break;
case MergingFlag.Split:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "split");
xtw.WriteEndElement();
break;
case MergingFlag.Merged:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "merged");
xtw.WriteEndElement();
break;
case MergingFlag.NonMerged:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", "nonmerged");
xtw.WriteEndElement();
break;
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcemerging");
xtw.WriteAttributeString("value", Header.ForceMerging.FromMergingFlag(false));
xtw.WriteEndElement();
}
switch (Header.ForceNodump)
if (Header.ForceNodump != NodumpFlag.None)
{
case NodumpFlag.Ignore:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "ignore");
xtw.WriteEndElement();
break;
case NodumpFlag.Obsolete:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "obsolete");
xtw.WriteEndElement();
break;
case NodumpFlag.Required:
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", "required");
xtw.WriteEndElement();
break;
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "forcenodump");
xtw.WriteAttributeString("value", Header.ForceNodump.FromNodumpFlag());
xtw.WriteEndElement();
}
// End flags
@@ -916,7 +874,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "status");
xtw.WriteAttributeString("value", disk.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteAttributeString("value", disk.ItemStatus.FromItemStatus(false));
xtw.WriteEndElement();
// End flags
@@ -959,7 +917,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("flag");
xtw.WriteAttributeString("name", "status");
xtw.WriteAttributeString("value", rom.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteAttributeString("value", rom.ItemStatus.FromItemStatus(false));
xtw.WriteEndElement();
// End flags

View File

@@ -736,45 +736,9 @@ namespace SabreTools.Library.DatFiles
xtw.WriteStartElement("softwarelist");
xtw.WriteRequiredAttributeString("name", Header.Name);
xtw.WriteRequiredAttributeString("description", Header.Description);
switch (Header.ForcePacking)
{
case PackingFlag.Unzip:
xtw.WriteAttributeString("forcepacking", "unzip");
break;
case PackingFlag.Zip:
xtw.WriteAttributeString("forcepacking", "zip");
break;
}
switch (Header.ForceMerging)
{
case MergingFlag.Full:
xtw.WriteAttributeString("forcemerging", "full");
break;
case MergingFlag.Split:
xtw.WriteAttributeString("forcemerging", "split");
break;
case MergingFlag.Merged:
xtw.WriteAttributeString("forcemerging", "merged");
break;
case MergingFlag.NonMerged:
xtw.WriteAttributeString("forcemerging", "nonmerged");
break;
}
switch (Header.ForceNodump)
{
case NodumpFlag.Ignore:
xtw.WriteAttributeString("forcenodump", "ignore");
break;
case NodumpFlag.Obsolete:
xtw.WriteAttributeString("forcenodump", "obsolete");
break;
case NodumpFlag.Required:
xtw.WriteAttributeString("forcenodump", "required");
break;
}
xtw.WriteOptionalAttributeString("forcepacking", Header.ForcePacking.FromPackingFlag(false));
xtw.WriteOptionalAttributeString("forcemerging", Header.ForceMerging.FromMergingFlag(false));
xtw.WriteOptionalAttributeString("forcenodump", Header.ForceNodump.FromNodumpFlag());
xtw.Flush();
}
@@ -807,18 +771,7 @@ namespace SabreTools.Library.DatFiles
if (!string.Equals(datItem.Machine.Name, datItem.Machine.CloneOf, StringComparison.OrdinalIgnoreCase))
xtw.WriteOptionalAttributeString("cloneof", datItem.Machine.CloneOf);
switch (datItem.Machine.Supported)
{
case Supported.No:
xtw.WriteAttributeString("supported", "no");
break;
case Supported.Partial:
xtw.WriteAttributeString("supported", "partial");
break;
case Supported.Yes:
xtw.WriteAttributeString("supported", "yes");
break;
}
xtw.WriteOptionalAttributeString("supported", datItem.Machine.Supported.FromSupported());
xtw.WriteOptionalElementString("description", datItem.Machine.Description);
xtw.WriteOptionalElementString("year", datItem.Machine.Year);
@@ -960,7 +913,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("sha256", disk.SHA256?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("sha384", disk.SHA384?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("sha512", disk.SHA512?.ToLowerInvariant());
if (disk.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", disk.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteOptionalAttributeString("status", disk.ItemStatus.FromItemStatus(false));
xtw.WriteOptionalAttributeString("writable", disk.Writable.FromYesNo());
xtw.WriteEndElement();
@@ -993,7 +946,7 @@ namespace SabreTools.Library.DatFiles
xtw.WriteOptionalAttributeString("sha512", rom.SHA512?.ToLowerInvariant());
xtw.WriteOptionalAttributeString("offset", rom.Offset);
xtw.WriteOptionalAttributeString("value", rom.Value);
if (rom.ItemStatus != ItemStatus.None) xtw.WriteAttributeString("status", rom.ItemStatus.ToString().ToLowerInvariant());
xtw.WriteOptionalAttributeString("status", rom.ItemStatus.FromItemStatus(false));
xtw.WriteOptionalAttributeString("loadflag", rom.LoadFlag);
xtw.WriteEndElement();