Files
SabreTools/SabreTools.Library/Data/Flags.cs

327 lines
6.6 KiB
C#
Raw Normal View History

using System;
2017-05-04 02:41:11 -07:00
namespace SabreTools.Library.Data
{
#region DatFile related
/// <summary>
2018-10-12 15:08:07 -07:00
/// DAT output formats
/// </summary>
[Flags]
public enum DatFormat
{
2018-10-12 15:08:07 -07:00
#region XML Formats
/// <summary>
/// Logiqx XML (using machine)
/// </summary>
Logiqx = 1 << 0,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Logiqx XML (using game)
2018-10-12 15:08:07 -07:00
/// </summary>
LogiqxDeprecated = 1 << 1,
2018-10-12 15:08:07 -07:00
/// <summary>
/// MAME Softare List XML
/// </summary>
SoftwareList = 1 << 2,
2018-10-12 15:08:07 -07:00
/// <summary>
/// MAME Listxml output
/// </summary>
Listxml = 1 << 3,
2018-10-12 15:08:07 -07:00
/// <summary>
/// OfflineList XML
/// </summary>
OfflineList = 1 << 4,
2018-10-12 15:08:07 -07:00
/// <summary>
/// SabreDat XML
/// </summary>
SabreDat = 1 << 5,
2018-10-12 15:08:07 -07:00
/// <summary>
2020-06-11 11:44:46 -07:00
/// openMSX Software List XML
2018-10-12 15:08:07 -07:00
/// </summary>
OpenMSX = 1 << 6,
2018-10-12 15:08:07 -07:00
#endregion
#region Propietary Formats
/// <summary>
/// ClrMamePro custom
/// </summary>
ClrMamePro = 1 << 7,
2018-10-12 15:08:07 -07:00
/// <summary>
/// RomCetner INI-based
/// </summary>
RomCenter = 1 << 8,
2018-10-12 15:08:07 -07:00
/// <summary>
/// DOSCenter custom
/// </summary>
DOSCenter = 1 << 9,
2018-10-12 15:08:07 -07:00
/// <summary>
/// AttractMode custom
/// </summary>
AttractMode = 1 << 10,
2018-10-12 15:08:07 -07:00
#endregion
#region Standardized Text Formats
/// <summary>
/// ClrMamePro missfile
/// </summary>
MissFile = 1 << 11,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Comma-Separated Values (standardized)
/// </summary>
CSV = 1 << 12,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Semicolon-Separated Values (standardized)
/// </summary>
SSV = 1 << 13,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Tab-Separated Values (standardized)
/// </summary>
TSV = 1 << 14,
2018-10-12 15:08:07 -07:00
/// <summary>
/// MAME Listrom output
/// </summary>
Listrom = 1 << 15,
2018-10-12 15:08:07 -07:00
2019-02-08 15:31:44 -08:00
/// <summary>
/// Everdrive Packs SMDB
/// </summary>
EverdriveSMDB = 1 << 16,
2019-02-08 15:31:44 -08:00
2020-06-15 22:31:46 -07:00
/// <summary>
/// JSON
/// </summary>
Json = 1 << 17,
2020-06-15 22:31:46 -07:00
2018-10-12 15:08:07 -07:00
#endregion
#region SFV-similar Formats
/// <summary>
/// CRC32 hash list
/// </summary>
RedumpSFV = 1 << 18,
2018-10-12 15:08:07 -07:00
/// <summary>
/// MD5 hash list
/// </summary>
RedumpMD5 = 1 << 19,
2018-10-12 15:08:07 -07:00
#if NET_FRAMEWORK
2020-06-05 22:26:44 -07:00
/// <summary>
/// RIPEMD160 hash list
/// </summary>
2020-06-15 22:31:46 -07:00
RedumpRIPEMD160 = 1 << 20,
#endif
2020-06-05 22:26:44 -07:00
2018-10-12 15:08:07 -07:00
/// <summary>
/// SHA-1 hash list
/// </summary>
RedumpSHA1 = 1 << 21,
2018-10-12 15:08:07 -07:00
/// <summary>
/// SHA-256 hash list
/// </summary>
RedumpSHA256 = 1 << 22,
2018-10-12 15:08:07 -07:00
/// <summary>
/// SHA-384 hash list
/// </summary>
RedumpSHA384 = 1 << 23,
2018-10-12 15:08:07 -07:00
/// <summary>
/// SHA-512 hash list
/// </summary>
RedumpSHA512 = 1 << 24,
2018-10-12 15:08:07 -07:00
#endregion
// Specialty combinations
ALL = Int32.MaxValue,
}
/// <summary>
/// Available hashing types
/// </summary>
[Flags]
public enum Hash
{
CRC = 1 << 0,
MD5 = 1 << 1,
#if NET_FRAMEWORK
2020-06-06 13:53:31 -07:00
RIPEMD160 = 1 << 2,
#endif
SHA1 = 1 << 3,
SHA256 = 1 << 4,
SHA384 = 1 << 5,
SHA512 = 1 << 6,
2018-10-12 15:08:07 -07:00
// Special combinations
Standard = CRC | MD5 | SHA1,
#if NET_FRAMEWORK
DeepHashes = RIPEMD160 | SHA256 | SHA384 | SHA512,
SecureHashes = MD5 | RIPEMD160 | SHA1 | SHA256 | SHA384 | SHA512,
#else
DeepHashes = SHA256 | SHA384 | SHA512,
SecureHashes = MD5 | SHA1 | SHA256 | SHA384 | SHA512,
#endif
2018-10-12 15:08:07 -07:00
}
/// <summary>
/// Determine which format to output Stats to
/// </summary>
[Flags]
public enum StatReportFormat
{
/// <summary>
/// Only output to the console
/// </summary>
None = 0x00,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Console-formatted
/// </summary>
Textfile = 1 << 0,
2018-10-12 15:08:07 -07:00
/// <summary>
/// ClrMamePro HTML
/// </summary>
HTML = 1 << 1,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Comma-Separated Values (Standardized)
/// </summary>
CSV = 1 << 2,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Semicolon-Separated Values (Standardized)
/// </summary>
SSV = 1 << 3,
2018-10-12 15:08:07 -07:00
/// <summary>
/// Tab-Separated Values (Standardized)
/// </summary>
TSV = 1 << 4,
2018-10-12 15:08:07 -07:00
All = Int32.MaxValue,
}
/// <summary>
/// Determines how the DAT will be split on output
/// </summary>
[Flags]
public enum SplittingMode
{
None = 0x00,
2018-10-12 15:08:07 -07:00
Extension = 1 << 0,
Hash = 1 << 2,
Level = 1 << 3,
Type = 1 << 4,
Size = 1 << 5,
}
2018-10-12 15:08:07 -07:00
/// <summary>
/// Determines special update modes
/// </summary>
[Flags]
public enum UpdateMode
{
None = 0x00,
// Standard diffs
DiffDupesOnly = 1 << 0,
DiffNoDupesOnly = 1 << 1,
DiffIndividualsOnly = 1 << 2,
2018-10-12 15:08:07 -07:00
// Cascaded diffs
DiffCascade = 1 << 3,
DiffReverseCascade = 1 << 4,
2018-10-12 15:08:07 -07:00
// Base diffs
DiffAgainst = 1 << 5,
2020-08-01 14:15:04 -07:00
DiffGame = 1 << 6,
2018-10-12 15:08:07 -07:00
// Special update modes
2020-08-01 14:15:04 -07:00
Merge = 1 << 7,
BaseReplace = 1 << 8,
ReverseBaseReplace = 1 << 9,
2018-10-12 15:08:07 -07:00
// Combinations
AllDiffs = DiffDupesOnly | DiffNoDupesOnly | DiffIndividualsOnly,
}
#endregion
#region DatItem related
/// <summary>
/// Determines which type of duplicate a file is
/// </summary>
[Flags]
2018-10-12 15:08:07 -07:00
public enum DupeType
{
// Type of match
Hash = 1 << 0,
All = 1 << 1,
2018-10-12 15:08:07 -07:00
// Location of match
Internal = 1 << 2,
External = 1 << 3,
2018-10-12 15:08:07 -07:00
}
/// <summary>
/// Determine the status of the item
/// </summary>
[Flags]
public enum ItemStatus
{
/// <summary>
/// This is a fake flag that is used for filter only
/// </summary>
NULL = 0x00,
2018-10-12 15:08:07 -07:00
None = 1 << 0,
Good = 1 << 1,
BadDump = 1 << 2,
Nodump = 1 << 3,
Verified = 1 << 4,
2018-10-12 15:08:07 -07:00
}
/// <summary>
/// Determine what type of machine it is
/// </summary>
[Flags]
public enum MachineType
{
/// <summary>
/// This is a fake flag that is used for filter only
/// </summary>
NULL = 0x00,
2018-10-12 15:08:07 -07:00
None = 1 << 0,
Bios = 1 << 1,
Device = 1 << 2,
Mechanical = 1 << 3,
2018-10-12 15:08:07 -07:00
}
#endregion
}