using System.Collections.Generic; using System.Linq; namespace SabreTools.Serialization { /// /// Serializer for EverdriveSMDB models to internal structure /// public partial class Internal { #region Serialize /// /// Convert from to /// public static Models.Internal.Machine ConvertMachineFromEverdriveSMDB(Models.EverdriveSMDB.Row item) { var machine = new Models.Internal.Machine { [Models.Internal.Machine.RomKey] = ConvertFromEverdriveSMDB(item), }; return machine; } /// /// Convert from to /// public static Models.Internal.Rom ConvertFromEverdriveSMDB(Models.EverdriveSMDB.Row item) { var rom = new Models.Internal.Rom { [Models.Internal.Rom.SHA256Key] = item.SHA256, [Models.Internal.Rom.NameKey] = item.Name, [Models.Internal.Rom.SHA1Key] = item.SHA1, [Models.Internal.Rom.MD5Key] = item.MD5, [Models.Internal.Rom.CRCKey] = item.CRC32, [Models.Internal.Rom.SizeKey] = item.Size, }; return rom; } #endregion #region Deserialize /// /// Convert from to an array of /// public static Models.EverdriveSMDB.Row[]? ConvertMachineToEverdriveSMDB(Models.Internal.Machine item) { if (item == null) return null; var roms = item.Read(Models.Internal.Machine.RomKey); return roms?.Select(ConvertToEverdriveSMDB)?.ToArray(); } /// /// Convert from to /// public static Models.EverdriveSMDB.Row? ConvertToEverdriveSMDB(Models.Internal.Rom? item) { if (item == null) return null; var row = new Models.EverdriveSMDB.Row { SHA256 = item.ReadString(Models.Internal.Rom.SHA256Key), Name = item.ReadString(Models.Internal.Rom.NameKey), SHA1 = item.ReadString(Models.Internal.Rom.SHA1Key), MD5 = item.ReadString(Models.Internal.Rom.MD5Key), CRC32 = item.ReadString(Models.Internal.Rom.CRCKey), Size = item.ReadString(Models.Internal.Rom.SizeKey), }; return row; } #endregion } }