diff --git a/SabreTools.Library/DatFiles/AttractMode.cs b/SabreTools.Library/DatFiles/AttractMode.cs index d8a00da4..8c1c0be7 100644 --- a/SabreTools.Library/DatFiles/AttractMode.cs +++ b/SabreTools.Library/DatFiles/AttractMode.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using SabreTools.Library.Data; @@ -23,7 +22,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of an AttractMode DAT /// - public class AttractMode : DatFile + internal class AttractMode : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/ClrMamePro.cs b/SabreTools.Library/DatFiles/ClrMamePro.cs index 37e17ba6..812c3c5d 100644 --- a/SabreTools.Library/DatFiles/ClrMamePro.cs +++ b/SabreTools.Library/DatFiles/ClrMamePro.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -24,7 +23,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a ClrMamePro DAT /// - public class ClrMamePro : DatFile + internal class ClrMamePro : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index ad9578b0..3cda6741 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -3065,7 +3065,7 @@ namespace SabreTools.Library.DatFiles new ClrMamePro(this).ParseFile(filename, sysid, srcid, keep, clean, remUnicode); break; case DatFormat.CSV: - new SeparatedValue(this).ParseFile(filename, sysid, srcid, ',', keep, clean, remUnicode); + new SeparatedValue(this, ',').ParseFile(filename, sysid, srcid, keep, clean, remUnicode); break; case DatFormat.DOSCenter: new DosCenter(this).ParseFile(filename, sysid, srcid, keep, clean, remUnicode); @@ -3107,7 +3107,7 @@ namespace SabreTools.Library.DatFiles new SoftwareList(this).ParseFile(filename, sysid, srcid, keep, clean, remUnicode); break; case DatFormat.TSV: - new SeparatedValue(this).ParseFile(filename, sysid, srcid, '\t', keep, clean, remUnicode); + new SeparatedValue(this, '\t').ParseFile(filename, sysid, srcid, keep, clean, remUnicode); break; default: return; @@ -5467,7 +5467,7 @@ namespace SabreTools.Library.DatFiles new ClrMamePro(this).WriteToFile(outfile, ignoreblanks); break; case DatFormat.CSV: - new SeparatedValue(this).WriteToFile(outfile, ',', ignoreblanks); + new SeparatedValue(this, ',').WriteToFile(outfile, ignoreblanks); break; case DatFormat.DOSCenter: new DosCenter(this).WriteToFile(outfile, ignoreblanks); @@ -5512,7 +5512,7 @@ namespace SabreTools.Library.DatFiles new SoftwareList(this).WriteToFile(outfile, ignoreblanks); break; case DatFormat.TSV: - new SeparatedValue(this).WriteToFile(outfile, '\t', ignoreblanks); + new SeparatedValue(this, '\t').WriteToFile(outfile, ignoreblanks); break; } } diff --git a/SabreTools.Library/DatFiles/DosCenter.cs b/SabreTools.Library/DatFiles/DosCenter.cs index 0b332283..20398b23 100644 --- a/SabreTools.Library/DatFiles/DosCenter.cs +++ b/SabreTools.Library/DatFiles/DosCenter.cs @@ -22,7 +22,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a DosCenter DAT /// - public class DosCenter : DatFile + internal class DosCenter : DatFile { /// /// Constructor designed for casting a base DatFile @@ -57,7 +57,7 @@ namespace SabreTools.Library.DatFiles bool remUnicode) { // ClrMamePro and DosCenter parsing are identical so it just calls one implementation - (this as DatFile as ClrMamePro).ParseFile(filename, sysid, srcid, keep, clean, remUnicode); + new ClrMamePro(this).ParseFile(filename, sysid, srcid, keep, clean, remUnicode); } diff --git a/SabreTools.Library/DatFiles/Hashfile.cs b/SabreTools.Library/DatFiles/Hashfile.cs index 7d4f151a..6810ed1b 100644 --- a/SabreTools.Library/DatFiles/Hashfile.cs +++ b/SabreTools.Library/DatFiles/Hashfile.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using SabreTools.Library.Data; @@ -23,7 +22,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a hashfile such as an SFV, MD5, or SHA-1 file /// - public class Hashfile : DatFile + internal class Hashfile : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/Listroms.cs b/SabreTools.Library/DatFiles/Listroms.cs index 89450d49..21659012 100644 --- a/SabreTools.Library/DatFiles/Listroms.cs +++ b/SabreTools.Library/DatFiles/Listroms.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using System.Text.RegularExpressions; @@ -24,7 +23,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a MAME Listroms DAT /// - public class Listroms : DatFile + internal class Listroms : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/Logiqx.cs b/SabreTools.Library/DatFiles/Logiqx.cs index 2fd675d4..6e9f5c6f 100644 --- a/SabreTools.Library/DatFiles/Logiqx.cs +++ b/SabreTools.Library/DatFiles/Logiqx.cs @@ -25,7 +25,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a Logiqx-derived DAT /// - public class Logiqx : DatFile + internal class Logiqx : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/Missfile.cs b/SabreTools.Library/DatFiles/Missfile.cs index 088bdbb7..d9f834c1 100644 --- a/SabreTools.Library/DatFiles/Missfile.cs +++ b/SabreTools.Library/DatFiles/Missfile.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using SabreTools.Library.Data; @@ -22,7 +21,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a Missfile /// - public class Missfile : DatFile + internal class Missfile : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/OfflineList.cs b/SabreTools.Library/DatFiles/OfflineList.cs index 5658dd96..3a347478 100644 --- a/SabreTools.Library/DatFiles/OfflineList.cs +++ b/SabreTools.Library/DatFiles/OfflineList.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using System.Web; @@ -23,7 +22,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of an OfflineList XML DAT /// - public class OfflineList : DatFile + internal class OfflineList : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/RomCenter.cs b/SabreTools.Library/DatFiles/RomCenter.cs index 4b156c7b..8c506f5b 100644 --- a/SabreTools.Library/DatFiles/RomCenter.cs +++ b/SabreTools.Library/DatFiles/RomCenter.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using System.Web; @@ -24,7 +23,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a RomCenter DAT /// - public class RomCenter : DatFile + internal class RomCenter : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/SabreDat.cs b/SabreTools.Library/DatFiles/SabreDat.cs index fc40dde7..e5f1dd19 100644 --- a/SabreTools.Library/DatFiles/SabreDat.cs +++ b/SabreTools.Library/DatFiles/SabreDat.cs @@ -23,7 +23,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of an SabreDat XML DAT /// - public class SabreDat : DatFile + internal class SabreDat : DatFile { /// /// Constructor designed for casting a base DatFile diff --git a/SabreTools.Library/DatFiles/SeparatedValue.cs b/SabreTools.Library/DatFiles/SeparatedValue.cs index c739a1ae..fc636372 100644 --- a/SabreTools.Library/DatFiles/SeparatedValue.cs +++ b/SabreTools.Library/DatFiles/SeparatedValue.cs @@ -21,18 +21,23 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of a value-separated DAT /// - public class SeparatedValue : DatFile + internal class SeparatedValue : DatFile { + // Private instance variables specific to Separated Value DATs + char _delim; + /// /// Constructor designed for casting a base DatFile /// /// Parent DatFile to copy from - public SeparatedValue(DatFile datFile) + /// Delimiter for parsing individual lines + public SeparatedValue(DatFile datFile, char delim) { this._datHeader = datFile._datHeader; this._items = datFile._items; this._sortedBy = datFile._sortedBy; this._datStats = datFile._datStats; + _delim = delim; } /// @@ -41,7 +46,6 @@ namespace SabreTools.Library.DatFiles /// Name of the file to be parsed /// System ID for the DAT /// Source ID for the DAT - /// Delimiter for parsing individual lines /// True if full pathnames are to be kept, false otherwise (default) /// True if game names are sanitized, false otherwise (default) /// True if we should remove non-ASCII characters from output, false otherwise (default) @@ -50,7 +54,6 @@ namespace SabreTools.Library.DatFiles string filename, int sysid, int srcid, - char delim, // Miscellaneous bool keep, @@ -73,7 +76,7 @@ namespace SabreTools.Library.DatFiles // Parse the first line, getting types from the column names if (linenum == 0) { - string[] parsedColumns = line.Split(delim); + string[] parsedColumns = line.Split(_delim); foreach (string parsed in parsedColumns) { switch (parsed.ToLowerInvariant().Trim('"')) @@ -163,7 +166,7 @@ namespace SabreTools.Library.DatFiles } // Otherwise, we want to split the line and parse - string[] parsedLine = line.Split(delim); + string[] parsedLine = line.Split(_delim); // If the line doesn't have the correct number of columns, we log and skip if (parsedLine.Length != columns.Count) @@ -369,10 +372,9 @@ namespace SabreTools.Library.DatFiles /// Create and open an output file for writing direct from a dictionary /// /// Name of the file to write to - /// Delimiter for parsing individual lines /// True if blank roms should be skipped on output, false otherwise (default) /// True if the DAT was written correctly, false otherwise - public bool WriteToFile(string outfile, char delim, bool ignoreblanks = false) + public bool WriteToFile(string outfile, bool ignoreblanks = false) { try { @@ -389,7 +391,7 @@ namespace SabreTools.Library.DatFiles StreamWriter sw = new StreamWriter(fs, new UTF8Encoding(false)); // Write out the header - WriteHeader(sw, delim); + WriteHeader(sw); // Get a properly sorted set of keys List keys = Keys; @@ -422,7 +424,7 @@ namespace SabreTools.Library.DatFiles } // Now, output the rom data - WriteDatItem(sw, delim, rom, ignoreblanks); + WriteDatItem(sw, rom, ignoreblanks); } } @@ -443,14 +445,13 @@ namespace SabreTools.Library.DatFiles /// Write out DAT header using the supplied StreamWriter /// /// StreamWriter to output to - /// Delimiter for parsing individual lines /// True if the data was written, false on error - private bool WriteHeader(StreamWriter sw, char delim) + private bool WriteHeader(StreamWriter sw) { try { string header = string.Format("\"File Name\"{0}\"Internal Name\"{0}\"Description\"{0}\"Game Name\"{0}\"Game Description\"{0}\"Type\"{0}\"" + - "Rom Name\"{0}\"Disk Name\"{0}\"Size\"{0}\"CRC\"{0}\"MD5\"{0}\"SHA1\"{0}\"SHA256\"{0}\"Nodump\"\n", delim); + "Rom Name\"{0}\"Disk Name\"{0}\"Size\"{0}\"CRC\"{0}\"MD5\"{0}\"SHA1\"{0}\"SHA256\"{0}\"Nodump\"\n", _delim); // Write the header out sw.Write(header); @@ -469,11 +470,10 @@ namespace SabreTools.Library.DatFiles /// Write out DatItem using the supplied StreamWriter /// /// StreamWriter to output to - /// Delimiter for parsing individual lines /// DatItem object to be output /// True if blank roms should be skipped on output, false otherwise (default) /// True if the data was written, false on error - private bool WriteDatItem(StreamWriter sw, char delim, DatItem rom, bool ignoreblanks = false) + private bool WriteDatItem(StreamWriter sw, DatItem rom, bool ignoreblanks = false) { // If we are in ignore blanks mode AND we have a blank (0-size) rom, skip if (ignoreblanks @@ -580,7 +580,7 @@ namespace SabreTools.Library.DatFiles + "{0}\"" + ((Rom)rom).SHA256 + "\"" // + "{0}\"" + ((Rom)rom).SHA384 + "\"" // + "{0}\"" + ((Rom)rom).SHA512 + "\"" - + "{0}" + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\""), delim); + + "{0}" + (((Rom)rom).ItemStatus != ItemStatus.None ? "\"" + ((Rom)rom).ItemStatus.ToString() + "\"" : "\"\""), _delim); state += pre + inline + post + "\n"; } else if (rom.Type == ItemType.Disk) @@ -600,7 +600,7 @@ namespace SabreTools.Library.DatFiles + "{0}\"" + ((Disk)rom).SHA256 + "\"" // + "{0}\"" + ((Rom)rom).SHA384 + "\"" // + "{0}\"" + ((Rom)rom).SHA512 + "\"" - + "{0}" + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\""), delim); + + "{0}" + (((Disk)rom).ItemStatus != ItemStatus.None ? "\"" + ((Disk)rom).ItemStatus.ToString() + "\"" : "\"\""), _delim); state += pre + inline + post + "\n"; } diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs index 86da98a0..0e345719 100644 --- a/SabreTools.Library/DatFiles/SoftwareList.cs +++ b/SabreTools.Library/DatFiles/SoftwareList.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using System.Web; @@ -23,7 +22,7 @@ namespace SabreTools.Library.DatFiles /// /// Represents parsing and writing of an SabreDat XML DAT /// - public class SoftwareList : DatFile + internal class SoftwareList : DatFile { /// /// Constructor designed for casting a base DatFile @@ -37,6 +36,7 @@ namespace SabreTools.Library.DatFiles this._datStats = datFile._datStats; } + /// /// Parse an SabreDat XML DAT and return all found games and roms within ///