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
///