From de59a91bef32547559ae7645fe43b142afd3b8d5 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Thu, 20 Apr 2023 22:11:45 -0400 Subject: [PATCH] Reorganize filters based on other changes --- SabreTools.Filtering/DatItemFilter.cs | 2154 ++++++++++++------------- SabreTools.Filtering/MachineFilter.cs | 566 +++---- 2 files changed, 1233 insertions(+), 1487 deletions(-) diff --git a/SabreTools.Filtering/DatItemFilter.cs b/SabreTools.Filtering/DatItemFilter.cs index 9f763710..c5bf4a63 100644 --- a/SabreTools.Filtering/DatItemFilter.cs +++ b/SabreTools.Filtering/DatItemFilter.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; - using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.DatItems; @@ -15,209 +14,135 @@ namespace SabreTools.Filtering { #region Fields - #region Common + #region Filters - public FilterItem Type { get; private set; } = new FilterItem(); - - #endregion - - #region Item-Specific - - #region Actionable - - // Rom - public FilterItem Name { get; private set; } = new FilterItem(); + public FilterItem AltName { get; private set; } = new FilterItem(); + public FilterItem AltTitle { get; private set; } = new FilterItem(); + public FilterItem Analog_Mask { get; private set; } = new FilterItem(); + public FilterItem ArchiveDotOrgFormat { get; private set; } = new FilterItem(); + public FilterItem ArchiveDotOrgSource { get; private set; } = new FilterItem(); + public FilterItem AreaEndianness { get; private set; } = new FilterItem() { Positive = Endianness.NULL, Negative = Endianness.NULL }; + public FilterItem AreaName { get; private set; } = new FilterItem(); + public FilterItem AreaSize { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem AreaWidth { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; public FilterItem Bios { get; private set; } = new FilterItem(); - public FilterItem Size { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Boot { get; private set; } = new FilterItem(); + public FilterItem Categories { get; private set; } = new FilterItem(); + public FilterItem Channels { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem ChipType { get; private set; } = new FilterItem() { Positive = Core.ChipType.NULL, Negative = Core.ChipType.NULL }; + public FilterItem Clock { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Clone { get; private set; } = new FilterItem(); + public FilterItem CocktailStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; + public FilterItem Coins { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Complete { get; private set; } = new FilterItem(); + public FilterItem Condition_Mask { get; private set; } = new FilterItem(); + public FilterItem Condition_Relation { get; private set; } = new FilterItem() { Positive = Core.Relation.NULL, Negative = Core.Relation.NULL }; + public FilterItem Condition_Tag { get; private set; } = new FilterItem(); + public FilterItem Condition_Value { get; private set; } = new FilterItem(); + public FilterItem Content { get; private set; } = new FilterItem(); + public FilterItem Control_Buttons { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_KeyDelta { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_Maximum { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_Minimum { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_Player { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_ReqButtons { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_Reverse { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Control_Sensitivity { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Control_Type { get; private set; } = new FilterItem() { Positive = ControlType.NULL, Negative = ControlType.NULL }; + public FilterItem Control_Ways { get; private set; } = new FilterItem(); + public FilterItem Control_Ways2 { get; private set; } = new FilterItem(); + public FilterItem Control_Ways3 { get; private set; } = new FilterItem(); public FilterItem CRC { get; private set; } = new FilterItem(); + public FilterItem Date { get; private set; } = new FilterItem(); + public FilterItem Default { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Description { get; private set; } = new FilterItem(); + public FilterItem DeviceType { get; private set; } = new FilterItem() { Positive = Core.DeviceType.NULL, Negative = Core.DeviceType.NULL }; + public FilterItem DevStatus { get; private set; } = new FilterItem(); + public FilterItem DisplayType { get; private set; } = new FilterItem() { Positive = Core.DisplayType.NULL, Negative = Core.DisplayType.NULL }; + public FilterItem EmulationStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; + public FilterItem Extension_Name { get; private set; } = new FilterItem(); + public FilterItem FeatureOverall { get; private set; } = new FilterItem() { Positive = Core.FeatureStatus.NULL, Negative = Core.FeatureStatus.NULL }; + public FilterItem FeatureStatus { get; private set; } = new FilterItem() { Positive = Core.FeatureStatus.NULL, Negative = Core.FeatureStatus.NULL }; + public FilterItem FeatureType { get; private set; } = new FilterItem() { Positive = Core.FeatureType.NULL, Negative = Core.FeatureType.NULL }; + public FilterItem Filter { get; private set; } = new FilterItem(); + public FilterItem FixedImage { get; private set; } = new FilterItem(); + public FilterItem FlipX { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem HBEnd { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem HBStart { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Height { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem HTotal { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Incomplete { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Index { get; private set; } = new FilterItem(); + public FilterItem Instance_BriefName { get; private set; } = new FilterItem(); + public FilterItem Instance_Name { get; private set; } = new FilterItem(); + public FilterItem Interface { get; private set; } = new FilterItem(); + public FilterItem Inverted { get; private set; } = new FilterItem(); + public FilterItem Language { get; private set; } = new FilterItem(); + public FilterItem Languages { get; private set; } = new FilterItem(); + public FilterItem LoadFlag { get; private set; } = new FilterItem() { Positive = Core.LoadFlag.NULL, Negative = Core.LoadFlag.NULL }; + public FilterItem Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Location_Name { get; private set; } = new FilterItem(); + public FilterItem Location_Number { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Mandatory { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Mask { get; private set; } = new FilterItem(); public FilterItem MD5 { get; private set; } = new FilterItem(); + public FilterItem Merge { get; private set; } = new FilterItem(); + public FilterItem MIA { get; private set; } = new FilterItem(); + public FilterItem Name { get; private set; } = new FilterItem(); + public FilterItem NoSoundHardware { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Number { get; private set; } = new FilterItem(); + public FilterItem Offset { get; private set; } = new FilterItem(); + public FilterItem OpenMSXSubType { get; private set; } = new FilterItem() { Positive = Core.OpenMSXSubType.NULL, Negative = Core.OpenMSXSubType.NULL }; + public FilterItem OpenMSXType { get; private set; } = new FilterItem(); + public FilterItem Optional { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Original { get; private set; } = new FilterItem(); + public FilterItem OriginalFilename { get; private set; } = new FilterItem(); + public FilterItem Part_Feature_Name { get; private set; } = new FilterItem(); + public FilterItem Part_Feature_Value { get; private set; } = new FilterItem(); + public FilterItem Part_Interface { get; private set; } = new FilterItem(); + public FilterItem Part_Name { get; private set; } = new FilterItem(); + public FilterItem PixClock { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Physical { get; private set; } = new FilterItem(); + public FilterItem Players { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Refresh { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Region { get; private set; } = new FilterItem(); + public FilterItem RegParent { get; private set; } = new FilterItem(); + public FilterItem Relation { get; private set; } = new FilterItem() { Positive = Core.Relation.NULL, Negative = Core.Relation.NULL }; + public FilterItem Remark { get; private set; } = new FilterItem(); + public FilterItem RequiresArtwork { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Rotate { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Rotation { get; private set; } = new FilterItem(); + public FilterItem SaveStateStatus { get; private set; } = new FilterItem() { Positive = Supported.NULL, Negative = Supported.NULL }; + public FilterItem Service { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Setting_Name { get; private set; } = new FilterItem(); + public FilterItem Setting_Value { get; private set; } = new FilterItem(); public FilterItem SHA1 { get; private set; } = new FilterItem(); public FilterItem SHA256 { get; private set; } = new FilterItem(); public FilterItem SHA384 { get; private set; } = new FilterItem(); public FilterItem SHA512 { get; private set; } = new FilterItem(); + public FilterItem Size { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem SlotOption_Default { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem SlotOption_DeviceName { get; private set; } = new FilterItem(); + public FilterItem SlotOption_Name { get; private set; } = new FilterItem(); + public FilterItem SoftwareListStatus { get; private set; } = new FilterItem() { Positive = Core.SoftwareListStatus.None, Negative = Core.SoftwareListStatus.None }; public FilterItem SpamSum { get; private set; } = new FilterItem(); - public FilterItem Merge { get; private set; } = new FilterItem(); - public FilterItem Region { get; private set; } = new FilterItem(); - public FilterItem Offset { get; private set; } = new FilterItem(); - public FilterItem Date { get; private set; } = new FilterItem(); public FilterItem Status { get; private set; } = new FilterItem() { Positive = ItemStatus.NULL, Negative = ItemStatus.NULL }; - public FilterItem Optional { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Inverted { get; private set; } = new FilterItem(); - - // Rom (Archive.org) - public FilterItem ArchiveDotOrgSource { get; private set; } = new FilterItem(); - public FilterItem ArchiveDotOrgFormat { get; private set; } = new FilterItem(); - public FilterItem OriginalFilename { get; private set; } = new FilterItem(); - public FilterItem Rotation { get; private set; } = new FilterItem(); public FilterItem Summation { get; private set; } = new FilterItem(); - - // Rom (AttractMode) - public FilterItem AltName { get; private set; } = new FilterItem(); - public FilterItem AltTitle { get; private set; } = new FilterItem(); - - // Rom (Logiqx) - public FilterItem MIA { get; private set; } = new FilterItem(); - - // Rom (OpenMSX) - public FilterItem Original { get; private set; } = new FilterItem(); - public FilterItem OpenMSXSubType { get; private set; } = new FilterItem() { Positive = Core.OpenMSXSubType.NULL, Negative = Core.OpenMSXSubType.NULL }; - public FilterItem OpenMSXType { get; private set; } = new FilterItem(); - public FilterItem Remark { get; private set; } = new FilterItem(); - public FilterItem Boot { get; private set; } = new FilterItem(); - - // Rom (SoftwareList) - public FilterItem LoadFlag { get; private set; } = new FilterItem() { Positive = Core.LoadFlag.NULL, Negative = Core.LoadFlag.NULL }; + public FilterItem SupportStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; + public FilterItem Tag { get; private set; } = new FilterItem(); + public FilterItem Tilt { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Type { get; private set; } = new FilterItem(); + public FilterItem Unofficial { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem Value { get; private set; } = new FilterItem(); - - // Disk - public FilterItem Index { get; private set; } = new FilterItem(); + public FilterItem VBEnd { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem VBStart { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem VTotal { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; + public FilterItem Width { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; public FilterItem Writable { get; private set; } = new FilterItem() { Neutral = null }; #endregion - #region Auxiliary - - // Adjuster - public FilterItem Default { get; private set; } = new FilterItem() { Neutral = null }; - - // Analog - public FilterItem Analog_Mask { get; private set; } = new FilterItem(); - - // Archive - public FilterItem Number { get; private set; } = new FilterItem(); - public FilterItem Clone { get; private set; } = new FilterItem(); - public FilterItem RegParent { get; private set; } = new FilterItem(); - public FilterItem Languages { get; private set; } = new FilterItem(); - public FilterItem DevStatus { get; private set; } = new FilterItem(); - public FilterItem Physical { get; private set; } = new FilterItem(); - public FilterItem Complete { get; private set; } = new FilterItem(); - public FilterItem Categories { get; private set; } = new FilterItem(); - - // BiosSet - public FilterItem Description { get; private set; } = new FilterItem(); - - // Chip - public FilterItem Tag { get; private set; } = new FilterItem(); - public FilterItem ChipType { get; private set; } = new FilterItem() { Positive = Core.ChipType.NULL, Negative = Core.ChipType.NULL }; - public FilterItem Clock { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - - // Condition - public FilterItem Mask { get; private set; } = new FilterItem(); - public FilterItem Relation { get; private set; } = new FilterItem() { Positive = Core.Relation.NULL, Negative = Core.Relation.NULL }; - public FilterItem Condition_Tag { get; private set; } = new FilterItem(); - public FilterItem Condition_Mask { get; private set; } = new FilterItem(); - public FilterItem Condition_Relation { get; private set; } = new FilterItem() { Positive = Core.Relation.NULL, Negative = Core.Relation.NULL }; - public FilterItem Condition_Value { get; private set; } = new FilterItem(); - - // Control - public FilterItem Control_Type { get; private set; } = new FilterItem() { Positive = ControlType.NULL, Negative = ControlType.NULL }; - public FilterItem Control_Player { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_Buttons { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_ReqButtons { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_Minimum { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_Maximum { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_Sensitivity { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_KeyDelta { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Control_Reverse { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Control_Ways { get; private set; } = new FilterItem(); - public FilterItem Control_Ways2 { get; private set; } = new FilterItem(); - public FilterItem Control_Ways3 { get; private set; } = new FilterItem(); - - // DataArea - public FilterItem AreaName { get; private set; } = new FilterItem(); - public FilterItem AreaSize { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem AreaWidth { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem AreaEndianness { get; private set; } = new FilterItem() { Positive = Endianness.NULL, Negative = Endianness.NULL }; - - // Device - public FilterItem DeviceType { get; private set; } = new FilterItem() { Positive = Core.DeviceType.NULL, Negative = Core.DeviceType.NULL }; - public FilterItem FixedImage { get; private set; } = new FilterItem(); - public FilterItem Mandatory { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Interface { get; private set; } = new FilterItem(); - - // Display - public FilterItem DisplayType { get; private set; } = new FilterItem() { Positive = Core.DisplayType.NULL, Negative = Core.DisplayType.NULL }; - public FilterItem Rotate { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem FlipX { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Width { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Height { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Refresh { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem PixClock { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem HTotal { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem HBEnd { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem HBStart { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem VTotal { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem VBEnd { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem VBStart { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - - // Driver - public FilterItem SupportStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; - public FilterItem EmulationStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; - public FilterItem CocktailStatus { get; private set; } = new FilterItem() { Positive = Core.SupportStatus.NULL, Negative = Core.SupportStatus.NULL }; - public FilterItem SaveStateStatus { get; private set; } = new FilterItem() { Positive = Supported.NULL, Negative = Supported.NULL }; - public FilterItem RequiresArtwork { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Unofficial { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem NoSoundHardware { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Incomplete { get; private set; } = new FilterItem() { Neutral = null }; - - // Extension - public FilterItem Extension_Name { get; private set; } = new FilterItem(); - - // Feature - public FilterItem FeatureType { get; private set; } = new FilterItem() { Positive = Core.FeatureType.NULL, Negative = Core.FeatureType.NULL }; - public FilterItem FeatureStatus { get; private set; } = new FilterItem() { Positive = Core.FeatureStatus.NULL, Negative = Core.FeatureStatus.NULL }; - public FilterItem FeatureOverall { get; private set; } = new FilterItem() { Positive = Core.FeatureStatus.NULL, Negative = Core.FeatureStatus.NULL }; - - // Input - public FilterItem Service { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Tilt { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Players { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Coins { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - - // Instance - public FilterItem Instance_Name { get; private set; } = new FilterItem(); - public FilterItem Instance_BriefName { get; private set; } = new FilterItem(); - - // Location - public FilterItem Location_Name { get; private set; } = new FilterItem(); - public FilterItem Location_Number { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - public FilterItem Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; - - // Part - public FilterItem Part_Name { get; private set; } = new FilterItem(); - public FilterItem Part_Interface { get; private set; } = new FilterItem(); - - // PartFeature - public FilterItem Part_Feature_Name { get; private set; } = new FilterItem(); - public FilterItem Part_Feature_Value { get; private set; } = new FilterItem(); - - // RamOption - public FilterItem Content { get; private set; } = new FilterItem(); - - // Release - public FilterItem Language { get; private set; } = new FilterItem(); - - // Setting - public FilterItem Setting_Name { get; private set; } = new FilterItem(); - public FilterItem Setting_Value { get; private set; } = new FilterItem(); - public FilterItem Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; - - // SlotOption - public FilterItem SlotOption_Name { get; private set; } = new FilterItem(); - public FilterItem SlotOption_DeviceName { get; private set; } = new FilterItem(); - public FilterItem SlotOption_Default { get; private set; } = new FilterItem() { Neutral = null }; - - // SoftwareList - public FilterItem SoftwareListStatus { get; private set; } = new FilterItem() { Positive = Core.SoftwareListStatus.None, Negative = Core.SoftwareListStatus.None }; - public FilterItem Filter { get; private set; } = new FilterItem(); - - // Sound - public FilterItem Channels { get; private set; } = new FilterItem() { Positive = null, Negative = null, Neutral = null }; - - #endregion - - #endregion // Item-Specific - /// /// Determines if any filters have been set /// @@ -263,42 +188,456 @@ namespace SabreTools.Filtering { switch (key) { - #region Common - - case DatItemField.Type: - if (value.AsItemType() == ItemType.NULL) - return; - - SetStringFilter(Type, value, negate); + case DatItemField.AltName: + SetStringFilter(AltName, value, negate); break; - #endregion + case DatItemField.AltTitle: + SetStringFilter(AltTitle, value, negate); + break; - #region Item-Specific + case DatItemField.Analog_Mask: + SetStringFilter(Analog_Mask, value, negate); + break; - #region Actionable + case DatItemField.ArchiveDotOrgFormat: + SetStringFilter(ArchiveDotOrgFormat, value, negate); + break; - // Rom - case DatItemField.Name: - SetStringFilter(Name, value, negate); + case DatItemField.ArchiveDotOrgSource: + SetStringFilter(ArchiveDotOrgSource, value, negate); + break; + + case DatItemField.AreaEndianness: + if (negate) + AreaEndianness.Negative |= value.AsEndianness(); + else + AreaEndianness.Positive |= value.AsEndianness(); + break; + + case DatItemField.AreaName: + SetStringFilter(AreaName, value, negate); + break; + + case DatItemField.AreaSize: + SetLongFilter(AreaSize, value, negate); + break; + + case DatItemField.AreaWidth: + SetLongFilter(AreaWidth, value, negate); break; case DatItemField.Bios: SetStringFilter(Bios, value, negate); break; - case DatItemField.Size: - SetLongFilter(Size, value, negate); + case DatItemField.Boot: + SetStringFilter(Boot, value, negate); + break; + + case DatItemField.Categories: + SetStringFilter(Categories, value, negate); + break; + + case DatItemField.Channels: + SetLongFilter(Channels, value, negate); + break; + + case DatItemField.ChipType: + if (negate) + ChipType.Negative |= value.AsChipType(); + else + ChipType.Positive |= value.AsChipType(); + break; + + case DatItemField.Clock: + SetLongFilter(Clock, value, negate); + break; + + case DatItemField.Clone: + SetStringFilter(Clone, value, negate); + break; + + case DatItemField.CocktailStatus: + if (negate) + CocktailStatus.Negative |= value.AsSupportStatus(); + else + CocktailStatus.Positive |= value.AsSupportStatus(); + break; + + case DatItemField.Coins: + SetLongFilter(Coins, value, negate); + break; + + case DatItemField.Complete: + SetStringFilter(Complete, value, negate); + break; + + case DatItemField.Condition_Mask: + SetStringFilter(Condition_Mask, value, negate); + break; + + case DatItemField.Condition_Relation: + if (negate) + Condition_Relation.Negative |= value.AsRelation(); + else + Condition_Relation.Positive |= value.AsRelation(); + break; + + case DatItemField.Condition_Tag: + SetStringFilter(Condition_Tag, value, negate); + break; + + case DatItemField.Condition_Value: + SetStringFilter(Condition_Value, value, negate); + break; + + case DatItemField.Content: + SetStringFilter(Content, value, negate); + break; + + case DatItemField.Control_Buttons: + SetLongFilter(Control_Buttons, value, negate); + break; + + case DatItemField.Control_KeyDelta: + SetLongFilter(Control_KeyDelta, value, negate); + break; + + case DatItemField.Control_Player: + SetLongFilter(Control_Player, value, negate); + break; + + case DatItemField.Control_Maximum: + SetLongFilter(Control_Maximum, value, negate); + break; + + case DatItemField.Control_Minimum: + SetLongFilter(Control_Minimum, value, negate); + break; + + case DatItemField.Control_RequiredButtons: + SetLongFilter(Control_ReqButtons, value, negate); + break; + + case DatItemField.Control_Reverse: + SetBooleanFilter(Control_Reverse, value, negate); + break; + + case DatItemField.Control_Sensitivity: + SetLongFilter(Control_Sensitivity, value, negate); + break; + + case DatItemField.Control_Type: + + if (negate) + Control_Type.Negative |= value.AsControlType(); + else + Control_Type.Positive |= value.AsControlType(); + break; + + case DatItemField.Control_Ways: + SetStringFilter(Control_Ways, value, negate); + break; + + case DatItemField.Control_Ways2: + SetStringFilter(Control_Ways2, value, negate); + break; + + case DatItemField.Control_Ways3: + SetStringFilter(Control_Ways3, value, negate); break; case DatItemField.CRC: SetStringFilter(CRC, value, negate); break; + case DatItemField.Date: + SetStringFilter(Date, value, negate); + break; + + case DatItemField.Default: + SetBooleanFilter(Default, value, negate); + break; + + case DatItemField.Description: + SetStringFilter(Description, value, negate); + break; + + case DatItemField.DeviceType: + if (negate) + DeviceType.Negative |= value.AsDeviceType(); + else + DeviceType.Positive |= value.AsDeviceType(); + break; + + case DatItemField.DevStatus: + SetStringFilter(DevStatus, value, negate); + break; + + case DatItemField.DisplayType: + if (negate) + DisplayType.Negative |= value.AsDisplayType(); + else + DisplayType.Positive |= value.AsDisplayType(); + break; + + case DatItemField.EmulationStatus: + if (negate) + EmulationStatus.Negative |= value.AsSupportStatus(); + else + EmulationStatus.Positive |= value.AsSupportStatus(); + break; + + case DatItemField.Extension_Name: + SetStringFilter(Extension_Name, value, negate); + break; + + case DatItemField.FeatureOverall: + if (negate) + FeatureOverall.Negative |= value.AsFeatureStatus(); + else + FeatureOverall.Positive |= value.AsFeatureStatus(); + break; + + case DatItemField.FeatureStatus: + if (negate) + FeatureStatus.Negative |= value.AsFeatureStatus(); + else + FeatureStatus.Positive |= value.AsFeatureStatus(); + break; + + case DatItemField.FeatureType: + if (negate) + FeatureType.Negative |= value.AsFeatureType(); + else + FeatureType.Positive |= value.AsFeatureType(); + break; + + case DatItemField.Filter: + SetStringFilter(Filter, value, negate); + break; + + case DatItemField.FixedImage: + SetStringFilter(FixedImage, value, negate); + break; + + case DatItemField.FlipX: + SetBooleanFilter(FlipX, value, negate); + break; + + case DatItemField.HBEnd: + SetLongFilter(HBEnd, value, negate); + break; + + case DatItemField.HBStart: + SetLongFilter(HBStart, value, negate); + break; + + case DatItemField.Height: + SetLongFilter(Height, value, negate); + break; + + case DatItemField.HTotal: + SetLongFilter(HTotal, value, negate); + break; + + case DatItemField.Incomplete: + SetBooleanFilter(Incomplete, value, negate); + break; + + case DatItemField.Index: + SetStringFilter(Index, value, negate); + break; + + case DatItemField.Instance_BriefName: + SetStringFilter(Instance_BriefName, value, negate); + break; + + case DatItemField.Instance_Name: + SetStringFilter(Instance_Name, value, negate); + break; + + case DatItemField.Interface: + SetStringFilter(Interface, value, negate); + break; + + case DatItemField.Inverted: + SetBooleanFilter(Inverted, value, negate); + break; + + case DatItemField.Language: + SetStringFilter(Language, value, negate); + break; + + case DatItemField.Languages: + SetStringFilter(Languages, value, negate); + break; + + case DatItemField.LoadFlag: + if (negate) + LoadFlag.Negative |= value.AsLoadFlag(); + else + LoadFlag.Positive |= value.AsLoadFlag(); + break; + + case DatItemField.Location_Inverted: + SetBooleanFilter(Location_Inverted, value, negate); + break; + + case DatItemField.Location_Name: + SetStringFilter(Location_Name, value, negate); + break; + + case DatItemField.Location_Number: + SetLongFilter(Location_Number, value, negate); + break; + + case DatItemField.Mandatory: + SetLongFilter(Mandatory, value, negate); + break; + + case DatItemField.Mask: + SetStringFilter(Mask, value, negate); + break; + case DatItemField.MD5: SetStringFilter(MD5, value, negate); break; + case DatItemField.Merge: + SetStringFilter(Merge, value, negate); + break; + + case DatItemField.MIA: + SetBooleanFilter(MIA, value, negate); + break; + + case DatItemField.Name: + SetStringFilter(Name, value, negate); + break; + + case DatItemField.NoSoundHardware: + SetBooleanFilter(NoSoundHardware, value, negate); + break; + + case DatItemField.Number: + SetStringFilter(Number, value, negate); + break; + + case DatItemField.Offset: + SetStringFilter(Offset, value, negate); + break; + + case DatItemField.OpenMSXSubType: + if (negate) + OpenMSXSubType.Negative |= value.AsOpenMSXSubType(); + else + OpenMSXSubType.Positive |= value.AsOpenMSXSubType(); + break; + + case DatItemField.OpenMSXType: + SetStringFilter(OpenMSXType, value, negate); + break; + + case DatItemField.Optional: + SetBooleanFilter(Optional, value, negate); + break; + + case DatItemField.Original: + SetStringFilter(Original, value, negate); + break; + + case DatItemField.OriginalFilename: + SetStringFilter(OriginalFilename, value, negate); + break; + + case DatItemField.Part_Feature_Name: + SetStringFilter(Part_Feature_Name, value, negate); + break; + + case DatItemField.Part_Feature_Value: + SetStringFilter(Part_Feature_Value, value, negate); + break; + + case DatItemField.Part_Interface: + SetStringFilter(Part_Interface, value, negate); + break; + + case DatItemField.Part_Name: + SetStringFilter(Part_Name, value, negate); + break; + + case DatItemField.Physical: + SetStringFilter(Physical, value, negate); + break; + + case DatItemField.PixClock: + SetLongFilter(PixClock, value, negate); + break; + + case DatItemField.Players: + SetLongFilter(Players, value, negate); + break; + + case DatItemField.Refresh: + SetDoubleFilter(Refresh, value, negate); + break; + + case DatItemField.Region: + SetStringFilter(Region, value, negate); + break; + + case DatItemField.RegParent: + SetStringFilter(RegParent, value, negate); + break; + + case DatItemField.Relation: + if (negate) + Relation.Negative |= value.AsRelation(); + else + Relation.Positive |= value.AsRelation(); + break; + + case DatItemField.Remark: + SetStringFilter(Remark, value, negate); + break; + + case DatItemField.RequiresArtwork: + SetBooleanFilter(RequiresArtwork, value, negate); + break; + + case DatItemField.Rotate: + SetLongFilter(Rotate, value, negate); + break; + + case DatItemField.Rotation: + SetStringFilter(Rotation, value, negate); + break; + + case DatItemField.SaveStateStatus: + if (negate) + SaveStateStatus.Negative |= value.AsSupported(); + else + SaveStateStatus.Positive |= value.AsSupported(); + break; + + case DatItemField.Service: + SetBooleanFilter(Service, value, negate); + break; + + case DatItemField.Setting_Default: + SetBooleanFilter(Setting_Default, value, negate); + break; + + case DatItemField.Setting_Name: + SetStringFilter(Setting_Name, value, negate); + break; + + case DatItemField.Setting_Value: + SetStringFilter(Setting_Value, value, negate); + break; + case DatItemField.SHA1: SetStringFilter(SHA1, value, negate); break; @@ -315,26 +654,33 @@ namespace SabreTools.Filtering SetStringFilter(SHA512, value, negate); break; + case DatItemField.Size: + SetLongFilter(Size, value, negate); + break; + + case DatItemField.SlotOption_Default: + SetBooleanFilter(SlotOption_Default, value, negate); + break; + + case DatItemField.SlotOption_DeviceName: + SetStringFilter(SlotOption_DeviceName, value, negate); + break; + + case DatItemField.SlotOption_Name: + SetStringFilter(SlotOption_Name, value, negate); + break; + + case DatItemField.SoftwareListStatus: + if (negate) + SoftwareListStatus.Negative |= value.AsSoftwareListStatus(); + else + SoftwareListStatus.Positive |= value.AsSoftwareListStatus(); + break; + case DatItemField.SpamSum: SetStringFilter(SpamSum, value, negate); break; - case DatItemField.Merge: - SetStringFilter(Merge, value, negate); - break; - - case DatItemField.Region: - SetStringFilter(Region, value, negate); - break; - - case DatItemField.Offset: - SetStringFilter(Offset, value, negate); - break; - - case DatItemField.Date: - SetStringFilter(Date, value, negate); - break; - case DatItemField.Status: if (negate) Status.Negative |= value.AsItemStatus(); @@ -342,332 +688,38 @@ namespace SabreTools.Filtering Status.Positive |= value.AsItemStatus(); break; - case DatItemField.Optional: - SetBooleanFilter(Optional, value, negate); - break; - - case DatItemField.Inverted: - SetBooleanFilter(Inverted, value, negate); - break; - - // Rom (Archive.org) - case DatItemField.ArchiveDotOrgSource: - SetStringFilter(ArchiveDotOrgSource, value, negate); - break; - - case DatItemField.ArchiveDotOrgFormat: - SetStringFilter(ArchiveDotOrgFormat, value, negate); - break; - - case DatItemField.OriginalFilename: - SetStringFilter(OriginalFilename, value, negate); - break; - - case DatItemField.Rotation: - SetStringFilter(Rotation, value, negate); - break; - case DatItemField.Summation: SetStringFilter(Summation, value, negate); break; - // Rom (AttractMode) - case DatItemField.AltName: - SetStringFilter(AltName, value, negate); - break; - - case DatItemField.AltTitle: - SetStringFilter(AltTitle, value, negate); - break; - - // Rom (Logiqx) - case DatItemField.MIA: - SetBooleanFilter(MIA, value, negate); - break; - - // Rom (OpenMSX) - case DatItemField.Original: - SetStringFilter(Original, value, negate); - break; - - case DatItemField.OpenMSXSubType: + case DatItemField.SupportStatus: if (negate) - OpenMSXSubType.Negative |= value.AsOpenMSXSubType(); + SupportStatus.Negative |= value.AsSupportStatus(); else - OpenMSXSubType.Positive |= value.AsOpenMSXSubType(); + SupportStatus.Positive |= value.AsSupportStatus(); break; - case DatItemField.OpenMSXType: - SetStringFilter(OpenMSXType, value, negate); - break; - - case DatItemField.Remark: - SetStringFilter(Remark, value, negate); - break; - - case DatItemField.Boot: - SetStringFilter(Boot, value, negate); - break; - - // Rom (SoftwareList) - case DatItemField.LoadFlag: - if (negate) - LoadFlag.Negative |= value.AsLoadFlag(); - else - LoadFlag.Positive |= value.AsLoadFlag(); - break; - - case DatItemField.Value: - SetStringFilter(Value, value, negate); - break; - - // Disk - case DatItemField.Index: - SetStringFilter(Index, value, negate); - break; - - case DatItemField.Writable: - SetBooleanFilter(Writable, value, negate); - break; - - #endregion - - #region Auxiliary - - // Adjuster - case DatItemField.Default: - SetBooleanFilter(Default, value, negate); - break; - - // Analog - case DatItemField.Analog_Mask: - SetStringFilter(Analog_Mask, value, negate); - break; - - // Archive - case DatItemField.Number: - SetStringFilter(Number, value, negate); - break; - - case DatItemField.Clone: - SetStringFilter(Clone, value, negate); - break; - - case DatItemField.RegParent: - SetStringFilter(RegParent, value, negate); - break; - - case DatItemField.Languages: - SetStringFilter(Languages, value, negate); - break; - - case DatItemField.DevStatus: - SetStringFilter(DevStatus, value, negate); - break; - - case DatItemField.Physical: - SetStringFilter(Physical, value, negate); - break; - - case DatItemField.Complete: - SetStringFilter(Complete, value, negate); - break; - - case DatItemField.Categories: - SetStringFilter(Categories, value, negate); - break; - - // BiosSet - case DatItemField.Description: - SetStringFilter(Description, value, negate); - break; - - // Chip case DatItemField.Tag: SetStringFilter(Tag, value, negate); break; - case DatItemField.ChipType: - if (negate) - ChipType.Negative |= value.AsChipType(); - else - ChipType.Positive |= value.AsChipType(); + case DatItemField.Tilt: + SetBooleanFilter(Tilt, value, negate); break; - case DatItemField.Clock: - SetLongFilter(Clock, value, negate); + case DatItemField.Type: + if (value.AsItemType() == ItemType.NULL) + return; + + SetStringFilter(Type, value, negate); break; - // Condition - case DatItemField.Mask: - SetStringFilter(Mask, value, negate); + case DatItemField.Unofficial: + SetBooleanFilter(Unofficial, value, negate); break; - case DatItemField.Relation: - if (negate) - Relation.Negative |= value.AsRelation(); - else - Relation.Positive |= value.AsRelation(); - break; - - case DatItemField.Condition_Tag: - SetStringFilter(Condition_Tag, value, negate); - break; - - case DatItemField.Condition_Mask: - SetStringFilter(Condition_Mask, value, negate); - break; - - case DatItemField.Condition_Relation: - if (negate) - Condition_Relation.Negative |= value.AsRelation(); - else - Condition_Relation.Positive |= value.AsRelation(); - break; - - case DatItemField.Condition_Value: - SetStringFilter(Condition_Value, value, negate); - break; - - // Control - case DatItemField.Control_Type: - - if (negate) - Control_Type.Negative |= value.AsControlType(); - else - Control_Type.Positive |= value.AsControlType(); - break; - - case DatItemField.Control_Player: - SetLongFilter(Control_Player, value, negate); - break; - - case DatItemField.Control_Buttons: - SetLongFilter(Control_Buttons, value, negate); - break; - - case DatItemField.Control_RequiredButtons: - SetLongFilter(Control_ReqButtons, value, negate); - break; - - case DatItemField.Control_Minimum: - SetLongFilter(Control_Minimum, value, negate); - break; - - case DatItemField.Control_Maximum: - SetLongFilter(Control_Maximum, value, negate); - break; - - case DatItemField.Control_Sensitivity: - SetLongFilter(Control_Sensitivity, value, negate); - break; - - case DatItemField.Control_KeyDelta: - SetLongFilter(Control_KeyDelta, value, negate); - break; - - case DatItemField.Control_Reverse: - SetBooleanFilter(Control_Reverse, value, negate); - break; - - case DatItemField.Control_Ways: - SetStringFilter(Control_Ways, value, negate); - break; - - case DatItemField.Control_Ways2: - SetStringFilter(Control_Ways2, value, negate); - break; - - case DatItemField.Control_Ways3: - SetStringFilter(Control_Ways3, value, negate); - break; - - // DataArea - case DatItemField.AreaName: - SetStringFilter(AreaName, value, negate); - break; - - case DatItemField.AreaSize: - SetLongFilter(AreaSize, value, negate); - break; - - case DatItemField.AreaWidth: - SetLongFilter(AreaWidth, value, negate); - break; - - case DatItemField.AreaEndianness: - if (negate) - AreaEndianness.Negative |= value.AsEndianness(); - else - AreaEndianness.Positive |= value.AsEndianness(); - break; - - // Device - case DatItemField.DeviceType: - if (negate) - DeviceType.Negative |= value.AsDeviceType(); - else - DeviceType.Positive |= value.AsDeviceType(); - break; - - case DatItemField.FixedImage: - SetStringFilter(FixedImage, value, negate); - break; - - case DatItemField.Mandatory: - SetLongFilter(Mandatory, value, negate); - break; - - case DatItemField.Interface: - SetStringFilter(Interface, value, negate); - break; - - // Display - case DatItemField.DisplayType: - if (negate) - DisplayType.Negative |= value.AsDisplayType(); - else - DisplayType.Positive |= value.AsDisplayType(); - break; - - case DatItemField.Rotate: - SetLongFilter(Rotate, value, negate); - break; - - case DatItemField.FlipX: - SetBooleanFilter(FlipX, value, negate); - break; - - case DatItemField.Width: - SetLongFilter(Width, value, negate); - break; - - case DatItemField.Height: - SetLongFilter(Height, value, negate); - break; - - case DatItemField.Refresh: - SetDoubleFilter(Refresh, value, negate); - break; - - case DatItemField.PixClock: - SetLongFilter(PixClock, value, negate); - break; - - case DatItemField.HTotal: - SetLongFilter(HTotal, value, negate); - break; - - case DatItemField.HBEnd: - SetLongFilter(HBEnd, value, negate); - break; - - case DatItemField.HBStart: - SetLongFilter(HBStart, value, negate); - break; - - case DatItemField.VTotal: - SetLongFilter(VTotal, value, negate); + case DatItemField.Value: + SetStringFilter(Value, value, negate); break; case DatItemField.VBEnd: @@ -678,196 +730,22 @@ namespace SabreTools.Filtering SetLongFilter(VBStart, value, negate); break; - // Driver - case DatItemField.SupportStatus: - if (negate) - SupportStatus.Negative |= value.AsSupportStatus(); - else - SupportStatus.Positive |= value.AsSupportStatus(); + case DatItemField.VTotal: + SetLongFilter(VTotal, value, negate); break; - case DatItemField.EmulationStatus: - if (negate) - EmulationStatus.Negative |= value.AsSupportStatus(); - else - EmulationStatus.Positive |= value.AsSupportStatus(); + case DatItemField.Width: + SetLongFilter(Width, value, negate); break; - case DatItemField.CocktailStatus: - if (negate) - CocktailStatus.Negative |= value.AsSupportStatus(); - else - CocktailStatus.Positive |= value.AsSupportStatus(); + case DatItemField.Writable: + SetBooleanFilter(Writable, value, negate); break; - - case DatItemField.SaveStateStatus: - if (negate) - SaveStateStatus.Negative |= value.AsSupported(); - else - SaveStateStatus.Positive |= value.AsSupported(); - break; - - case DatItemField.RequiresArtwork: - SetBooleanFilter(RequiresArtwork, value, negate); - break; - - case DatItemField.Unofficial: - SetBooleanFilter(Unofficial, value, negate); - break; - - case DatItemField.NoSoundHardware: - SetBooleanFilter(NoSoundHardware, value, negate); - break; - - case DatItemField.Incomplete: - SetBooleanFilter(Incomplete, value, negate); - break; - - // Extension - case DatItemField.Extension_Name: - SetStringFilter(Extension_Name, value, negate); - break; - - // Feature - case DatItemField.FeatureType: - if (negate) - FeatureType.Negative |= value.AsFeatureType(); - else - FeatureType.Positive |= value.AsFeatureType(); - break; - - case DatItemField.FeatureStatus: - if (negate) - FeatureStatus.Negative |= value.AsFeatureStatus(); - else - FeatureStatus.Positive |= value.AsFeatureStatus(); - break; - - case DatItemField.FeatureOverall: - if (negate) - FeatureOverall.Negative |= value.AsFeatureStatus(); - else - FeatureOverall.Positive |= value.AsFeatureStatus(); - break; - - // Input - case DatItemField.Service: - SetBooleanFilter(Service, value, negate); - break; - - case DatItemField.Tilt: - SetBooleanFilter(Tilt, value, negate); - break; - - case DatItemField.Players: - SetLongFilter(Players, value, negate); - break; - - case DatItemField.Coins: - SetLongFilter(Coins, value, negate); - break; - - // Instance - case DatItemField.Instance_Name: - SetStringFilter(Instance_Name, value, negate); - break; - - case DatItemField.Instance_BriefName: - SetStringFilter(Instance_BriefName, value, negate); - break; - - // Location - case DatItemField.Location_Name: - SetStringFilter(Location_Name, value, negate); - break; - - case DatItemField.Location_Number: - SetLongFilter(Location_Number, value, negate); - break; - - case DatItemField.Location_Inverted: - SetBooleanFilter(Location_Inverted, value, negate); - break; - - // Part - case DatItemField.Part_Name: - SetStringFilter(Part_Name, value, negate); - break; - - case DatItemField.Part_Interface: - SetStringFilter(Part_Interface, value, negate); - break; - - // PartFeature - case DatItemField.Part_Feature_Name: - SetStringFilter(Part_Feature_Name, value, negate); - break; - - case DatItemField.Part_Feature_Value: - SetStringFilter(Part_Feature_Value, value, negate); - break; - - // RamOption - case DatItemField.Content: - SetStringFilter(Content, value, negate); - break; - - // Release - case DatItemField.Language: - SetStringFilter(Language, value, negate); - break; - - // Setting - case DatItemField.Setting_Name: - SetStringFilter(Setting_Name, value, negate); - break; - - case DatItemField.Setting_Value: - SetStringFilter(Setting_Value, value, negate); - break; - - case DatItemField.Setting_Default: - SetBooleanFilter(Setting_Default, value, negate); - break; - - // SlotOption - case DatItemField.SlotOption_Name: - SetStringFilter(SlotOption_Name, value, negate); - break; - - case DatItemField.SlotOption_DeviceName: - SetStringFilter(SlotOption_DeviceName, value, negate); - break; - - case DatItemField.SlotOption_Default: - SetBooleanFilter(SlotOption_Default, value, negate); - break; - - // SoftwareList - case DatItemField.SoftwareListStatus: - if (negate) - SoftwareListStatus.Negative |= value.AsSoftwareListStatus(); - else - SoftwareListStatus.Positive |= value.AsSoftwareListStatus(); - break; - - case DatItemField.Filter: - SetStringFilter(Filter, value, negate); - break; - - // Sound - case DatItemField.Channels: - SetLongFilter(Channels, value, negate); - break; - - #endregion - - #endregion // Item-Specific } } - + #endregion - + #region Running /// @@ -895,7 +773,7 @@ namespace SabreTools.Filtering } #endregion - + #region Item-Specific return datItem switch @@ -947,7 +825,7 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Adjuster adjuster) { - // Filter on default + // DatItem_Default if (!PassBoolFilter(Default, adjuster.Default)) return false; @@ -971,7 +849,7 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Analog analog) { - // Filter on mask + // DatItem_Analog_Mask if (!PassStringFilter(Analog_Mask, analog.Mask)) return false; @@ -985,40 +863,40 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Archive archive) { - // Filter on number - if (!PassStringFilter(Number, archive.Number)) + // DatItem_Categories + if (!PassStringFilter(Categories, archive.Categories)) return false; - // Filter on clone + // DatItem_Clone if (!PassStringFilter(Clone, archive.CloneValue)) return false; - // Filter on regional parent - if (!PassStringFilter(RegParent, archive.RegParent)) - return false; - - // Filter on region - if (!PassStringFilter(Region, archive.Region)) - return false; - - // Filter on languages - if (!PassStringFilter(Languages, archive.Languages)) - return false; - - // Filter on dev status - if (!PassStringFilter(DevStatus, archive.DevStatus)) - return false; - - // Filter on physical - if (!PassStringFilter(Physical, archive.Physical)) - return false; - - // Filter on complete + // DatItem_Complete if (!PassStringFilter(Complete, archive.Complete)) return false; - // Filter on categories - if (!PassStringFilter(Categories, archive.Categories)) + // DatItem_DevStatus + if (!PassStringFilter(DevStatus, archive.DevStatus)) + return false; + + // DatItem_Languages + if (!PassStringFilter(Languages, archive.Languages)) + return false; + + // DatItem_Number + if (!PassStringFilter(Number, archive.Number)) + return false; + + // DatItem_Physical + if (!PassStringFilter(Physical, archive.Physical)) + return false; + + // DatItem_Region + if (!PassStringFilter(Region, archive.Region)) + return false; + + // DatItem_RegParent + if (!PassStringFilter(RegParent, archive.RegParent)) return false; return true; @@ -1031,12 +909,12 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(BiosSet biosSet) { - // Filter on description - if (!PassStringFilter(Description, biosSet.Description)) + // DatItem_Default + if (!PassBoolFilter(Default, biosSet.Default)) return false; - // Filter on default - if (!PassBoolFilter(Default, biosSet.Default)) + // DatItem_Description + if (!PassStringFilter(Description, biosSet.Description)) return false; return true; @@ -1049,10 +927,6 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Chip chip) { - // Filter on tag - if (!PassStringFilter(Tag, chip.Tag)) - return false; - // DatItem_ChipType if (ChipType.MatchesPositive(Core.ChipType.NULL, chip.ChipType) == false) return false; @@ -1063,6 +937,10 @@ namespace SabreTools.Filtering if (!PassLongFilter(Clock, chip.Clock)) return false; + // DatItem_Tag + if (!PassStringFilter(Tag, chip.Tag)) + return false; + return true; } @@ -1076,41 +954,41 @@ namespace SabreTools.Filtering { if (sub) { - // Filter on tag - if (!PassStringFilter(Condition_Tag, condition.Tag)) - return false; - - // Filter on mask + // DatItem_Condition_Mask if (!PassStringFilter(Condition_Mask, condition.Mask)) return false; - // Filter on relation + // DatItem_Condition_Relation if (Condition_Relation.MatchesPositive(Core.Relation.NULL, condition.Relation) == false) return false; if (Condition_Relation.MatchesNegative(Core.Relation.NULL, condition.Relation) == true) return false; - // Filter on value + // DatItem_Condition_Tag + if (!PassStringFilter(Condition_Tag, condition.Tag)) + return false; + + // DatItem_Condition_Value if (!PassStringFilter(Condition_Value, condition.Value)) return false; } else { - // Filter on tag - if (!PassStringFilter(Tag, condition.Tag)) - return false; - - // Filter on mask + // DatItem_Mask if (!PassStringFilter(Mask, condition.Mask)) return false; - // Filter on relation + // DatItem_Relation if (Relation.MatchesPositive(Core.Relation.NULL, condition.Relation) == false) return false; if (Relation.MatchesNegative(Core.Relation.NULL, condition.Relation) == true) return false; - // Filter on value + // DatItem_Tag + if (!PassStringFilter(Tag, condition.Tag)) + return false; + + // DatItem_Value if (!PassStringFilter(Value, condition.Value)) return false; } @@ -1125,12 +1003,12 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Configuration configuration) { - // Filter on tag - if (!PassStringFilter(Tag, configuration.Tag)) + // DatItem_Mask + if (!PassStringFilter(Mask, configuration.Mask)) return false; - // Filter on mask - if (!PassStringFilter(Mask, configuration.Mask)) + // DatItem_Tag + if (!PassStringFilter(Tag, configuration.Tag)) return false; // Filter on individual conditions @@ -1153,7 +1031,7 @@ namespace SabreTools.Filtering } } - // Filter on individual conditions + // Filter on individual settings if (configuration.SettingsSpecified) { foreach (Setting subSetting in configuration.Settings) @@ -1173,53 +1051,53 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Control control) { - // Filter on control type + // DatItem_Control_Buttons + if (!PassLongFilter(Control_Buttons, control.Buttons)) + return false; + + // DatItem_Control_KeyDelta + if (!PassLongFilter(Control_KeyDelta, control.KeyDelta)) + return false; + + // DatItem_Control_Maximum + if (!PassLongFilter(Control_Maximum, control.Maximum)) + return false; + + // DatItem_Control_Minimum + if (!PassLongFilter(Control_Minimum, control.Minimum)) + return false; + + // DatItem_Control_Player + if (!PassLongFilter(Control_Player, control.Player)) + return false; + + // DatItem_Control_ReqButtons + if (!PassLongFilter(Control_ReqButtons, control.RequiredButtons)) + return false; + + // DatItem_Control_Reverse + if (!PassBoolFilter(Control_Reverse, control.Reverse)) + return false; + + // DatItem_Control_Sensitivity + if (!PassLongFilter(Control_Sensitivity, control.Sensitivity)) + return false; + + // DatItem_Control_Type if (Control_Type.MatchesPositive(ControlType.NULL, control.ControlType) == false) return false; if (Control_Type.MatchesNegative(ControlType.NULL, control.ControlType) == true) return false; - // Filter on player - if (!PassLongFilter(Control_Player, control.Player)) - return false; - - // Filter on buttons - if (!PassLongFilter(Control_Buttons, control.Buttons)) - return false; - - // Filter on reqbuttons - if (!PassLongFilter(Control_ReqButtons, control.RequiredButtons)) - return false; - - // Filter on minimum - if (!PassLongFilter(Control_Minimum, control.Minimum)) - return false; - - // Filter on maximum - if (!PassLongFilter(Control_Maximum, control.Maximum)) - return false; - - // Filter on sensitivity - if (!PassLongFilter(Control_Sensitivity, control.Sensitivity)) - return false; - - // Filter on keydelta - if (!PassLongFilter(Control_KeyDelta, control.KeyDelta)) - return false; - - // Filter on reverse - if (!PassBoolFilter(Control_Reverse, control.Reverse)) - return false; - - // Filter on ways + // DatItem_Control_Ways if (!PassStringFilter(Control_Ways, control.Ways)) return false; - // Filter on ways2 + // DatItem_Control_Ways2 if (!PassStringFilter(Control_Ways2, control.Ways2)) return false; - // Filter on ways3 + // DatItem_Control_Ways3 if (!PassStringFilter(Control_Ways3, control.Ways3)) return false; @@ -1233,24 +1111,24 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(DataArea dataArea) { - // Filter on area name - if (!PassStringFilter(AreaName, dataArea.Name)) - return false; - - // Filter on area size - if (!PassLongFilter(AreaSize, dataArea.Size)) - return false; - - // Filter on area width - if (!PassLongFilter(AreaWidth, dataArea.Width)) - return false; - - // Filter on area endianness + // DatItem_AreaEndianness if (AreaEndianness.MatchesPositive(Endianness.NULL, dataArea.Endianness) == false) return false; if (AreaEndianness.MatchesNegative(Endianness.NULL, dataArea.Endianness) == true) return false; - + + // DatItem_AreaName + if (!PassStringFilter(AreaName, dataArea.Name)) + return false; + + // DatItem_AreaSize + if (!PassLongFilter(AreaSize, dataArea.Size)) + return false; + + // DatItem_AreaWidth + if (!PassLongFilter(AreaWidth, dataArea.Width)) + return false; + return true; } @@ -1261,28 +1139,38 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Device device) { - // Filter on device type + // DatItem_DeviceType if (DeviceType.MatchesPositive(Core.DeviceType.NULL, device.DeviceType) == false) return false; if (DeviceType.MatchesNegative(Core.DeviceType.NULL, device.DeviceType) == true) return false; - // Filter on tag - if (!PassStringFilter(Tag, device.Tag)) - return false; - - // Filter on fixed image + // DatItem_FixedImage if (!PassStringFilter(FixedImage, device.FixedImage)) return false; - // Filter on mandatory + // DatItem_Interface + if (!PassStringFilter(Interface, device.Interface)) + return false; + + // DatItem_Mandatory if (!PassLongFilter(Mandatory, device.Mandatory)) return false; - // Filter on interface - if (!PassStringFilter(Interface, device.Interface)) + // DatItem_Tag + if (!PassStringFilter(Tag, device.Tag)) return false; + // Filter on individual extensions + if (device.ExtensionsSpecified) + { + foreach (Extension subExtension in device.Extensions) + { + if (!PassesFilters(subExtension)) + return false; + } + } + // Filter on individual instances if (device.InstancesSpecified) { @@ -1293,16 +1181,6 @@ namespace SabreTools.Filtering } } - // Filter on individual extensions - if (device.ExtensionsSpecified) - { - foreach (Extension subExtension in device.Extensions) - { - if (!PassesFilters(subExtension)) - return false; - } - } - return true; } @@ -1313,14 +1191,12 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(DipSwitch dipSwitch) { - #region Common - - // Filter on tag - if (!PassStringFilter(Tag, dipSwitch.Tag)) + // DatItem_Mask + if (!PassStringFilter(Mask, dipSwitch.Mask)) return false; - // Filter on mask - if (!PassStringFilter(Mask, dipSwitch.Mask)) + // DatItem_Tag + if (!PassStringFilter(Tag, dipSwitch.Tag)) return false; // Filter on individual conditions @@ -1343,7 +1219,7 @@ namespace SabreTools.Filtering } } - // Filter on individual conditions + // Filter on individual values if (dipSwitch.ValuesSpecified) { foreach (Setting subValue in dipSwitch.Values) @@ -1353,10 +1229,6 @@ namespace SabreTools.Filtering } } - #endregion - - #region SoftwareList - // Filter on Part if (dipSwitch.PartSpecified) { @@ -1364,8 +1236,6 @@ namespace SabreTools.Filtering return false; } - #endregion - return true; } @@ -1376,46 +1246,40 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Disk disk) { - #region Common - - // Filter on MD5 - if (!PassStringFilter(MD5, disk.MD5)) - return false; - - // Filter on SHA-1 - if (!PassStringFilter(SHA1, disk.SHA1)) - return false; - - // Filter on merge tag - if (!PassStringFilter(Merge, disk.MergeTag)) - return false; - - // Filter on region - if (!PassStringFilter(Region, disk.Region)) - return false; - - // Filter on index + // DatItem_Index if (!PassStringFilter(Index, disk.Index)) return false; - // Filter on writable - if (!PassBoolFilter(Writable, disk.Writable)) + // DatItem_MD5 + if (!PassStringFilter(MD5, disk.MD5)) return false; - // Filter on status + // DatItem_Merge + if (!PassStringFilter(Merge, disk.MergeTag)) + return false; + + // DatItem_Optional + if (!PassBoolFilter(Optional, disk.Optional)) + return false; + + // DatItem_Region + if (!PassStringFilter(Region, disk.Region)) + return false; + + // DatItem_SHA1 + if (!PassStringFilter(SHA1, disk.SHA1)) + return false; + + // DatItem_Status if (Status.MatchesPositive(ItemStatus.NULL, disk.ItemStatus) == false) return false; if (Status.MatchesNegative(ItemStatus.NULL, disk.ItemStatus) == true) return false; - // Filter on optional - if (!PassBoolFilter(Optional, disk.Optional)) + // DatItem_Writable + if (!PassBoolFilter(Writable, disk.Writable)) return false; - #endregion - - #region SoftwareList - // Filter on DiskArea if (disk.DiskAreaSpecified) { @@ -1430,8 +1294,6 @@ namespace SabreTools.Filtering return false; } - #endregion - return true; } @@ -1442,10 +1304,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(DiskArea diskArea) { - // Filter on area name + // DatItem_AreaName if (!PassStringFilter(AreaName, diskArea.Name)) return false; - + return true; } @@ -1456,64 +1318,64 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Display display) { - // Filter on tag - if (!PassStringFilter(Tag, display.Tag)) - return false; - - // Filter on display type + // DatItem_DisplayType if (DisplayType.MatchesPositive(Core.DisplayType.NULL, display.DisplayType) == false) return false; if (DisplayType.MatchesNegative(Core.DisplayType.NULL, display.DisplayType) == true) return false; - // Filter on rotation - if (!PassLongFilter(Rotate, display.Rotate)) - return false; - - // Filter on flipx + // DatItem_FlipX if (!PassBoolFilter(FlipX, display.FlipX)) return false; - // Filter on width - if (!PassLongFilter(Width, display.Width)) - return false; - - // Filter on height - if (!PassLongFilter(Height, display.Height)) - return false; - - // Filter on refresh - if (!PassDoubleFilter(Refresh, display.Refresh)) - return false; - - // Filter on pixclock - if (!PassLongFilter(PixClock, display.PixClock)) - return false; - - // Filter on htotal - if (!PassLongFilter(HTotal, display.HTotal)) - return false; - - // Filter on hbend + // DatItem_HBEnd if (!PassLongFilter(HBEnd, display.HBEnd)) return false; - // Filter on hbstart + // DatItem_HBStart if (!PassLongFilter(HBStart, display.HBStart)) return false; - // Filter on vtotal - if (!PassLongFilter(VTotal, display.VTotal)) + // DatItem_Height + if (!PassLongFilter(Height, display.Height)) return false; - // Filter on vbend + // DatItem_HTotal + if (!PassLongFilter(HTotal, display.HTotal)) + return false; + + // DatItem_PixClock + if (!PassLongFilter(PixClock, display.PixClock)) + return false; + + // DatItem_Refresh + if (!PassDoubleFilter(Refresh, display.Refresh)) + return false; + + // DatItem_Rotate + if (!PassLongFilter(Rotate, display.Rotate)) + return false; + + // DatItem_Tag + if (!PassStringFilter(Tag, display.Tag)) + return false; + + // DatItem_VBEnd if (!PassLongFilter(VBEnd, display.VBEnd)) return false; - // Filter on vbstart + // DatItem_VBStart if (!PassLongFilter(VBStart, display.VBStart)) return false; - + + // DatItem_VTotal + if (!PassLongFilter(VTotal, display.VTotal)) + return false; + + // DatItem_Width + if (!PassLongFilter(Width, display.Width)) + return false; + return true; } @@ -1524,46 +1386,46 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Driver driver) { - // Filter on status - if (SupportStatus.MatchesPositive(Core.SupportStatus.NULL, driver.Status) == false) - return false; - if (SupportStatus.MatchesNegative(Core.SupportStatus.NULL, driver.Status) == true) - return false; - - // Filter on emulation - if (EmulationStatus.MatchesPositive(Core.SupportStatus.NULL, driver.Emulation) == false) - return false; - if (EmulationStatus.MatchesNegative(Core.SupportStatus.NULL, driver.Emulation) == true) - return false; - - // Filter on cocktail + // DatItem_CocktailStatus if (CocktailStatus.MatchesPositive(Core.SupportStatus.NULL, driver.Cocktail) == false) return false; if (CocktailStatus.MatchesNegative(Core.SupportStatus.NULL, driver.Cocktail) == true) return false; - // Filter on savestate + // DatItem_EmulationStatus + if (EmulationStatus.MatchesPositive(Core.SupportStatus.NULL, driver.Emulation) == false) + return false; + if (EmulationStatus.MatchesNegative(Core.SupportStatus.NULL, driver.Emulation) == true) + return false; + + // DatItem_Incomplete + if (!PassBoolFilter(Incomplete, driver.Incomplete)) + return false; + + // DatItem_NoSoundHardware + if (!PassBoolFilter(NoSoundHardware, driver.NoSoundHardware)) + return false; + + // DatItem_RequiresArtwork + if (!PassBoolFilter(RequiresArtwork, driver.RequiresArtwork)) + return false; + + // DatItem_SaveStateStatus if (SaveStateStatus.MatchesPositive(Supported.NULL, driver.SaveState) == false) return false; if (SaveStateStatus.MatchesNegative(Supported.NULL, driver.SaveState) == true) return false; - // Filter on requires artwork - if (!PassBoolFilter(RequiresArtwork, driver.RequiresArtwork)) + // DatItem_SupportStatus + if (SupportStatus.MatchesPositive(Core.SupportStatus.NULL, driver.Status) == false) + return false; + if (SupportStatus.MatchesNegative(Core.SupportStatus.NULL, driver.Status) == true) return false; - // Filter on unofficial + // DatItem_Unofficial if (!PassBoolFilter(Unofficial, driver.Unofficial)) return false; - // Filter on no sound hardware - if (!PassBoolFilter(NoSoundHardware, driver.NoSoundHardware)) - return false; - - // Filter on incomplete - if (!PassBoolFilter(Incomplete, driver.Incomplete)) - return false; - return true; } @@ -1574,10 +1436,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Extension extension) { - // Filter on item name + // DatItem_Extension_Name if (!PassStringFilter(Extension_Name, extension.Name)) return false; - + return true; } @@ -1588,24 +1450,24 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Feature feature) { - // Filter on type - if (FeatureType.MatchesPositive(Core.FeatureType.NULL, feature.Type) == false) + // DatItem_FeatureOverall + if (FeatureOverall.MatchesPositive(Core.FeatureStatus.NULL, feature.Overall) == false) return false; - if (FeatureType.MatchesNegative(Core.FeatureType.NULL, feature.Type) == true) + if (FeatureOverall.MatchesNegative(Core.FeatureStatus.NULL, feature.Overall) == true) return false; - // Filter on status + // DatItem_FeatureStatus if (FeatureStatus.MatchesPositive(Core.FeatureStatus.NULL, feature.Status) == false) return false; if (FeatureStatus.MatchesNegative(Core.FeatureStatus.NULL, feature.Status) == true) return false; - // Filter on overall - if (FeatureOverall.MatchesPositive(Core.FeatureStatus.NULL, feature.Overall) == false) + // DatItem_FeatureType + if (FeatureType.MatchesPositive(Core.FeatureType.NULL, feature.Type) == false) return false; - if (FeatureOverall.MatchesNegative(Core.FeatureStatus.NULL, feature.Overall) == true) + if (FeatureType.MatchesNegative(Core.FeatureType.NULL, feature.Type) == true) return false; - + return true; } @@ -1616,10 +1478,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Info info) { - // Filter on info value + // DatItem_Value if (!PassStringFilter(Value, info.Value)) return false; - + return true; } @@ -1630,20 +1492,20 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Input input) { - // Filter on service - if (!PassBoolFilter(Service, input.Service)) + // DatItem_Coins + if (!PassLongFilter(Coins, input.Coins)) return false; - // Filter on tilt - if (!PassBoolFilter(Tilt, input.Tilt)) - return false; - - // Filter on players + // DatItem_Players if (!PassLongFilter(Players, input.Players)) return false; - // Filter on coins - if (!PassLongFilter(Coins, input.Coins)) + // DatItem_Service + if (!PassBoolFilter(Service, input.Service)) + return false; + + // DatItem_Tilt + if (!PassBoolFilter(Tilt, input.Tilt)) return false; // Filter on individual controls @@ -1655,7 +1517,7 @@ namespace SabreTools.Filtering return false; } } - + return true; } @@ -1666,14 +1528,14 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Instance instance) { - // Filter on item name + // DatItem_Instance_BriefName + if (!PassStringFilter(Instance_BriefName, instance.BriefName)) + return false; + + // DatItem_Instance_Name if (!PassStringFilter(Instance_Name, instance.Name)) return false; - // Filter on brief name - if (!PassStringFilter(Instance_BriefName, instance.BriefName)) - return false; - return true; } @@ -1684,18 +1546,18 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Location location) { - // Filter on item name + // DatItem_Location_Inverted + if (!PassBoolFilter(Location_Inverted, location.Inverted)) + return false; + + // DatItem_Location_Name if (!PassStringFilter(Location_Name, location.Name)) return false; - // Filter on number + // DatItem_Location_Number if (!PassLongFilter(Location_Number, location.Number)) return false; - // Filter on inverted - if (!PassBoolFilter(Location_Inverted, location.Inverted)) - return false; - return true; } @@ -1706,22 +1568,22 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Media media) { - // Filter on MD5 + // DatItem_MD5 if (!PassStringFilter(MD5, media.MD5)) return false; - // Filter on SHA-1 + // DatItem_SHA1 if (!PassStringFilter(SHA1, media.SHA1)) return false; - // Filter on SHA-256 + // DatItem_SHA256 if (!PassStringFilter(SHA256, media.SHA256)) return false; - // Filter on SpamSum + // DatItem_SpamSum if (!PassStringFilter(SpamSum, media.SpamSum)) return false; - + return true; } @@ -1732,12 +1594,12 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Part part) { - // Filter on part name - if (!PassStringFilter(Part_Name, part.Name)) + // DatItem_Part_Interface + if (!PassStringFilter(Part_Interface, part.Interface)) return false; - // Filter on part interface - if (!PassStringFilter(Part_Interface, part.Interface)) + // DatItem_Part_Name + if (!PassStringFilter(Part_Name, part.Name)) return false; // Filter on features @@ -1749,7 +1611,7 @@ namespace SabreTools.Filtering return false; } } - + return true; } @@ -1760,14 +1622,14 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(PartFeature partFeature) { - // Filter on name + // DatItem_Part_Feature_Name if (!PassStringFilter(Part_Feature_Name, partFeature.Name)) return false; - // Filter on value + // DatItem_Part_Feature_Value if (!PassStringFilter(Part_Feature_Value, partFeature.Value)) return false; - + return true; } @@ -1778,7 +1640,7 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Port port) { - // Filter on tag + // DatItem_Tag if (!PassStringFilter(Tag, port.Tag)) return false; @@ -1791,7 +1653,7 @@ namespace SabreTools.Filtering return false; } } - + return true; } @@ -1802,14 +1664,14 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(RamOption ramOption) { - // Filter on default + // DatItem_Content + if (!PassStringFilter(Content, ramOption.Content)) + return false; + + // DatItem_Default if (!PassBoolFilter(Default, ramOption.Default)) return false; - // Filter on content - if (!PassStringFilter(Content, ramOption.Content)) - return false; - return true; } @@ -1820,22 +1682,22 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Release release) { - // Filter on region - if (!PassStringFilter(Region, release.Region)) - return false; - - // Filter on language - if (!PassStringFilter(Language, release.Language)) - return false; - - // Filter on date + // DatItem_Date if (!PassStringFilter(Date, release.Date)) return false; - // Filter on default + // DatItem_Default if (!PassBoolFilter(Default, release.Default)) return false; - + + // DatItem_Language + if (!PassStringFilter(Language, release.Language)) + return false; + + // DatItem_Region + if (!PassStringFilter(Region, release.Region)) + return false; + return true; } @@ -1846,155 +1708,133 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Rom rom) { - #region Common - - // Filter on bios - if (!PassStringFilter(Bios, rom.Bios)) - return false; - - // Filter on rom size - if (!PassLongFilter(Size, rom.Size)) - return false; - - // Filter on CRC - if (!PassStringFilter(CRC, rom.CRC)) - return false; - - // Filter on MD5 - if (!PassStringFilter(MD5, rom.MD5)) - return false; - - // Filter on SHA-1 - if (!PassStringFilter(SHA1, rom.SHA1)) - return false; - - // Filter on SHA-256 - if (!PassStringFilter(SHA256, rom.SHA256)) - return false; - - // Filter on SHA-384 - if (!PassStringFilter(SHA384, rom.SHA384)) - return false; - - // Filter on SHA-512 - if (!PassStringFilter(SHA512, rom.SHA512)) - return false; - - // Filter on SpamSum - if (!PassStringFilter(SpamSum, rom.SpamSum)) - return false; - - // Filter on merge tag - if (!PassStringFilter(Merge, rom.MergeTag)) - return false; - - // Filter on region - if (!PassStringFilter(Region, rom.Region)) - return false; - - // Filter on offset - if (!PassStringFilter(Offset, rom.Offset)) - return false; - - // Filter on date - if (!PassStringFilter(Date, rom.Date)) - return false; - - // Filter on status - if (Status.MatchesPositive(ItemStatus.NULL, rom.ItemStatus) == false) - return false; - if (Status.MatchesNegative(ItemStatus.NULL, rom.ItemStatus) == true) - return false; - - // Filter on optional - if (!PassBoolFilter(Optional, rom.Optional)) - return false; - - // Filter on inverted - if (!PassBoolFilter(Inverted, rom.Inverted)) - return false; - - #endregion - - #region Archive.org - - // Filter on file source - if (!PassStringFilter(ArchiveDotOrgSource, rom.ArchiveDotOrgSource)) - return false; - - // Filter on file format - if (!PassStringFilter(ArchiveDotOrgFormat, rom.ArchiveDotOrgFormat)) - return false; - - // Filter on original filename - if (!PassStringFilter(OriginalFilename, rom.OriginalFilename)) - return false; - - // Filter on rotation - if (!PassStringFilter(Rotation, rom.Rotation)) - return false; - - // Filter on summation - if (!PassStringFilter(Summation, rom.Summation)) - return false; - - #endregion - - #region AttractMode - - // Filter on alt name + // DatItem_AltName if (!PassStringFilter(AltName, rom.AltName)) return false; - // Filter on alt title + // DatItem_AltTitle if (!PassStringFilter(AltTitle, rom.AltTitle)) return false; - #endregion - - #region Logiqx - - // Filter on MIA> - if (!PassBoolFilter(MIA, rom.MIA)) + // DatItem_ArchiveDotOrgFormat + if (!PassStringFilter(ArchiveDotOrgFormat, rom.ArchiveDotOrgFormat)) return false; - #endregion - - #region OpenMSX - - // Filter on original - if (!PassStringFilter(Original, rom.Original?.Content)) + // DatItem_ArchiveDotOrgSource + if (!PassStringFilter(ArchiveDotOrgSource, rom.ArchiveDotOrgSource)) return false; - // Filter on OpenMSX subtype - if (OpenMSXSubType.MatchesPositive(Core.OpenMSXSubType.NULL, rom.OpenMSXSubType) == false) - return false; - if (OpenMSXSubType.MatchesNegative(Core.OpenMSXSubType.NULL, rom.OpenMSXSubType) == true) + // DatItem_Bios + if (!PassStringFilter(Bios, rom.Bios)) return false; - // Filter on OpenMSX type - if (!PassStringFilter(OpenMSXType, rom.OpenMSXType)) - return false; - - // Filter on remark - if (!PassStringFilter(Remark, rom.Remark)) - return false; - - // Filter on boot + // DatItem_Boot if (!PassStringFilter(Boot, rom.Boot)) return false; - #endregion + // DatItem_CRC + if (!PassStringFilter(CRC, rom.CRC)) + return false; - #region SoftwareList + // DatItem_Date + if (!PassStringFilter(Date, rom.Date)) + return false; - // Filter on load flag + // DatItem_Inverted + if (!PassBoolFilter(Inverted, rom.Inverted)) + return false; + + // DatItem_LoadFlag if (LoadFlag.MatchesPositive(Core.LoadFlag.NULL, rom.LoadFlag) == false) return false; if (LoadFlag.MatchesNegative(Core.LoadFlag.NULL, rom.LoadFlag) == true) return false; - // Filter on value + // DatItem_MD5 + if (!PassStringFilter(MD5, rom.MD5)) + return false; + + // DatItem_Merge + if (!PassStringFilter(Merge, rom.MergeTag)) + return false; + + // DatItem_MIA + if (!PassBoolFilter(MIA, rom.MIA)) + return false; + + // DatItem_Offset + if (!PassStringFilter(Offset, rom.Offset)) + return false; + + // DatItem_OpenMSXSubType + if (OpenMSXSubType.MatchesPositive(Core.OpenMSXSubType.NULL, rom.OpenMSXSubType) == false) + return false; + if (OpenMSXSubType.MatchesNegative(Core.OpenMSXSubType.NULL, rom.OpenMSXSubType) == true) + return false; + + // DatItem_OpenMSXType + if (!PassStringFilter(OpenMSXType, rom.OpenMSXType)) + return false; + + // DatItem_Optional + if (!PassBoolFilter(Optional, rom.Optional)) + return false; + + // DatItem_Original + if (!PassStringFilter(Original, rom.Original?.Content)) + return false; + + // DatItem_OriginalFilename + if (!PassStringFilter(OriginalFilename, rom.OriginalFilename)) + return false; + + // DatItem_Region + if (!PassStringFilter(Region, rom.Region)) + return false; + + // DatItem_Remark + if (!PassStringFilter(Remark, rom.Remark)) + return false; + + // DatItem_Rotation + if (!PassStringFilter(Rotation, rom.Rotation)) + return false; + + // DatItem_SHA1 + if (!PassStringFilter(SHA1, rom.SHA1)) + return false; + + // DatItem_SHA256 + if (!PassStringFilter(SHA256, rom.SHA256)) + return false; + + // DatItem_SHA384 + if (!PassStringFilter(SHA384, rom.SHA384)) + return false; + + // DatItem_SHA512 + if (!PassStringFilter(SHA512, rom.SHA512)) + return false; + + // DatItem_Size + if (!PassLongFilter(Size, rom.Size)) + return false; + + // DatItem_SpamSum + if (!PassStringFilter(SpamSum, rom.SpamSum)) + return false; + + // DatItem_Status + if (Status.MatchesPositive(ItemStatus.NULL, rom.ItemStatus) == false) + return false; + if (Status.MatchesNegative(ItemStatus.NULL, rom.ItemStatus) == true) + return false; + + // DatItem_Summation + if (!PassStringFilter(Summation, rom.Summation)) + return false; + + // DatItem_Value if (!PassStringFilter(Value, rom.Value)) return false; @@ -2012,8 +1852,6 @@ namespace SabreTools.Filtering return false; } - #endregion - return true; } @@ -2024,18 +1862,18 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Setting setting) { - // Filter on item name + // DatItem_Setting_Default + if (!PassBoolFilter(Setting_Default, setting.Default)) + return false; + + // DatItem_Setting_Name if (!PassStringFilter(Setting_Name, setting.Name)) return false; - // Filter on value + // DatItem_Setting_Value if (!PassStringFilter(Setting_Value, setting.Value)) return false; - // Filter on default - if (!PassBoolFilter(Setting_Default, setting.Default)) - return false; - // Filter on individual conditions if (setting.ConditionsSpecified) { @@ -2045,7 +1883,7 @@ namespace SabreTools.Filtering return false; } } - + return true; } @@ -2056,10 +1894,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(SharedFeature sharedFeature) { - // Filter on value + // DatItem_Value if (!PassStringFilter(Value, sharedFeature.Value)) return false; - + return true; } @@ -2079,7 +1917,7 @@ namespace SabreTools.Filtering return false; } } - + return true; } @@ -2090,18 +1928,18 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(SlotOption slotOption) { - // Filter on item name - if (!PassStringFilter(SlotOption_Name, slotOption.Name)) + // DatItem_SlotOption_Default + if (!PassBoolFilter(SlotOption_Default, slotOption.Default)) return false; - // Filter on device name + // DatItem_SlotOption_DeviceName if (!PassStringFilter(SlotOption_DeviceName, slotOption.DeviceName)) return false; - // Filter on default - if (!PassBoolFilter(SlotOption_Default, slotOption.Default)) + // DatItem_SlotOption_Name + if (!PassStringFilter(SlotOption_Name, slotOption.Name)) return false; - + return true; } @@ -2112,20 +1950,20 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(SoftwareList softwareList) { - // Filter on tag - if (!PassStringFilter(Tag, softwareList.Tag)) + // DatItem_Filter + if (!PassStringFilter(Filter, softwareList.Filter)) return false; - // Filter on status + // DatItem_SoftwareListStatus if (SoftwareListStatus.MatchesPositive(Core.SoftwareListStatus.None, softwareList.Status) == false) return false; if (SoftwareListStatus.MatchesNegative(Core.SoftwareListStatus.None, softwareList.Status) == true) return false; - // Filter on filter - if (!PassStringFilter(Filter, softwareList.Filter)) + // DatItem_Tag + if (!PassStringFilter(Tag, softwareList.Tag)) return false; - + return true; } @@ -2136,10 +1974,10 @@ namespace SabreTools.Filtering /// True if the item passed the filter, false otherwise private bool PassesFilters(Sound sound) { - // Filter on channels + // DatItem_Channels if (!PassLongFilter(Channels, sound.Channels)) return false; - + return true; } diff --git a/SabreTools.Filtering/MachineFilter.cs b/SabreTools.Filtering/MachineFilter.cs index 70d0aea0..f87118b3 100644 --- a/SabreTools.Filtering/MachineFilter.cs +++ b/SabreTools.Filtering/MachineFilter.cs @@ -1,5 +1,4 @@ using System.Collections.Generic; - using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.DatItems; @@ -16,78 +15,44 @@ namespace SabreTools.Filtering #region Filters - #region Common - - public FilterItem Name { get; private set; } = new FilterItem(); - public FilterItem Comment { get; private set; } = new FilterItem(); - public FilterItem Description { get; private set; } = new FilterItem(); - public FilterItem Year { get; private set; } = new FilterItem(); - public FilterItem Manufacturer { get; private set; } = new FilterItem(); - public FilterItem Publisher { get; private set; } = new FilterItem(); + public FilterItem Board { get; private set; } = new FilterItem(); + public FilterItem Buttons { get; private set; } = new FilterItem(); public FilterItem Category { get; private set; } = new FilterItem(); - public FilterItem RomOf { get; private set; } = new FilterItem(); public FilterItem CloneOf { get; private set; } = new FilterItem(); - public FilterItem SampleOf { get; private set; } = new FilterItem(); - public FilterItem Type { get; private set; } = new FilterItem() { Positive = 0x0, Negative = 0x0 }; - - #endregion - - #region AttractMode - - public FilterItem Players { get; private set; } = new FilterItem(); - public FilterItem Rotation { get; private set; } = new FilterItem(); + public FilterItem CloneOfID { get; private set; } = new FilterItem(); + public FilterItem Comment { get; private set; } = new FilterItem(); public FilterItem Control { get; private set; } = new FilterItem(); - public FilterItem Status { get; private set; } = new FilterItem(); + public FilterItem Country { get; private set; } = new FilterItem(); + public FilterItem CRC { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem Description { get; private set; } = new FilterItem(); + public FilterItem Developer { get; private set; } = new FilterItem(); public FilterItem DisplayCount { get; private set; } = new FilterItem(); public FilterItem DisplayType { get; private set; } = new FilterItem(); - public FilterItem Buttons { get; private set; } = new FilterItem(); - - #endregion - - #region ListXML - - public FilterItem History { get; private set; } = new FilterItem(); - public FilterItem SourceFile { get; private set; } = new FilterItem(); - public FilterItem Runnable { get; private set; } = new FilterItem() { Positive = Core.Runnable.NULL, Negative = Core.Runnable.NULL }; - - #endregion - - #region Logiqx - - public FilterItem Board { get; private set; } = new FilterItem(); - public FilterItem RebuildTo { get; private set; } = new FilterItem(); - public FilterItem NoIntroId { get; private set; } = new FilterItem(); - public FilterItem NoIntroCloneOfId { get; private set; } = new FilterItem(); - - #endregion - - #region Logiqx EmuArc - - public FilterItem TitleID { get; private set; } = new FilterItem(); - public FilterItem Developer { get; private set; } = new FilterItem(); - public FilterItem Genre { get; private set; } = new FilterItem(); - public FilterItem Subgenre { get; private set; } = new FilterItem(); - public FilterItem Ratings { get; private set; } = new FilterItem(); - public FilterItem Score { get; private set; } = new FilterItem(); public FilterItem Enabled { get; private set; } = new FilterItem(); - public FilterItem CRC { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem RelatedTo { get; private set; } = new FilterItem(); - - #endregion - - #region OpenMSX - public FilterItem GenMSXID { get; private set; } = new FilterItem(); - public FilterItem System { get; private set; } = new FilterItem(); - public FilterItem Country { get; private set; } = new FilterItem(); - - #endregion - - #region SoftwareList - + public FilterItem Genre { get; private set; } = new FilterItem(); + public FilterItem History { get; private set; } = new FilterItem(); + public FilterItem ID { get; private set; } = new FilterItem(); + public FilterItem Manufacturer { get; private set; } = new FilterItem(); + public FilterItem Name { get; private set; } = new FilterItem(); + public FilterItem Players { get; private set; } = new FilterItem(); + public FilterItem Publisher { get; private set; } = new FilterItem(); + public FilterItem Ratings { get; private set; } = new FilterItem(); + public FilterItem RebuildTo { get; private set; } = new FilterItem(); + public FilterItem RelatedTo { get; private set; } = new FilterItem(); + public FilterItem RomOf { get; private set; } = new FilterItem(); + public FilterItem Rotation { get; private set; } = new FilterItem(); + public FilterItem Runnable { get; private set; } = new FilterItem() { Positive = Core.Runnable.NULL, Negative = Core.Runnable.NULL }; + public FilterItem SampleOf { get; private set; } = new FilterItem(); + public FilterItem Score { get; private set; } = new FilterItem(); + public FilterItem SourceFile { get; private set; } = new FilterItem(); + public FilterItem Status { get; private set; } = new FilterItem(); + public FilterItem Subgenre { get; private set; } = new FilterItem(); public FilterItem Supported { get; private set; } = new FilterItem() { Positive = Core.Supported.NULL, Negative = Core.Supported.NULL }; - - #endregion + public FilterItem System { get; private set; } = new FilterItem(); + public FilterItem TitleID { get; private set; } = new FilterItem(); + public FilterItem Type { get; private set; } = new FilterItem() { Positive = 0x0, Negative = 0x0 }; + public FilterItem Year { get; private set; } = new FilterItem(); #endregion // Machine Filters @@ -145,73 +110,48 @@ namespace SabreTools.Filtering { switch (key) { - #region Common - - case MachineField.Name: - SetStringFilter(Name, value, negate); + case MachineField.Board: + SetStringFilter(Board, value, negate); break; - case MachineField.Comment: - SetStringFilter(Comment, value, negate); - break; - - case MachineField.Description: - SetStringFilter(Description, value, negate); - break; - - case MachineField.Year: - SetStringFilter(Year, value, negate); - break; - - case MachineField.Manufacturer: - SetStringFilter(Manufacturer, value, negate); - break; - - case MachineField.Publisher: - SetStringFilter(Publisher, value, negate); + case MachineField.Buttons: + SetStringFilter(Buttons, value, negate); break; case MachineField.Category: SetStringFilter(Category, value, negate); break; - case MachineField.RomOf: - SetStringFilter(RomOf, value, negate); - break; - case MachineField.CloneOf: SetStringFilter(CloneOf, value, negate); break; - case MachineField.SampleOf: - SetStringFilter(SampleOf, value, negate); + case MachineField.CloneOfID: + SetStringFilter(CloneOfID, value, negate); break; - case MachineField.Type: - if (negate) - Type.Negative |= value.AsMachineType(); - else - Type.Positive |= value.AsMachineType(); - break; - - #endregion - - #region AttractMode - - case MachineField.Players: - SetStringFilter(Players, value, negate); - break; - - case MachineField.Rotation: - SetStringFilter(Rotation, value, negate); + case MachineField.Comment: + SetStringFilter(Comment, value, negate); break; case MachineField.Control: SetStringFilter(Control, value, negate); break; - case MachineField.Status: - SetStringFilter(Status, value, negate); + case MachineField.CRC: + SetBooleanFilter(CRC, value, negate); + break; + + case MachineField.Country: + SetStringFilter(Country, value, negate); + break; + + case MachineField.Description: + SetStringFilter(Description, value, negate); + break; + + case MachineField.Developer: + SetStringFilter(Developer, value, negate); break; case MachineField.DisplayCount: @@ -222,20 +162,60 @@ namespace SabreTools.Filtering SetStringFilter(DisplayType, value, negate); break; - case MachineField.Buttons: - SetStringFilter(Buttons, value, negate); + case MachineField.Enabled: + SetStringFilter(Enabled, value, negate); break; - #endregion + case MachineField.GenMSXID: + SetStringFilter(GenMSXID, value, negate); + break; - #region ListXML + case MachineField.Genre: + SetStringFilter(Genre, value, negate); + break; case MachineField.History: SetStringFilter(History, value, negate); break; - case MachineField.SourceFile: - SetStringFilter(SourceFile, value, negate); + case MachineField.ID: + SetStringFilter(ID, value, negate); + break; + + case MachineField.Manufacturer: + SetStringFilter(Manufacturer, value, negate); + break; + + case MachineField.Name: + SetStringFilter(Name, value, negate); + break; + + case MachineField.Players: + SetStringFilter(Players, value, negate); + break; + + case MachineField.Publisher: + SetStringFilter(Publisher, value, negate); + break; + + case MachineField.Ratings: + SetStringFilter(Ratings, value, negate); + break; + + case MachineField.RebuildTo: + SetStringFilter(RebuildTo, value, negate); + break; + + case MachineField.RelatedTo: + SetStringFilter(RelatedTo, value, negate); + break; + + case MachineField.RomOf: + SetStringFilter(RomOf, value, negate); + break; + + case MachineField.Rotation: + SetStringFilter(Rotation, value, negate); break; case MachineField.Runnable: @@ -243,88 +223,28 @@ namespace SabreTools.Filtering Runnable.Negative |= value.AsRunnable(); else Runnable.Positive |= value.AsRunnable(); - break; + break; - #endregion - - #region Logiqx - - case MachineField.Board: - SetStringFilter(Board, value, negate); - break; - - case MachineField.RebuildTo: - SetStringFilter(RebuildTo, value, negate); - break; - - case MachineField.ID: - SetStringFilter(NoIntroId, value, negate); - break; - - case MachineField.CloneOfID: - SetStringFilter(NoIntroCloneOfId, value, negate); - break; - - #endregion - - #region Logiqx EmuArc - - case MachineField.TitleID: - SetStringFilter(TitleID, value, negate); - break; - - case MachineField.Developer: - SetStringFilter(Developer, value, negate); - break; - - case MachineField.Genre: - SetStringFilter(Genre, value, negate); - break; - - case MachineField.Subgenre: - SetStringFilter(Subgenre, value, negate); - break; - - case MachineField.Ratings: - SetStringFilter(Ratings, value, negate); + case MachineField.SampleOf: + SetStringFilter(SampleOf, value, negate); break; case MachineField.Score: SetStringFilter(Score, value, negate); break; - case MachineField.Enabled: - SetStringFilter(Enabled, value, negate); + case MachineField.SourceFile: + SetStringFilter(SourceFile, value, negate); break; - case MachineField.CRC: - SetBooleanFilter(CRC, value, negate); + case MachineField.Status: + SetStringFilter(Status, value, negate); break; - case MachineField.RelatedTo: - SetStringFilter(RelatedTo, value, negate); + case MachineField.Subgenre: + SetStringFilter(Subgenre, value, negate); break; - #endregion - - #region OpenMSX - - case MachineField.GenMSXID: - SetStringFilter(GenMSXID, value, negate); - break; - - case MachineField.System: - SetStringFilter(System, value, negate); - break; - - case MachineField.Country: - SetStringFilter(Country, value, negate); - break; - - #endregion - - #region SoftwareList - case MachineField.Supported: if (negate) Supported.Negative |= value.AsSupported(); @@ -332,7 +252,24 @@ namespace SabreTools.Filtering Supported.Positive |= value.AsSupported(); break; - #endregion + case MachineField.System: + SetStringFilter(System, value, negate); + break; + + case MachineField.TitleID: + SetStringFilter(TitleID, value, negate); + break; + + case MachineField.Type: + if (negate) + Type.Negative |= value.AsMachineType(); + else + Type.Positive |= value.AsMachineType(); + break; + + case MachineField.Year: + SetStringFilter(Year, value, negate); + break; } } @@ -350,7 +287,81 @@ namespace SabreTools.Filtering if (machine == null) return false; - #region Common + // Machine_Board + if (!PassStringFilter(Board, machine.Board)) + return false; + + // Machine_Buttons + if (!PassStringFilter(Buttons, machine.Buttons)) + return false; + + // Machine_Category + if (!PassStringFilter(Category, machine.Category)) + return false; + + // Machine_CloneOf + if (!PassStringFilter(CloneOf, machine.CloneOf)) + return false; + + // Machine_CloneOfID + if (!PassStringFilter(CloneOfID, value: machine.NoIntroCloneOfId)) + return false; + + // Machine_Comment + if (!PassStringFilter(Comment, machine.Comment)) + return false; + + // Machine_Control + if (!PassStringFilter(Control, machine.Control)) + return false; + + // Machine_Country + if (!PassStringFilter(Country, machine.Country)) + return false; + + // Machine_CRC + if (!PassBoolFilter(CRC, machine.Crc)) + return false; + + // Machine_Description + if (!PassStringFilter(Description, machine.Description)) + return false; + + // Machine_Developer + if (!PassStringFilter(Developer, machine.Developer)) + return false; + + // Machine_DisplayCount + if (!PassStringFilter(DisplayCount, machine.DisplayCount)) + return false; + + // Machine_DisplayType + if (!PassStringFilter(DisplayType, machine.DisplayType)) + return false; + + // Machine_Enabled + if (!PassStringFilter(Enabled, machine.Enabled)) + return false; + + // Machine_GenMSXID + if (!PassStringFilter(GenMSXID, machine.GenMSXID)) + return false; + + // Machine_Genre + if (!PassStringFilter(Genre, machine.Genre)) + return false; + + // Machine_History + if (!PassStringFilter(History, machine.History)) + return false; + + // Machine_ID + if (!PassStringFilter(ID, machine.NoIntroId)) + return false; + + // Machine_Manufacturer + if (!PassStringFilter(Manufacturer, machine.Manufacturer)) + return false; // Machine_Name bool passes = PassStringFilter(Name, machine.Name); @@ -362,186 +373,83 @@ namespace SabreTools.Filtering if (!passes) return false; - // Machine_Comment - if (!PassStringFilter(Comment, machine.Comment)) - return false; - - // Machine_Description - if (!PassStringFilter(Description, machine.Description)) - return false; - - // Machine_Year - if (!PassStringFilter(Year, machine.Year)) - return false; - - // Machine_Manufacturer - if (!PassStringFilter(Manufacturer, machine.Manufacturer)) + // Machine_Players + if (!PassStringFilter(Players, machine.Players)) return false; // Machine_Publisher if (!PassStringFilter(Publisher, machine.Publisher)) return false; - // Machine_Category - if (!PassStringFilter(Category, machine.Category)) + // Machine_Ratings + if (!PassStringFilter(Ratings, machine.Ratings)) + return false; + + // Machine_RebuildTo + if (!PassStringFilter(RebuildTo, machine.RebuildTo)) + return false; + + // Machine_RelatedTo + if (!PassStringFilter(RelatedTo, machine.RelatedTo)) return false; // Machine_RomOf if (!PassStringFilter(RomOf, machine.RomOf)) return false; - // Machine_CloneOf - if (!PassStringFilter(CloneOf, machine.CloneOf)) - return false; - - // Machine_SampleOf - if (!PassStringFilter(SampleOf, machine.SampleOf)) - return false; - - // Machine_Type - if (Type.MatchesPositive(0x0, machine.MachineType) == false) - return false; - if (Type.MatchesNegative(0x0, machine.MachineType) == true) - return false; - - #endregion - - #region AttractMode - - // Machine_Players - if (!PassStringFilter(Players, machine.Players)) - return false; - // Machine_Rotation if (!PassStringFilter(Rotation, machine.Rotation)) return false; - // Machine_Control - if (!PassStringFilter(Control, machine.Control)) - return false; - - // Machine_Status - if (!PassStringFilter(Status, machine.Status)) - return false; - - // Machine_DisplayCount - if (!PassStringFilter(DisplayCount, machine.DisplayCount)) - return false; - - // Machine_DisplayType - if (!PassStringFilter(DisplayType, machine.DisplayType)) - return false; - - // Machine_Buttons - if (!PassStringFilter(Buttons, machine.Buttons)) - return false; - - #endregion - - #region ListXML - - // Machine_History - if (!PassStringFilter(History, machine.History)) - return false; - - // Machine_SourceFile - if (!PassStringFilter(SourceFile, machine.SourceFile)) - return false; - // Machine_Runnable if (Runnable.MatchesPositive(Core.Runnable.NULL, machine.Runnable) == false) return false; if (Runnable.MatchesNegative(Core.Runnable.NULL, machine.Runnable) == true) return false; - #endregion - - #region Logiqx - - // Machine_Board - if (!PassStringFilter(Board, machine.Board)) - return false; - - // Machine_RebuildTo - if (!PassStringFilter(RebuildTo, machine.RebuildTo)) - return false; - - // Machine_NoIntroId - if (!PassStringFilter(NoIntroId, machine.NoIntroId)) - return false; - - // Machine_NoIntroCloneOfId - if (!PassStringFilter(NoIntroCloneOfId, value: machine.NoIntroCloneOfId)) - return false; - - - #endregion - - #region Logiqx EmuArc - - // Machine_TitleID - if (!PassStringFilter(TitleID, machine.TitleID)) - return false; - - // Machine_Developer - if (!PassStringFilter(Developer, machine.Developer)) - return false; - - // Machine_Genre - if (!PassStringFilter(Genre, machine.Genre)) - return false; - - // Machine_Subgenre - if (!PassStringFilter(Subgenre, machine.Subgenre)) - return false; - - // Machine_Ratings - if (!PassStringFilter(Ratings, machine.Ratings)) + // Machine_SampleOf + if (!PassStringFilter(SampleOf, machine.SampleOf)) return false; // Machine_Score if (!PassStringFilter(Score, machine.Score)) return false; - // Machine_Enabled - if (!PassStringFilter(Enabled, machine.Enabled)) + // Machine_SourceFile + if (!PassStringFilter(SourceFile, machine.SourceFile)) return false; - // Machine_CRC - if (!PassBoolFilter(CRC, machine.Crc)) + // Machine_Status + if (!PassStringFilter(Status, machine.Status)) return false; - // Machine_RelatedTo - if (!PassStringFilter(RelatedTo, machine.RelatedTo)) + // Machine_Subgenre + if (!PassStringFilter(Subgenre, machine.Subgenre)) return false; - #endregion - - #region OpenMSX - - // Machine_GenMSXID - if (!PassStringFilter(GenMSXID, machine.GenMSXID)) - return false; - - // Machine_System - if (!PassStringFilter(System, machine.System)) - return false; - - // Machine_Country - if (!PassStringFilter(Country, machine.Country)) - return false; - - #endregion - - #region SoftwareList - // Machine_Supported if (Supported.MatchesPositive(Core.Supported.NULL, machine.Supported) == false) return false; if (Supported.MatchesNegative(Core.Supported.NULL, machine.Supported) == true) return false; - #endregion // SoftwareList + // Machine_System + if (!PassStringFilter(System, machine.System)) + return false; + + // Machine_TitleID + if (!PassStringFilter(TitleID, machine.TitleID)) + return false; + + // Machine_Type + if (Type.MatchesPositive(0x0, machine.MachineType) == false) + return false; + if (Type.MatchesNegative(0x0, machine.MachineType) == true) + return false; + + // Machine_Year + if (!PassStringFilter(Year, machine.Year)) + return false; return true; }