Migrate IFileDeserializer implementation to base class

This commit is contained in:
Matt Nadareski
2024-04-04 01:38:08 -04:00
parent 7c21f65723
commit ef0efe66bd
41 changed files with 49 additions and 441 deletions

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class AACS :
BaseBinaryDeserializer<MediaKeyBlock>,
IFileDeserializer<MediaKeyBlock>,
IStreamDeserializer<MediaKeyBlock>
{
#region IFileDeserializer
/// <inheritdoc/>
public MediaKeyBlock? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,7 +10,6 @@ namespace SabreTools.Serialization.Deserializers
{
public class AttractMode :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region Constants
@@ -21,17 +20,6 @@ namespace SabreTools.Serialization.Deserializers
#endregion
#region IFileDeserializer
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class BDPlus :
BaseBinaryDeserializer<SVM>,
IFileDeserializer<SVM>,
IStreamDeserializer<SVM>
{
#region IFileDeserializer
/// <inheritdoc/>
public SVM? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class BFPK :
BaseBinaryDeserializer<Archive>,
IFileDeserializer<Archive>,
IStreamDeserializer<Archive>
{
#region IFileDeserializer
/// <inheritdoc/>
public Archive? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class BSP :
BaseBinaryDeserializer<Models.BSP.File>,
IFileDeserializer<Models.BSP.File>,
IStreamDeserializer<Models.BSP.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.BSP.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -12,8 +12,9 @@ namespace SabreTools.Serialization.Deserializers
/// </summary>
/// <typeparam name="TModel">Type of the model to deserialize</typeparam>
/// <remarks>These methods assume there is a concrete implementation of the deserialzier for the model available</remarks>
public abstract class BaseBinaryDeserializer<TModel>
: IByteDeserializer<TModel>
public abstract class BaseBinaryDeserializer<TModel> :
IByteDeserializer<TModel>,
IFileDeserializer<TModel>
{
#region IByteDeserializer
@@ -35,6 +36,17 @@ namespace SabreTools.Serialization.Deserializers
#endregion
#region IFileDeserializer
/// <inheritdoc/>
public virtual TModel? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region Static Implementations
/// <inheritdoc cref="IByteDeserializer.Deserialize(byte[]?, int)"/>

View File

@@ -11,20 +11,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class CFB :
BaseBinaryDeserializer<Binary>,
IFileDeserializer<Binary>,
IStreamDeserializer<Binary>
{
#region IFileDeserializer
/// <inheritdoc/>
public Binary? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class CIA :
BaseBinaryDeserializer<Models.N3DS.CIA>,
IFileDeserializer<Models.N3DS.CIA>,
IStreamDeserializer<Models.N3DS.CIA>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.N3DS.CIA? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,9 +10,39 @@ namespace SabreTools.Serialization.Deserializers
{
public class ClrMamePro :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region IByteDeserializer
/// <inheritdoc cref="IByteDeserializer.Deserialize(byte[]?, int)"/>
public static MetadataFile? DeserializeBytes(byte[]? data, int offset, bool quotes = true)
{
var deserializer = new ClrMamePro();
return deserializer.Deserialize(data, offset, quotes);
}
/// <inheritdoc/>
public override MetadataFile? Deserialize(byte[]? data, int offset)
=> Deserialize(data, offset, true);
/// <inheritdoc/>
public MetadataFile? Deserialize(byte[]? data, int offset, bool quotes)
{
// If the data is invalid
if (data == null)
return default;
// If the offset is out of bounds
if (offset < 0 || offset >= data.Length)
return default;
// Create a memory stream and parse that
var dataStream = new MemoryStream(data, offset, data.Length - offset);
return DeserializeStream(dataStream, quotes);
}
#endregion
#region IFileDeserializer
/// <inheritdoc cref="IFileDeserializer.Deserialize(string?)"/>
@@ -23,7 +53,7 @@ namespace SabreTools.Serialization.Deserializers
}
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
public override MetadataFile? Deserialize(string? path)
=> Deserialize(path, true);
/// <inheritdoc/>

View File

@@ -11,20 +11,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class CueSheet :
BaseBinaryDeserializer<Models.CueSheets.CueSheet>,
IFileDeserializer<Models.CueSheets.CueSheet>,
IStreamDeserializer<Models.CueSheets.CueSheet>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.CueSheets.CueSheet? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class DosCenter :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region IFileDeserializer
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class EverdriveSMDB :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region IFileDeserializer
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class GCF :
BaseBinaryDeserializer<Models.GCF.File>,
IFileDeserializer<Models.GCF.File>,
IStreamDeserializer<Models.GCF.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.GCF.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -54,7 +54,7 @@ namespace SabreTools.Serialization.Deserializers
}
/// <inheritdoc/>
public Models.Hashfile.Hashfile? Deserialize(string? path)
public override Models.Hashfile.Hashfile? Deserialize(string? path)
=> Deserialize(path, HashType.CRC32);
/// <inheritdoc/>

View File

@@ -7,20 +7,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class IRD :
BaseBinaryDeserializer<Models.IRD.File>,
IFileDeserializer<Models.IRD.File>,
IStreamDeserializer<Models.IRD.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.IRD.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -11,20 +11,8 @@ namespace SabreTools.Serialization.Deserializers
// TODO: Add multi-cabinet reading
public class InstallShieldCabinet :
BaseBinaryDeserializer<Cabinet>,
IFileDeserializer<Cabinet>,
IStreamDeserializer<Cabinet>
{
#region IFileDeserializer
/// <inheritdoc/>
public Cabinet? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -11,7 +11,6 @@ namespace SabreTools.Serialization.Deserializers
/// <typeparam name="T"></typeparam>
public class JsonFile<T> :
BaseBinaryDeserializer<T>,
IFileDeserializer<T>,
IStreamDeserializer<T>
{
#region IByteDeserializer
@@ -48,7 +47,7 @@ namespace SabreTools.Serialization.Deserializers
#region IFileDeserializer
/// <inheritdoc/>
public virtual T? Deserialize(string? path)
public override T? Deserialize(string? path)
=> Deserialize(path, new UTF8Encoding(false));
/// <summary>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class LinearExecutable :
BaseBinaryDeserializer<Executable>,
IFileDeserializer<Executable>,
IStreamDeserializer<Executable>
{
#region IFileDeserializer
/// <inheritdoc/>
public Executable? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class Listrom :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region IFileDeserializer
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class MSDOS :
BaseBinaryDeserializer<Executable>,
IFileDeserializer<Executable>,
IStreamDeserializer<Executable>
{
#region IFileDeserializer
/// <inheritdoc/>
public Executable? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
// TODO: Add multi-cabinet reading
public class MicrosoftCabinet :
BaseBinaryDeserializer<Cabinet>,
IFileDeserializer<Cabinet>,
IStreamDeserializer<Cabinet>
{
#region IFileDeserializer
/// <inheritdoc/>
public Cabinet? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -11,20 +11,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class MoPaQ :
BaseBinaryDeserializer<Archive>,
IFileDeserializer<Archive>,
IStreamDeserializer<Archive>
{
#region IFileDeserializer
/// <inheritdoc/>
public Archive? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class N3DS :
BaseBinaryDeserializer<Cart>,
IFileDeserializer<Cart>,
IStreamDeserializer<Cart>
{
#region IFileDeserializer
/// <inheritdoc/>
public Cart? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class NCF :
BaseBinaryDeserializer<Models.NCF.File>,
IFileDeserializer<Models.NCF.File>,
IStreamDeserializer<Models.NCF.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.NCF.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -11,20 +11,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class NewExecutable :
BaseBinaryDeserializer<Executable>,
IFileDeserializer<Executable>,
IStreamDeserializer<Executable>
{
#region IFileDeserializer
/// <inheritdoc/>
public Executable? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class Nitro :
BaseBinaryDeserializer<Cart>,
IFileDeserializer<Cart>,
IStreamDeserializer<Cart>
{
#region IFileDeserializer
/// <inheritdoc/>
public Cart? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PAK :
BaseBinaryDeserializer<Models.PAK.File>,
IFileDeserializer<Models.PAK.File>,
IStreamDeserializer<Models.PAK.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.PAK.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PFF :
BaseBinaryDeserializer<Archive>,
IFileDeserializer<Archive>,
IStreamDeserializer<Archive>
{
#region IFileDeserializer
/// <inheritdoc/>
public Archive? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PIC :
BaseBinaryDeserializer<DiscInformation>,
IFileDeserializer<DiscInformation>,
IStreamDeserializer<DiscInformation>
{
#region IFileDeserializer
/// <inheritdoc/>
public DiscInformation? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PlayJAudio :
BaseBinaryDeserializer<AudioFile>,
IFileDeserializer<AudioFile>,
IStreamDeserializer<AudioFile>
{
#region IFileDeserializer
/// <inheritdoc/>
public AudioFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc cref="IStreamDeserializer.Deserialize(Stream?)"/>

View File

@@ -7,20 +7,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PlayJPlaylist :
BaseBinaryDeserializer<Playlist>,
IFileDeserializer<Playlist>,
IStreamDeserializer<Playlist>
{
#region IFileDeserializer
/// <inheritdoc/>
public Playlist? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -12,20 +12,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class PortableExecutable :
BaseBinaryDeserializer<Executable>,
IFileDeserializer<Executable>,
IStreamDeserializer<Executable>
{
#region IFileDeserializer
/// <inheritdoc/>
public Executable? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class Quantum :
BaseBinaryDeserializer<Archive>,
IFileDeserializer<Archive>,
IStreamDeserializer<Archive>
{
#region IFileDeserializer
/// <inheritdoc/>
public Archive? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class RomCenter :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region IFileDeserializer
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class SGA :
BaseBinaryDeserializer<Models.SGA.File>,
IFileDeserializer<Models.SGA.File>,
IStreamDeserializer<Models.SGA.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.SGA.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,7 +10,6 @@ namespace SabreTools.Serialization.Deserializers
{
public class SeparatedValue :
BaseBinaryDeserializer<MetadataFile>,
IFileDeserializer<MetadataFile>,
IStreamDeserializer<MetadataFile>
{
#region Constants
@@ -62,7 +61,7 @@ namespace SabreTools.Serialization.Deserializers
}
/// <inheritdoc/>
public MetadataFile? Deserialize(string? path)
public override MetadataFile? Deserialize(string? path)
=> Deserialize(path, ',');
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class VBSP :
BaseBinaryDeserializer<Models.VBSP.File>,
IFileDeserializer<Models.VBSP.File>,
IStreamDeserializer<Models.VBSP.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.VBSP.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -10,20 +10,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class VPK :
BaseBinaryDeserializer<Models.VPK.File>,
IFileDeserializer<Models.VPK.File>,
IStreamDeserializer<Models.VPK.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.VPK.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class WAD :
BaseBinaryDeserializer<Models.WAD.File>,
IFileDeserializer<Models.WAD.File>,
IStreamDeserializer<Models.WAD.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.WAD.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -9,20 +9,8 @@ namespace SabreTools.Serialization.Deserializers
{
public class XZP :
BaseBinaryDeserializer<Models.XZP.File>,
IFileDeserializer<Models.XZP.File>,
IStreamDeserializer<Models.XZP.File>
{
#region IFileDeserializer
/// <inheritdoc/>
public Models.XZP.File? Deserialize(string? path)
{
using var stream = PathProcessor.OpenStream(path);
return DeserializeStream(stream);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>

View File

@@ -12,20 +12,8 @@ namespace SabreTools.Serialization.Deserializers
/// <typeparam name="T"></typeparam>
public class XmlFile<T> :
BaseBinaryDeserializer<T>,
IFileDeserializer<T>,
IStreamDeserializer<T>
{
#region IFileDeserializer
/// <inheritdoc/>
public T? Deserialize(string? path)
{
using var data = PathProcessor.OpenStream(path);
return Deserialize(data);
}
#endregion
#region IStreamDeserializer
/// <inheritdoc/>