From 55522bf59bf6c829a8386510445b0f31886f45fd Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 27 Mar 2026 09:31:19 -0400 Subject: [PATCH] Port split format extension from ST --- SabreTools.Metadata.DatFiles/Extensions.cs | 144 +++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 SabreTools.Metadata.DatFiles/Extensions.cs diff --git a/SabreTools.Metadata.DatFiles/Extensions.cs b/SabreTools.Metadata.DatFiles/Extensions.cs new file mode 100644 index 00000000..27fe9923 --- /dev/null +++ b/SabreTools.Metadata.DatFiles/Extensions.cs @@ -0,0 +1,144 @@ +using System.Collections.Generic; + +namespace SabreTools.Metadata.DatFiles +{ + public static class Extensions + { + /// + /// Split a format flag into multiple distinct values + /// + /// Combined DatFormat value to split + /// List representing the individual flag values set + /// TODO: Consider making DatFormat a non-flag enum so this doesn't need to happen + public static List SplitFormats(this DatFormat datFormat) + { + List splitFormats = []; + +#if NET20 || NET35 + if ((datFormat & DatFormat.ArchiveDotOrg) != 0) + splitFormats.Add(DatFormat.ArchiveDotOrg); + if ((datFormat & DatFormat.AttractMode) != 0) + splitFormats.Add(DatFormat.AttractMode); + if ((datFormat & DatFormat.ClrMamePro) != 0) + splitFormats.Add(DatFormat.ClrMamePro); + if ((datFormat & DatFormat.CSV) != 0) + splitFormats.Add(DatFormat.CSV); + if ((datFormat & DatFormat.DOSCenter) != 0) + splitFormats.Add(DatFormat.DOSCenter); + if ((datFormat & DatFormat.EverdriveSMDB) != 0) + splitFormats.Add(DatFormat.EverdriveSMDB); + if ((datFormat & DatFormat.Listrom) != 0) + splitFormats.Add(DatFormat.Listrom); + if ((datFormat & DatFormat.Listxml) != 0) + splitFormats.Add(DatFormat.Listxml); + if ((datFormat & DatFormat.Logiqx) != 0) + splitFormats.Add(DatFormat.Logiqx); + if ((datFormat & DatFormat.LogiqxDeprecated) != 0) + splitFormats.Add(DatFormat.LogiqxDeprecated); + if ((datFormat & DatFormat.MissFile) != 0) + splitFormats.Add(DatFormat.MissFile); + if ((datFormat & DatFormat.OfflineList) != 0) + splitFormats.Add(DatFormat.OfflineList); + if ((datFormat & DatFormat.OpenMSX) != 0) + splitFormats.Add(DatFormat.OpenMSX); + if ((datFormat & DatFormat.RedumpMD2) != 0) + splitFormats.Add(DatFormat.RedumpMD2); + if ((datFormat & DatFormat.RedumpMD4) != 0) + splitFormats.Add(DatFormat.RedumpMD4); + if ((datFormat & DatFormat.RedumpMD5) != 0) + splitFormats.Add(DatFormat.RedumpMD5); + if ((datFormat & DatFormat.RedumpRIPEMD128) != 0) + splitFormats.Add(DatFormat.RedumpRIPEMD128); + if ((datFormat & DatFormat.RedumpRIPEMD160) != 0) + splitFormats.Add(DatFormat.RedumpRIPEMD160); + if ((datFormat & DatFormat.RedumpSFV) != 0) + splitFormats.Add(DatFormat.RedumpSFV); + if ((datFormat & DatFormat.RedumpSHA1) != 0) + splitFormats.Add(DatFormat.RedumpSHA1); + if ((datFormat & DatFormat.RedumpSHA256) != 0) + splitFormats.Add(DatFormat.RedumpSHA256); + if ((datFormat & DatFormat.RedumpSHA384) != 0) + splitFormats.Add(DatFormat.RedumpSHA384); + if ((datFormat & DatFormat.RedumpSHA512) != 0) + splitFormats.Add(DatFormat.RedumpSHA512); + if ((datFormat & DatFormat.RedumpSpamSum) != 0) + splitFormats.Add(DatFormat.RedumpSpamSum); + if ((datFormat & DatFormat.RomCenter) != 0) + splitFormats.Add(DatFormat.RomCenter); + if ((datFormat & DatFormat.SabreJSON) != 0) + splitFormats.Add(DatFormat.SabreJSON); + if ((datFormat & DatFormat.SabreXML) != 0) + splitFormats.Add(DatFormat.SabreXML); + if ((datFormat & DatFormat.SoftwareList) != 0) + splitFormats.Add(DatFormat.SoftwareList); + if ((datFormat & DatFormat.SSV) != 0) + splitFormats.Add(DatFormat.SSV); + if ((datFormat & DatFormat.TSV) != 0) + splitFormats.Add(DatFormat.TSV); +#else + if (datFormat.HasFlag(DatFormat.ArchiveDotOrg)) + splitFormats.Add(DatFormat.ArchiveDotOrg); + if (datFormat.HasFlag(DatFormat.AttractMode)) + splitFormats.Add(DatFormat.AttractMode); + if (datFormat.HasFlag(DatFormat.ClrMamePro)) + splitFormats.Add(DatFormat.ClrMamePro); + if (datFormat.HasFlag(DatFormat.CSV)) + splitFormats.Add(DatFormat.CSV); + if (datFormat.HasFlag(DatFormat.DOSCenter)) + splitFormats.Add(DatFormat.DOSCenter); + if (datFormat.HasFlag(DatFormat.EverdriveSMDB)) + splitFormats.Add(DatFormat.EverdriveSMDB); + if (datFormat.HasFlag(DatFormat.Listrom)) + splitFormats.Add(DatFormat.Listrom); + if (datFormat.HasFlag(DatFormat.Listxml)) + splitFormats.Add(DatFormat.Listxml); + if (datFormat.HasFlag(DatFormat.Logiqx)) + splitFormats.Add(DatFormat.Logiqx); + if (datFormat.HasFlag(DatFormat.LogiqxDeprecated)) + splitFormats.Add(DatFormat.LogiqxDeprecated); + if (datFormat.HasFlag(DatFormat.MissFile)) + splitFormats.Add(DatFormat.MissFile); + if (datFormat.HasFlag(DatFormat.OfflineList)) + splitFormats.Add(DatFormat.OfflineList); + if (datFormat.HasFlag(DatFormat.OpenMSX)) + splitFormats.Add(DatFormat.OpenMSX); + if (datFormat.HasFlag(DatFormat.RedumpMD2)) + splitFormats.Add(DatFormat.RedumpMD2); + if (datFormat.HasFlag(DatFormat.RedumpMD4)) + splitFormats.Add(DatFormat.RedumpMD4); + if (datFormat.HasFlag(DatFormat.RedumpMD5)) + splitFormats.Add(DatFormat.RedumpMD5); + if (datFormat.HasFlag(DatFormat.RedumpRIPEMD128)) + splitFormats.Add(DatFormat.RedumpRIPEMD128); + if (datFormat.HasFlag(DatFormat.RedumpRIPEMD160)) + splitFormats.Add(DatFormat.RedumpRIPEMD160); + if (datFormat.HasFlag(DatFormat.RedumpSFV)) + splitFormats.Add(DatFormat.RedumpSFV); + if (datFormat.HasFlag(DatFormat.RedumpSHA1)) + splitFormats.Add(DatFormat.RedumpSHA1); + if (datFormat.HasFlag(DatFormat.RedumpSHA256)) + splitFormats.Add(DatFormat.RedumpSHA256); + if (datFormat.HasFlag(DatFormat.RedumpSHA384)) + splitFormats.Add(DatFormat.RedumpSHA384); + if (datFormat.HasFlag(DatFormat.RedumpSHA512)) + splitFormats.Add(DatFormat.RedumpSHA512); + if (datFormat.HasFlag(DatFormat.RedumpSpamSum)) + splitFormats.Add(DatFormat.RedumpSpamSum); + if (datFormat.HasFlag(DatFormat.RomCenter)) + splitFormats.Add(DatFormat.RomCenter); + if (datFormat.HasFlag(DatFormat.SabreJSON)) + splitFormats.Add(DatFormat.SabreJSON); + if (datFormat.HasFlag(DatFormat.SabreXML)) + splitFormats.Add(DatFormat.SabreXML); + if (datFormat.HasFlag(DatFormat.SoftwareList)) + splitFormats.Add(DatFormat.SoftwareList); + if (datFormat.HasFlag(DatFormat.SSV)) + splitFormats.Add(DatFormat.SSV); + if (datFormat.HasFlag(DatFormat.TSV)) + splitFormats.Add(DatFormat.TSV); +#endif + + return splitFormats; + } + } +}