From 3fcec263e017a4d8338941fbef7ceeedd3fe0634 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 13 Dec 2020 21:47:42 -0800 Subject: [PATCH] DatItems don't know about filtering --- SabreTools.DatItems/Adjuster.cs | 28 - SabreTools.DatItems/Analog.cs | 14 - SabreTools.DatItems/Archive.cs | 15 - SabreTools.DatItems/BiosSet.cs | 23 - SabreTools.DatItems/Chip.cs | 29 - SabreTools.DatItems/Condition.cs | 52 - SabreTools.DatItems/Configuration.cs | 53 - SabreTools.DatItems/Control.cs | 61 -- SabreTools.DatItems/DatItem.cs | 23 - SabreTools.DatItems/DataArea.cs | 29 - SabreTools.DatItems/Device.cs | 53 - SabreTools.DatItems/DeviceReference.cs | 15 - SabreTools.DatItems/DipSwitch.cs | 68 -- SabreTools.DatItems/Disk.cs | 71 -- SabreTools.DatItems/DiskArea.cs | 15 - SabreTools.DatItems/Display.cs | 69 -- SabreTools.DatItems/Driver.cs | 35 - SabreTools.DatItems/Extension.cs | 15 - SabreTools.DatItems/Feature.cs | 29 - SabreTools.DatItems/Info.cs | 19 - SabreTools.DatItems/Input.cs | 37 - SabreTools.DatItems/Instance.cs | 21 +- SabreTools.DatItems/Location.cs | 23 - SabreTools.DatItems/Machine.cs | 191 ---- SabreTools.DatItems/Media.cs | 31 - SabreTools.DatItems/Part.cs | 29 - SabreTools.DatItems/PartFeature.cs | 19 - SabreTools.DatItems/Port.cs | 25 - SabreTools.DatItems/RamOption.cs | 23 - SabreTools.DatItems/Release.cs | 31 - SabreTools.DatItems/Rom.cs | 157 --- SabreTools.DatItems/Sample.cs | 15 - SabreTools.DatItems/Setting.cs | 33 - SabreTools.DatItems/SharedFeature.cs | 19 - SabreTools.DatItems/Slot.cs | 25 - SabreTools.DatItems/SlotOption.cs | 23 - SabreTools.DatItems/SoftwareList.cs | 25 - SabreTools.DatItems/Sound.cs | 15 - SabreTools.DatTools/Modification.cs | 2 +- SabreTools.Filtering/Cleaner.cs | 1323 ++++++++++++++++++++++++ 40 files changed, 1325 insertions(+), 1458 deletions(-) diff --git a/SabreTools.DatItems/Adjuster.cs b/SabreTools.DatItems/Adjuster.cs index 54756857..72090dba 100644 --- a/SabreTools.DatItems/Adjuster.cs +++ b/SabreTools.DatItems/Adjuster.cs @@ -153,34 +153,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Default, Default)) - return false; - - // Filter on individual conditions - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - if (!condition.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Analog.cs b/SabreTools.DatItems/Analog.cs index 3b8bc1c6..6416a541 100644 --- a/SabreTools.DatItems/Analog.cs +++ b/SabreTools.DatItems/Analog.cs @@ -91,20 +91,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on mask - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Analog_Mask, Mask)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Archive.cs b/SabreTools.DatItems/Archive.cs index 7b840589..7ea0746c 100644 --- a/SabreTools.DatItems/Archive.cs +++ b/SabreTools.DatItems/Archive.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -106,20 +105,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/BiosSet.cs b/SabreTools.DatItems/BiosSet.cs index a9a42db2..fa181358 100644 --- a/SabreTools.DatItems/BiosSet.cs +++ b/SabreTools.DatItems/BiosSet.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -134,28 +133,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on description - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Description, Description)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Default, Default)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Chip.cs b/SabreTools.DatItems/Chip.cs index a5400197..d2f5ee04 100644 --- a/SabreTools.DatItems/Chip.cs +++ b/SabreTools.DatItems/Chip.cs @@ -6,7 +6,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -152,34 +151,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // DatItem_Tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // DatItem_ChipType - if (cleaner.DatItemFilter.ChipType.MatchesPositive(ChipType.NULL, ChipType) == false) - return false; - if (cleaner.DatItemFilter.ChipType.MatchesNegative(ChipType.NULL, ChipType) == true) - return false; - - // DatItem_Clock - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Clock, Clock)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Condition.cs b/SabreTools.DatItems/Condition.cs index c36c4a64..30e9dc27 100644 --- a/SabreTools.DatItems/Condition.cs +++ b/SabreTools.DatItems/Condition.cs @@ -4,7 +4,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -165,57 +164,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - if (sub) - { - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Condition_Tag, Tag)) - return false; - - // Filter on mask - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Condition_Mask, Mask)) - return false; - - // Filter on relation - if (cleaner.DatItemFilter.Condition_Relation.MatchesPositive(Relation.NULL, Relation) == false) - return false; - if (cleaner.DatItemFilter.Condition_Relation.MatchesNegative(Relation.NULL, Relation) == true) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Condition_Value, Value)) - return false; - } - else - { - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on mask - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Mask, Mask)) - return false; - - // Filter on relation - if (cleaner.DatItemFilter.Relation.MatchesPositive(Relation.NULL, Relation) == false) - return false; - if (cleaner.DatItemFilter.Relation.MatchesNegative(Relation.NULL, Relation) == true) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Value, Value)) - return false; - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Configuration.cs b/SabreTools.DatItems/Configuration.cs index d9da6a77..cafca099 100644 --- a/SabreTools.DatItems/Configuration.cs +++ b/SabreTools.DatItems/Configuration.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -218,58 +217,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on mask - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Mask, Mask)) - return false; - - // Filter on individual conditions - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - if (!condition.PassesFilter(cleaner, true)) - return false; - } - } - - // Filter on individual locations - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - if (!location.PassesFilter(cleaner, true)) - return false; - } - } - - // Filter on individual conditions - if (SettingsSpecified) - { - foreach (Setting setting in Settings) - { - if (!setting.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Control.cs b/SabreTools.DatItems/Control.cs index 9578359d..394e1b19 100644 --- a/SabreTools.DatItems/Control.cs +++ b/SabreTools.DatItems/Control.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -255,66 +254,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on control type - if (cleaner.DatItemFilter.Control_Type.MatchesPositive(ControlType.NULL, ControlType) == false) - return false; - if (cleaner.DatItemFilter.Control_Type.MatchesNegative(ControlType.NULL, ControlType) == true) - return false; - - // Filter on player - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_Player, Player)) - return false; - - // Filter on buttons - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_Buttons, Buttons)) - return false; - - // Filter on reqbuttons - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_ReqButtons, RequiredButtons)) - return false; - - // Filter on minimum - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_Minimum, Minimum)) - return false; - - // Filter on maximum - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_Maximum, Maximum)) - return false; - - // Filter on sensitivity - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_Sensitivity, Sensitivity)) - return false; - - // Filter on keydelta - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Control_KeyDelta, KeyDelta)) - return false; - - // Filter on reverse - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Control_Reverse, Reverse)) - return false; - - // Filter on ways - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Control_Ways, Ways)) - return false; - - // Filter on ways2 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Control_Ways2, Ways2)) - return false; - - // Filter on ways3 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Control_Ways3, Ways3)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index 7e32c507..b8bdb42c 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -460,29 +460,6 @@ namespace SabreTools.DatItems #region Filtering - /// - /// Check to see if a DatItem passes the filter - /// - /// Cleaner containing filters to check against - /// True if this is a subitem, false otherwise - /// True if the item passed the filter, false otherwise - public virtual bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Filter on machine fields - if (!Machine.PassesFilter(cleaner)) - return false; - - // Filters for if we're a top-level item - if (!sub) - { - // Filter on item type - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Type, ItemType.ToString())) - return false; - } - - return true; - } - /// /// Remove fields from the DatItem /// diff --git a/SabreTools.DatItems/DataArea.cs b/SabreTools.DatItems/DataArea.cs index 5dc98b8a..90da76f6 100644 --- a/SabreTools.DatItems/DataArea.cs +++ b/SabreTools.DatItems/DataArea.cs @@ -6,7 +6,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -154,34 +153,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on area name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.AreaName, Name)) - return false; - - // Filter on area size - if (!Filter.PassLongFilter(cleaner.DatItemFilter.AreaSize, Size)) - return false; - - // Filter on area width - if (!Filter.PassLongFilter(cleaner.DatItemFilter.AreaWidth, Width)) - return false; - - // Filter on area endianness - if (cleaner.DatItemFilter.AreaEndianness.MatchesPositive(Endianness.NULL, Endianness) == false) - return false; - if (cleaner.DatItemFilter.AreaEndianness.MatchesNegative(Endianness.NULL, Endianness) == true) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Device.cs b/SabreTools.DatItems/Device.cs index 571dfda9..90dd6c10 100644 --- a/SabreTools.DatItems/Device.cs +++ b/SabreTools.DatItems/Device.cs @@ -4,7 +4,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -210,58 +209,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on device type - if (cleaner.DatItemFilter.DeviceType.MatchesPositive(DeviceType.NULL, DeviceType) == false) - return false; - if (cleaner.DatItemFilter.DeviceType.MatchesNegative(DeviceType.NULL, DeviceType) == true) - return false; - - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on fixed image - if (!Filter.PassStringFilter(cleaner.DatItemFilter.FixedImage, FixedImage)) - return false; - - // Filter on mandatory - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Mandatory, Mandatory)) - return false; - - // Filter on interface - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Interface, Interface)) - return false; - - // Filter on individual instances - if (InstancesSpecified) - { - foreach (Instance instance in Instances) - { - if (!instance.PassesFilter(cleaner, true)) - return false; - } - } - - // Filter on individual extensions - if (ExtensionsSpecified) - { - foreach (Extension extension in Extensions) - { - if (!extension.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/DeviceReference.cs b/SabreTools.DatItems/DeviceReference.cs index a15fbe02..51562fe0 100644 --- a/SabreTools.DatItems/DeviceReference.cs +++ b/SabreTools.DatItems/DeviceReference.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -106,20 +105,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/DipSwitch.cs b/SabreTools.DatItems/DipSwitch.cs index c7d4da6b..629834a5 100644 --- a/SabreTools.DatItems/DipSwitch.cs +++ b/SabreTools.DatItems/DipSwitch.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -265,73 +264,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - #region Common - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on mask - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Mask, Mask)) - return false; - - // Filter on individual conditions - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - if (!condition.PassesFilter(cleaner, true)) - return false; - } - } - - // Filter on individual locations - if (LocationsSpecified) - { - foreach (Location location in Locations) - { - if (!location.PassesFilter(cleaner, true)) - return false; - } - } - - // Filter on individual conditions - if (ValuesSpecified) - { - foreach (Setting value in Values) - { - if (!value.PassesFilter(cleaner, true)) - return false; - } - } - - #endregion - - #region SoftwareList - - // Filter on Part - if (PartSpecified) - { - if (!Part.PassesFilter(cleaner, true)) - return false; - } - - #endregion - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Disk.cs b/SabreTools.DatItems/Disk.cs index 57af3662..24ed23e8 100644 --- a/SabreTools.DatItems/Disk.cs +++ b/SabreTools.DatItems/Disk.cs @@ -6,7 +6,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.FileTypes; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -425,76 +424,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - #region Common - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on MD5 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.MD5, MD5)) - return false; - - // Filter on SHA-1 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA1, SHA1)) - return false; - - // Filter on merge tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Merge, MergeTag)) - return false; - - // Filter on region - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Region, Region)) - return false; - - // Filter on index - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Index, Index)) - return false; - - // Filter on writable - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Writable, Writable)) - return false; - - // Filter on status - if (cleaner.DatItemFilter.Status.MatchesPositive(ItemStatus.NULL, ItemStatus) == false) - return false; - if (cleaner.DatItemFilter.Status.MatchesNegative(ItemStatus.NULL, ItemStatus) == true) - return false; - - // Filter on optional - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Optional, Optional)) - return false; - - #endregion - - #region SoftwareList - - // Filter on DiskArea - if (DiskAreaSpecified) - { - if (!DiskArea.PassesFilter(cleaner, true)) - return false; - } - - // Filter on Part - if (PartSpecified) - { - if (!Part.PassesFilter(cleaner, true)) - return false; - } - - #endregion - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/DiskArea.cs b/SabreTools.DatItems/DiskArea.cs index b8b09d55..7ad97f8d 100644 --- a/SabreTools.DatItems/DiskArea.cs +++ b/SabreTools.DatItems/DiskArea.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -108,20 +107,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on area name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.AreaName, Name)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Display.cs b/SabreTools.DatItems/Display.cs index e53c5c68..9e6ed9c0 100644 --- a/SabreTools.DatItems/Display.cs +++ b/SabreTools.DatItems/Display.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -294,74 +293,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on display type - if (cleaner.DatItemFilter.DisplayType.MatchesPositive(DisplayType.NULL, DisplayType) == false) - return false; - if (cleaner.DatItemFilter.DisplayType.MatchesNegative(DisplayType.NULL, DisplayType) == true) - return false; - - // Filter on rotation - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Rotate, Rotate)) - return false; - - // Filter on flipx - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.FlipX, FlipX)) - return false; - - // Filter on width - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Width, Width)) - return false; - - // Filter on height - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Height, Height)) - return false; - - // Filter on refresh - if (!Filter.PassDoubleFilter(cleaner.DatItemFilter.Refresh, Refresh)) - return false; - - // Filter on pixclock - if (!Filter.PassLongFilter(cleaner.DatItemFilter.PixClock, PixClock)) - return false; - - // Filter on htotal - if (!Filter.PassLongFilter(cleaner.DatItemFilter.HTotal, HTotal)) - return false; - - // Filter on hbend - if (!Filter.PassLongFilter(cleaner.DatItemFilter.HBEnd, HBEnd)) - return false; - - // Filter on hbstart - if (!Filter.PassLongFilter(cleaner.DatItemFilter.HBStart, HBStart)) - return false; - - // Filter on vtotal - if (!Filter.PassLongFilter(cleaner.DatItemFilter.VTotal, VTotal)) - return false; - - // Filter on vbend - if (!Filter.PassLongFilter(cleaner.DatItemFilter.VBEnd, VBEnd)) - return false; - - // Filter on vbstart - if (!Filter.PassLongFilter(cleaner.DatItemFilter.VBStart, VBStart)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Driver.cs b/SabreTools.DatItems/Driver.cs index fa17db12..0e304b10 100644 --- a/SabreTools.DatItems/Driver.cs +++ b/SabreTools.DatItems/Driver.cs @@ -4,7 +4,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -146,40 +145,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on status - if (cleaner.DatItemFilter.SupportStatus.MatchesPositive(SupportStatus.NULL, Status) == false) - return false; - if (cleaner.DatItemFilter.SupportStatus.MatchesNegative(SupportStatus.NULL, Status) == true) - return false; - - // Filter on emulation - if (cleaner.DatItemFilter.EmulationStatus.MatchesPositive(SupportStatus.NULL, Emulation) == false) - return false; - if (cleaner.DatItemFilter.EmulationStatus.MatchesNegative(SupportStatus.NULL, Emulation) == true) - return false; - - // Filter on cocktail - if (cleaner.DatItemFilter.CocktailStatus.MatchesPositive(SupportStatus.NULL, Cocktail) == false) - return false; - if (cleaner.DatItemFilter.CocktailStatus.MatchesNegative(SupportStatus.NULL, Cocktail) == true) - return false; - - // Filter on savestate - if (cleaner.DatItemFilter.SaveStateStatus.MatchesPositive(Supported.NULL, SaveState) == false) - return false; - if (cleaner.DatItemFilter.SaveStateStatus.MatchesNegative(Supported.NULL, SaveState) == true) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Extension.cs b/SabreTools.DatItems/Extension.cs index d17de568..2ba4cb23 100644 --- a/SabreTools.DatItems/Extension.cs +++ b/SabreTools.DatItems/Extension.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -106,20 +105,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Extension_Name, Name)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Feature.cs b/SabreTools.DatItems/Feature.cs index 791f83e1..ed62fab4 100644 --- a/SabreTools.DatItems/Feature.cs +++ b/SabreTools.DatItems/Feature.cs @@ -4,7 +4,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -128,34 +127,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on type - if (cleaner.DatItemFilter.FeatureType.MatchesPositive(FeatureType.NULL, Type) == false) - return false; - if (cleaner.DatItemFilter.FeatureType.MatchesNegative(FeatureType.NULL, Type) == true) - return false; - - // Filter on status - if (cleaner.DatItemFilter.FeatureStatus.MatchesPositive(FeatureStatus.NULL, Status) == false) - return false; - if (cleaner.DatItemFilter.FeatureStatus.MatchesNegative(FeatureStatus.NULL, Status) == true) - return false; - - // Filter on overall - if (cleaner.DatItemFilter.FeatureOverall.MatchesPositive(FeatureStatus.NULL, Overall) == false) - return false; - if (cleaner.DatItemFilter.FeatureOverall.MatchesNegative(FeatureStatus.NULL, Overall) == true) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Info.cs b/SabreTools.DatItems/Info.cs index b44cf3bb..4dbf2e22 100644 --- a/SabreTools.DatItems/Info.cs +++ b/SabreTools.DatItems/Info.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -117,24 +116,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on info value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Value, Value)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Input.cs b/SabreTools.DatItems/Input.cs index 3650bfec..34c25d82 100644 --- a/SabreTools.DatItems/Input.cs +++ b/SabreTools.DatItems/Input.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -174,42 +173,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on service - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Service, Service)) - return false; - - // Filter on tilt - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Tilt, Tilt)) - return false; - - // Filter on players - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Players, Players)) - return false; - - // Filter on coins - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Coins, Coins)) - return false; - - // Filter on individual controls - if (ControlsSpecified) - { - foreach (Control control in Controls) - { - if (!control.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Instance.cs b/SabreTools.DatItems/Instance.cs index 2b6593ce..df898e38 100644 --- a/SabreTools.DatItems/Instance.cs +++ b/SabreTools.DatItems/Instance.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -116,25 +115,7 @@ namespace SabreTools.DatItems #endregion #region Filtering - - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Instance_Name, Name)) - return false; - - // Filter on brief name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Instance_BriefName, BriefName)) - return false; - - return true; - } - + /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Location.cs b/SabreTools.DatItems/Location.cs index ec54e155..1529862c 100644 --- a/SabreTools.DatItems/Location.cs +++ b/SabreTools.DatItems/Location.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -137,28 +136,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Location_Name, Name)) - return false; - - // Filter on number - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Location_Number, Number)) - return false; - - // Filter on inverted - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Location_Inverted, Inverted)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Machine.cs b/SabreTools.DatItems/Machine.cs index 0dc4a009..2f8d580c 100644 --- a/SabreTools.DatItems/Machine.cs +++ b/SabreTools.DatItems/Machine.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -567,196 +566,6 @@ namespace SabreTools.DatItems #region Filtering - /// - /// Check to see if a Machine passes the filter - /// - /// Cleaner containing filters to check against - /// True if the item passed the filter, false otherwise - public bool PassesFilter(Cleaner cleaner) - { - #region Common - - // Machine_Name - bool passes = Filter.PassStringFilter(cleaner.MachineFilter.Name, Name); - if (cleaner.MachineFilter.IncludeOfInGame) - { - passes |= Filter.PassStringFilter(cleaner.MachineFilter.Name, CloneOf); - passes |= Filter.PassStringFilter(cleaner.MachineFilter.Name, RomOf); - } - if (!passes) - return false; - - // Machine_Comment - if (!Filter.PassStringFilter(cleaner.MachineFilter.Comment, Comment)) - return false; - - // Machine_Description - if (!Filter.PassStringFilter(cleaner.MachineFilter.Description, Description)) - return false; - - // Machine_Year - if (!Filter.PassStringFilter(cleaner.MachineFilter.Year, Year)) - return false; - - // Machine_Manufacturer - if (!Filter.PassStringFilter(cleaner.MachineFilter.Manufacturer, Manufacturer)) - return false; - - // Machine_Publisher - if (!Filter.PassStringFilter(cleaner.MachineFilter.Publisher, Publisher)) - return false; - - // Machine_Category - if (!Filter.PassStringFilter(cleaner.MachineFilter.Category, Category)) - return false; - - // Machine_RomOf - if (!Filter.PassStringFilter(cleaner.MachineFilter.RomOf, RomOf)) - return false; - - // Machine_CloneOf - if (!Filter.PassStringFilter(cleaner.MachineFilter.CloneOf, CloneOf)) - return false; - - // Machine_SampleOf - if (!Filter.PassStringFilter(cleaner.MachineFilter.SampleOf, SampleOf)) - return false; - - // Machine_Type - if (cleaner.MachineFilter.Type.MatchesPositive(0x0, MachineType) == false) - return false; - if (cleaner.MachineFilter.Type.MatchesNegative(0x0, MachineType) == true) - return false; - - #endregion - - #region AttractMode - - // Machine_Players - if (!Filter.PassStringFilter(cleaner.MachineFilter.Players, Players)) - return false; - - // Machine_Rotation - if (!Filter.PassStringFilter(cleaner.MachineFilter.Rotation, Rotation)) - return false; - - // Machine_Control - if (!Filter.PassStringFilter(cleaner.MachineFilter.Control, Control)) - return false; - - // Machine_Status - if (!Filter.PassStringFilter(cleaner.MachineFilter.Status, Status)) - return false; - - // Machine_DisplayCount - if (!Filter.PassStringFilter(cleaner.MachineFilter.DisplayCount, DisplayCount)) - return false; - - // Machine_DisplayType - if (!Filter.PassStringFilter(cleaner.MachineFilter.DisplayType, DisplayType)) - return false; - - // Machine_Buttons - if (!Filter.PassStringFilter(cleaner.MachineFilter.Buttons, Buttons)) - return false; - - #endregion - - #region ListXML - - // Machine_SourceFile - if (!Filter.PassStringFilter(cleaner.MachineFilter.SourceFile, SourceFile)) - return false; - - // Machine_Runnable - if (cleaner.MachineFilter.Runnable.MatchesPositive(Runnable.NULL, Runnable) == false) - return false; - if (cleaner.MachineFilter.Runnable.MatchesNegative(Runnable.NULL, Runnable) == true) - return false; - - #endregion - - #region Logiqx - - // Machine_Board - if (!Filter.PassStringFilter(cleaner.MachineFilter.Board, Board)) - return false; - - // Machine_RebuildTo - if (!Filter.PassStringFilter(cleaner.MachineFilter.RebuildTo, RebuildTo)) - return false; - - #endregion - - #region Logiqx EmuArc - - // Machine_TitleID - if (!Filter.PassStringFilter(cleaner.MachineFilter.TitleID, TitleID)) - return false; - - // Machine_Developer - if (!Filter.PassStringFilter(cleaner.MachineFilter.Developer, Developer)) - return false; - - // Machine_Genre - if (!Filter.PassStringFilter(cleaner.MachineFilter.Genre, Genre)) - return false; - - // Machine_Subgenre - if (!Filter.PassStringFilter(cleaner.MachineFilter.Subgenre, Subgenre)) - return false; - - // Machine_Ratings - if (!Filter.PassStringFilter(cleaner.MachineFilter.Ratings, Ratings)) - return false; - - // Machine_Score - if (!Filter.PassStringFilter(cleaner.MachineFilter.Score, Score)) - return false; - - // Machine_Enabled - if (!Filter.PassStringFilter(cleaner.MachineFilter.Enabled, Enabled)) - return false; - - // Machine_CRC - if (!Filter.PassBoolFilter(cleaner.MachineFilter.CRC, Crc)) - return false; - - // Machine_RelatedTo - if (!Filter.PassStringFilter(cleaner.MachineFilter.RelatedTo, RelatedTo)) - return false; - - #endregion - - #region OpenMSX - - // Machine_GenMSXID - if (!Filter.PassStringFilter(cleaner.MachineFilter.GenMSXID, GenMSXID)) - return false; - - // Machine_System - if (!Filter.PassStringFilter(cleaner.MachineFilter.System, System)) - return false; - - // Machine_Country - if (!Filter.PassStringFilter(cleaner.MachineFilter.Country, Country)) - return false; - - #endregion - - #region SoftwareList - - // Machine_Supported - if (cleaner.MachineFilter.Supported.MatchesPositive(Supported.NULL, Supported) == false) - return false; - if (cleaner.MachineFilter.Supported.MatchesNegative(Supported.NULL, Supported) == true) - return false; - - #endregion // SoftwareList - - return true; - } - /// /// Remove fields from the Machine /// diff --git a/SabreTools.DatItems/Media.cs b/SabreTools.DatItems/Media.cs index f38d75b1..3929b54f 100644 --- a/SabreTools.DatItems/Media.cs +++ b/SabreTools.DatItems/Media.cs @@ -7,7 +7,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.FileTypes; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -324,36 +323,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on MD5 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.MD5, MD5)) - return false; - - // Filter on SHA-1 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA1, SHA1)) - return false; - - // Filter on SHA-256 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA256, SHA256)) - return false; - - // Filter on SpamSum - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SpamSum, SpamSum)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Part.cs b/SabreTools.DatItems/Part.cs index 166ed481..77de5673 100644 --- a/SabreTools.DatItems/Part.cs +++ b/SabreTools.DatItems/Part.cs @@ -5,7 +5,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -144,34 +143,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on part name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Part_Name, Name)) - return false; - - // Filter on part interface - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Part_Interface, Interface)) - return false; - - // Filter on features - if (FeaturesSpecified) - { - foreach (PartFeature partFeature in Features) - { - if (!partFeature.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/PartFeature.cs b/SabreTools.DatItems/PartFeature.cs index d88ce9d3..c32e3ef7 100644 --- a/SabreTools.DatItems/PartFeature.cs +++ b/SabreTools.DatItems/PartFeature.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -117,24 +116,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Part_Feature_Name, Name)) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Part_Feature_Value, Value)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Port.cs b/SabreTools.DatItems/Port.cs index 2ed1148c..cc9b9b85 100644 --- a/SabreTools.DatItems/Port.cs +++ b/SabreTools.DatItems/Port.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -124,30 +123,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Tag, Tag)) - return false; - - // Filter on individual analogs - if (AnalogsSpecified) - { - foreach (Analog analog in Analogs) - { - if (!analog.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/RamOption.cs b/SabreTools.DatItems/RamOption.cs index 5d0798ae..f074481f 100644 --- a/SabreTools.DatItems/RamOption.cs +++ b/SabreTools.DatItems/RamOption.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -132,28 +131,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Default, Default)) - return false; - - // Filter on content - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Content, Content)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Release.cs b/SabreTools.DatItems/Release.cs index eac72d9c..a5638618 100644 --- a/SabreTools.DatItems/Release.cs +++ b/SabreTools.DatItems/Release.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -162,36 +161,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on region - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Region, Region)) - return false; - - // Filter on language - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Language, Language)) - return false; - - // Filter on date - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Date, Date)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Default, Default)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Rom.cs b/SabreTools.DatItems/Rom.cs index fc12b397..0df3af7d 100644 --- a/SabreTools.DatItems/Rom.cs +++ b/SabreTools.DatItems/Rom.cs @@ -8,7 +8,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.FileTypes; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -798,162 +797,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - #region Common - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on bios - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Bios, Bios)) - return false; - - // Filter on rom size - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Size, Size)) - return false; - - // Filter on CRC - if (!Filter.PassStringFilter(cleaner.DatItemFilter.CRC, CRC)) - return false; - - // Filter on MD5 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.MD5, MD5)) - return false; - -#if NET_FRAMEWORK - // Filter on RIPEMD160 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.RIPEMD160, RIPEMD160)) - return false; -#endif - - // Filter on SHA-1 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA1, SHA1)) - return false; - - // Filter on SHA-256 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA256, SHA256)) - return false; - - // Filter on SHA-384 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA384, SHA384)) - return false; - - // Filter on SHA-512 - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SHA512, SHA512)) - return false; - - // Filter on SpamSum - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SpamSum, SpamSum)) - return false; - - // Filter on merge tag - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Merge, MergeTag)) - return false; - - // Filter on region - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Region, Region)) - return false; - - // Filter on offset - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Offset, Offset)) - return false; - - // Filter on date - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Date, Date)) - return false; - - // Filter on status - if (cleaner.DatItemFilter.Status.MatchesPositive(ItemStatus.NULL, ItemStatus) == false) - return false; - if (cleaner.DatItemFilter.Status.MatchesNegative(ItemStatus.NULL, ItemStatus) == true) - return false; - - // Filter on optional - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Optional, Optional)) - return false; - - // Filter on inverted - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Inverted, Inverted)) - return false; - - #endregion - - #region AttractMode - - // Filter on alt name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.AltName, AltName)) - return false; - - // Filter on alt title - if (!Filter.PassStringFilter(cleaner.DatItemFilter.AltTitle, AltTitle)) - return false; - - #endregion - - #region OpenMSX - - // Filter on original - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Original, Original?.Content)) - return false; - - // Filter on OpenMSX subtype - if (cleaner.DatItemFilter.OpenMSXSubType.MatchesPositive(OpenMSXSubType.NULL, OpenMSXSubType) == false) - return false; - if (cleaner.DatItemFilter.OpenMSXSubType.MatchesNegative(OpenMSXSubType.NULL, OpenMSXSubType) == true) - return false; - - // Filter on OpenMSX type - if (!Filter.PassStringFilter(cleaner.DatItemFilter.OpenMSXType, OpenMSXType)) - return false; - - // Filter on remark - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Remark, Remark)) - return false; - - // Filter on boot - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Boot, Boot)) - return false; - - #endregion - - #region SoftwareList - - // Filter on load flag - if (cleaner.DatItemFilter.LoadFlag.MatchesPositive(LoadFlag.NULL, LoadFlag) == false) - return false; - if (cleaner.DatItemFilter.LoadFlag.MatchesNegative(LoadFlag.NULL, LoadFlag) == true) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Value, Value)) - return false; - - // Filter on DataArea - if (DataAreaSpecified) - { - if (!DataArea.PassesFilter(cleaner, true)) - return false; - } - - // Filter on Part - if (PartSpecified) - { - if (!Part.PassesFilter(cleaner, true)) - return false; - } - - #endregion - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Sample.cs b/SabreTools.DatItems/Sample.cs index 00bfc904..5823673a 100644 --- a/SabreTools.DatItems/Sample.cs +++ b/SabreTools.DatItems/Sample.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -106,20 +105,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Setting.cs b/SabreTools.DatItems/Setting.cs index 9d061722..c397dc80 100644 --- a/SabreTools.DatItems/Setting.cs +++ b/SabreTools.DatItems/Setting.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -166,38 +165,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Setting_Name, Name)) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Setting_Value, Value)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.Setting_Default, Default)) - return false; - - // Filter on individual conditions - if (ConditionsSpecified) - { - foreach (Condition condition in Conditions) - { - if (!condition.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/SharedFeature.cs b/SabreTools.DatItems/SharedFeature.cs index 25dfd7db..e7ea4dbb 100644 --- a/SabreTools.DatItems/SharedFeature.cs +++ b/SabreTools.DatItems/SharedFeature.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -117,24 +116,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on value - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Value, Value)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Slot.cs b/SabreTools.DatItems/Slot.cs index 5ac25d9f..6ba1b124 100644 --- a/SabreTools.DatItems/Slot.cs +++ b/SabreTools.DatItems/Slot.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Xml.Serialization; using SabreTools.Core; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -138,30 +137,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on individual slot options - if (SlotOptionsSpecified) - { - foreach (SlotOption slotOption in SlotOptions) - { - if (!slotOption.PassesFilter(cleaner, true)) - return false; - } - } - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/SlotOption.cs b/SabreTools.DatItems/SlotOption.cs index 5d4973bc..e1c2918a 100644 --- a/SabreTools.DatItems/SlotOption.cs +++ b/SabreTools.DatItems/SlotOption.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -134,28 +133,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SlotOption_Name, Name)) - return false; - - // Filter on device name - if (!Filter.PassStringFilter(cleaner.DatItemFilter.SlotOption_DeviceName, DeviceName)) - return false; - - // Filter on default - if (!Filter.PassBoolFilter(cleaner.DatItemFilter.SlotOption_Default, Default)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/SoftwareList.cs b/SabreTools.DatItems/SoftwareList.cs index 92d24a3e..05f27ee0 100644 --- a/SabreTools.DatItems/SoftwareList.cs +++ b/SabreTools.DatItems/SoftwareList.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; using Newtonsoft.Json.Converters; @@ -136,30 +135,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on item name - if (!Filtering.Filter.PassStringFilter(cleaner.DatItemFilter.Name, Name)) - return false; - - // Filter on status - if (cleaner.DatItemFilter.SoftwareListStatus.MatchesPositive(SoftwareListStatus.NULL, Status) == false) - return false; - if (cleaner.DatItemFilter.SoftwareListStatus.MatchesNegative(SoftwareListStatus.NULL, Status) == true) - return false; - - // Filter on filter - if (!Filtering.Filter.PassStringFilter(cleaner.DatItemFilter.Filter, Filter)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatItems/Sound.cs b/SabreTools.DatItems/Sound.cs index 67f5c024..bf734ce9 100644 --- a/SabreTools.DatItems/Sound.cs +++ b/SabreTools.DatItems/Sound.cs @@ -5,7 +5,6 @@ using System.Xml.Serialization; using SabreTools.Core; using SabreTools.Core.Tools; -using SabreTools.Filtering; using Newtonsoft.Json; namespace SabreTools.DatItems @@ -97,20 +96,6 @@ namespace SabreTools.DatItems #region Filtering - /// - public override bool PassesFilter(Cleaner cleaner, bool sub = false) - { - // Check common fields first - if (!base.PassesFilter(cleaner, sub)) - return false; - - // Filter on channels - if (!Filter.PassLongFilter(cleaner.DatItemFilter.Channels, Channels)) - return false; - - return true; - } - /// public override void RemoveFields( List datItemFields, diff --git a/SabreTools.DatTools/Modification.cs b/SabreTools.DatTools/Modification.cs index 17c030ad..311442ba 100644 --- a/SabreTools.DatTools/Modification.cs +++ b/SabreTools.DatTools/Modification.cs @@ -214,7 +214,7 @@ namespace SabreTools.DatTools continue; // If the rom doesn't pass the filter, mark for removal - if (!item.PassesFilter(cleaner)) + if (!cleaner.PassesFilters(item)) { item.Remove = true; diff --git a/SabreTools.Filtering/Cleaner.cs b/SabreTools.Filtering/Cleaner.cs index c1aaca03..3011dafe 100644 --- a/SabreTools.Filtering/Cleaner.cs +++ b/SabreTools.Filtering/Cleaner.cs @@ -330,7 +330,1330 @@ namespace SabreTools.Filtering #region Filtering + /// + /// Check to see if a DatItem passes the filters + /// + /// DatItem to check + /// True if this is a subitem, false otherwise + /// True if the item passed the filter, false otherwise + /// TODO: Split this somehow + /// TODO: Name can be made into a common one if name exists + public bool PassesFilters(DatItem datItem, bool sub = false) + { + if (datItem == null) + return false; + + #region Common + + // Filter on machine fields + if (!PassesFilters(datItem.Machine)) + return false; + + // Filters for if we're a top-level item + if (!sub) + { + // Filter on item type + if (!Filter.PassStringFilter(DatItemFilter.Type, datItem.ItemType.ToString())) + return false; + } + + #endregion + #region Adjuster + + if (datItem is Adjuster adjuster) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, adjuster.Name)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.Default, adjuster.Default)) + return false; + + // Filter on individual conditions + if (adjuster.ConditionsSpecified) + { + foreach (Condition condition in adjuster.Conditions) + { + if (!PassesFilters(condition, true)) + return false; + } + } + } + + #endregion + + #region Analog + + else if (datItem is Analog analog) + { + // Filter on mask + if (!Filter.PassStringFilter(DatItemFilter.Analog_Mask, analog.Mask)) + return false; + } + + #endregion + + #region Archive + + else if (datItem is Archive archive) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, archive.Name)) + return false; + } + + #endregion + + #region BiosSet + + else if (datItem is BiosSet biosSet) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, biosSet.Name)) + return false; + + // Filter on description + if (!Filter.PassStringFilter(DatItemFilter.Description, biosSet.Description)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.Default, biosSet.Default)) + return false; + } + + #endregion + + #region Chip + + else if (datItem is Chip chip) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, chip.Name)) + return false; + + // DatItem_Tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, chip.Tag)) + return false; + + // DatItem_ChipType + if (DatItemFilter.ChipType.MatchesPositive(ChipType.NULL, chip.ChipType) == false) + return false; + if (DatItemFilter.ChipType.MatchesNegative(ChipType.NULL, chip.ChipType) == true) + return false; + + // DatItem_Clock + if (!Filter.PassLongFilter(DatItemFilter.Clock, chip.Clock)) + return false; + } + + #endregion + + #region Condition + + else if (datItem is Condition condition) + { + if (sub) + { + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Condition_Tag, condition.Tag)) + return false; + + // Filter on mask + if (!Filter.PassStringFilter(DatItemFilter.Condition_Mask, condition.Mask)) + return false; + + // Filter on relation + if (DatItemFilter.Condition_Relation.MatchesPositive(Relation.NULL, condition.Relation) == false) + return false; + if (DatItemFilter.Condition_Relation.MatchesNegative(Relation.NULL, condition.Relation) == true) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Condition_Value, condition.Value)) + return false; + } + else + { + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, condition.Tag)) + return false; + + // Filter on mask + if (!Filter.PassStringFilter(DatItemFilter.Mask, condition.Mask)) + return false; + + // Filter on relation + if (DatItemFilter.Relation.MatchesPositive(Relation.NULL, condition.Relation) == false) + return false; + if (DatItemFilter.Relation.MatchesNegative(Relation.NULL, condition.Relation) == true) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Value, condition.Value)) + return false; + } + } + + #endregion + + #region Configuration + + else if (datItem is Configuration configuration) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, configuration.Name)) + return false; + + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, configuration.Tag)) + return false; + + // Filter on mask + if (!Filter.PassStringFilter(DatItemFilter.Mask, configuration.Mask)) + return false; + + // Filter on individual conditions + if (configuration.ConditionsSpecified) + { + foreach (Condition subCondition in configuration.Conditions) + { + if (!PassesFilters(subCondition, true)) + return false; + } + } + + // Filter on individual locations + if (configuration.LocationsSpecified) + { + foreach (Location subLocation in configuration.Locations) + { + if (!PassesFilters(subLocation, true)) + return false; + } + } + + // Filter on individual conditions + if (configuration.SettingsSpecified) + { + foreach (Setting subSetting in configuration.Settings) + { + if (!PassesFilters(subSetting, true)) + return false; + } + } + } + + #endregion + + #region Control + + else if (datItem is Control control) + { + // Filter on control type + if (DatItemFilter.Control_Type.MatchesPositive(ControlType.NULL, control.ControlType) == false) + return false; + if (DatItemFilter.Control_Type.MatchesNegative(ControlType.NULL, control.ControlType) == true) + return false; + + // Filter on player + if (!Filter.PassLongFilter(DatItemFilter.Control_Player, control.Player)) + return false; + + // Filter on buttons + if (!Filter.PassLongFilter(DatItemFilter.Control_Buttons, control.Buttons)) + return false; + + // Filter on reqbuttons + if (!Filter.PassLongFilter(DatItemFilter.Control_ReqButtons, control.RequiredButtons)) + return false; + + // Filter on minimum + if (!Filter.PassLongFilter(DatItemFilter.Control_Minimum, control.Minimum)) + return false; + + // Filter on maximum + if (!Filter.PassLongFilter(DatItemFilter.Control_Maximum, control.Maximum)) + return false; + + // Filter on sensitivity + if (!Filter.PassLongFilter(DatItemFilter.Control_Sensitivity, control.Sensitivity)) + return false; + + // Filter on keydelta + if (!Filter.PassLongFilter(DatItemFilter.Control_KeyDelta, control.KeyDelta)) + return false; + + // Filter on reverse + if (!Filter.PassBoolFilter(DatItemFilter.Control_Reverse, control.Reverse)) + return false; + + // Filter on ways + if (!Filter.PassStringFilter(DatItemFilter.Control_Ways, control.Ways)) + return false; + + // Filter on ways2 + if (!Filter.PassStringFilter(DatItemFilter.Control_Ways2, control.Ways2)) + return false; + + // Filter on ways3 + if (!Filter.PassStringFilter(DatItemFilter.Control_Ways3, control.Ways3)) + return false; + } + + #endregion + + #region DataArea + + else if (datItem is DataArea dataArea) + { + // Filter on area name + if (!Filter.PassStringFilter(DatItemFilter.AreaName, dataArea.Name)) + return false; + + // Filter on area size + if (!Filter.PassLongFilter(DatItemFilter.AreaSize, dataArea.Size)) + return false; + + // Filter on area width + if (!Filter.PassLongFilter(DatItemFilter.AreaWidth, dataArea.Width)) + return false; + + // Filter on area endianness + if (DatItemFilter.AreaEndianness.MatchesPositive(Endianness.NULL, dataArea.Endianness) == false) + return false; + if (DatItemFilter.AreaEndianness.MatchesNegative(Endianness.NULL, dataArea.Endianness) == true) + return false; + } + + #endregion + + #region Device + + else if (datItem is Device device) + { + // Filter on device type + if (DatItemFilter.DeviceType.MatchesPositive(DeviceType.NULL, device.DeviceType) == false) + return false; + if (DatItemFilter.DeviceType.MatchesNegative(DeviceType.NULL, device.DeviceType) == true) + return false; + + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, device.Tag)) + return false; + + // Filter on fixed image + if (!Filter.PassStringFilter(DatItemFilter.FixedImage, device.FixedImage)) + return false; + + // Filter on mandatory + if (!Filter.PassLongFilter(DatItemFilter.Mandatory, device.Mandatory)) + return false; + + // Filter on interface + if (!Filter.PassStringFilter(DatItemFilter.Interface, device.Interface)) + return false; + + // Filter on individual instances + if (device.InstancesSpecified) + { + foreach (Instance subInstance in device.Instances) + { + if (!PassesFilters(subInstance, true)) + return false; + } + } + + // Filter on individual extensions + if (device.ExtensionsSpecified) + { + foreach (Extension subExtension in device.Extensions) + { + if (!PassesFilters(subExtension, true)) + return false; + } + } + } + + #endregion + + #region DeviceReference + + else if (datItem is DeviceReference deviceReference) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, deviceReference.Name)) + return false; + } + + #endregion + + #region DipSwitch + + else if (datItem is DipSwitch dipSwitch) + { + #region Common + + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, dipSwitch.Name)) + return false; + + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, dipSwitch.Tag)) + return false; + + // Filter on mask + if (!Filter.PassStringFilter(DatItemFilter.Mask, dipSwitch.Mask)) + return false; + + // Filter on individual conditions + if (dipSwitch.ConditionsSpecified) + { + foreach (Condition subCondition in dipSwitch.Conditions) + { + if (!PassesFilters(subCondition, true)) + return false; + } + } + + // Filter on individual locations + if (dipSwitch.LocationsSpecified) + { + foreach (Location subLocation in dipSwitch.Locations) + { + if (!PassesFilters(subLocation, true)) + return false; + } + } + + // Filter on individual conditions + if (dipSwitch.ValuesSpecified) + { + foreach (Setting subValue in dipSwitch.Values) + { + if (!PassesFilters(subValue, true)) + return false; + } + } + + #endregion + + #region SoftwareList + + // Filter on Part + if (dipSwitch.PartSpecified) + { + if (!PassesFilters(dipSwitch.Part, true)) + return false; + } + + #endregion + } + + #endregion + + #region Disk + + else if (datItem is Disk disk) + { + #region Common + + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, disk.Name)) + return false; + + // Filter on MD5 + if (!Filter.PassStringFilter(DatItemFilter.MD5, disk.MD5)) + return false; + + // Filter on SHA-1 + if (!Filter.PassStringFilter(DatItemFilter.SHA1, disk.SHA1)) + return false; + + // Filter on merge tag + if (!Filter.PassStringFilter(DatItemFilter.Merge, disk.MergeTag)) + return false; + + // Filter on region + if (!Filter.PassStringFilter(DatItemFilter.Region, disk.Region)) + return false; + + // Filter on index + if (!Filter.PassStringFilter(DatItemFilter.Index, disk.Index)) + return false; + + // Filter on writable + if (!Filter.PassBoolFilter(DatItemFilter.Writable, disk.Writable)) + return false; + + // Filter on status + if (DatItemFilter.Status.MatchesPositive(ItemStatus.NULL, disk.ItemStatus) == false) + return false; + if (DatItemFilter.Status.MatchesNegative(ItemStatus.NULL, disk.ItemStatus) == true) + return false; + + // Filter on optional + if (!Filter.PassBoolFilter(DatItemFilter.Optional, disk.Optional)) + return false; + + #endregion + + #region SoftwareList + + // Filter on DiskArea + if (disk.DiskAreaSpecified) + { + if (!PassesFilters(disk.DiskArea, true)) + return false; + } + + // Filter on Part + if (disk.PartSpecified) + { + if (!PassesFilters(disk.Part, true)) + return false; + } + + #endregion + } + + #endregion + + #region DiskArea + + else if (datItem is DiskArea diskArea) + { + // Filter on area name + if (!Filter.PassStringFilter(DatItemFilter.AreaName, diskArea.Name)) + return false; + } + + #endregion + + #region Display + + else if (datItem is Display display) + { + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, display.Tag)) + return false; + + // Filter on display type + if (DatItemFilter.DisplayType.MatchesPositive(DisplayType.NULL, display.DisplayType) == false) + return false; + if (DatItemFilter.DisplayType.MatchesNegative(DisplayType.NULL, display.DisplayType) == true) + return false; + + // Filter on rotation + if (!Filter.PassLongFilter(DatItemFilter.Rotate, display.Rotate)) + return false; + + // Filter on flipx + if (!Filter.PassBoolFilter(DatItemFilter.FlipX, display.FlipX)) + return false; + + // Filter on width + if (!Filter.PassLongFilter(DatItemFilter.Width, display.Width)) + return false; + + // Filter on height + if (!Filter.PassLongFilter(DatItemFilter.Height, display.Height)) + return false; + + // Filter on refresh + if (!Filter.PassDoubleFilter(DatItemFilter.Refresh, display.Refresh)) + return false; + + // Filter on pixclock + if (!Filter.PassLongFilter(DatItemFilter.PixClock, display.PixClock)) + return false; + + // Filter on htotal + if (!Filter.PassLongFilter(DatItemFilter.HTotal, display.HTotal)) + return false; + + // Filter on hbend + if (!Filter.PassLongFilter(DatItemFilter.HBEnd, display.HBEnd)) + return false; + + // Filter on hbstart + if (!Filter.PassLongFilter(DatItemFilter.HBStart, display.HBStart)) + return false; + + // Filter on vtotal + if (!Filter.PassLongFilter(DatItemFilter.VTotal, display.VTotal)) + return false; + + // Filter on vbend + if (!Filter.PassLongFilter(DatItemFilter.VBEnd, display.VBEnd)) + return false; + + // Filter on vbstart + if (!Filter.PassLongFilter(DatItemFilter.VBStart, display.VBStart)) + return false; + } + + #endregion + + #region Driver + + else if (datItem is Driver driver) + { + // Filter on status + if (DatItemFilter.SupportStatus.MatchesPositive(SupportStatus.NULL, driver.Status) == false) + return false; + if (DatItemFilter.SupportStatus.MatchesNegative(SupportStatus.NULL, driver.Status) == true) + return false; + + // Filter on emulation + if (DatItemFilter.EmulationStatus.MatchesPositive(SupportStatus.NULL, driver.Emulation) == false) + return false; + if (DatItemFilter.EmulationStatus.MatchesNegative(SupportStatus.NULL, driver.Emulation) == true) + return false; + + // Filter on cocktail + if (DatItemFilter.CocktailStatus.MatchesPositive(SupportStatus.NULL, driver.Cocktail) == false) + return false; + if (DatItemFilter.CocktailStatus.MatchesNegative(SupportStatus.NULL, driver.Cocktail) == true) + return false; + + // Filter on savestate + if (DatItemFilter.SaveStateStatus.MatchesPositive(Supported.NULL, driver.SaveState) == false) + return false; + if (DatItemFilter.SaveStateStatus.MatchesNegative(Supported.NULL, driver.SaveState) == true) + return false; + } + + #endregion + + #region Extension + + else if (datItem is Extension extension) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Extension_Name, extension.Name)) + return false; + } + + #endregion + + #region Feature + + else if (datItem is Feature feature) + { + // Filter on type + if (DatItemFilter.FeatureType.MatchesPositive(FeatureType.NULL, feature.Type) == false) + return false; + if (DatItemFilter.FeatureType.MatchesNegative(FeatureType.NULL, feature.Type) == true) + return false; + + // Filter on status + if (DatItemFilter.FeatureStatus.MatchesPositive(FeatureStatus.NULL, feature.Status) == false) + return false; + if (DatItemFilter.FeatureStatus.MatchesNegative(FeatureStatus.NULL, feature.Status) == true) + return false; + + // Filter on overall + if (DatItemFilter.FeatureOverall.MatchesPositive(FeatureStatus.NULL, feature.Overall) == false) + return false; + if (DatItemFilter.FeatureOverall.MatchesNegative(FeatureStatus.NULL, feature.Overall) == true) + return false; + } + + #endregion + + #region Info + + else if (datItem is Info info) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, info.Name)) + return false; + + // Filter on info value + if (!Filter.PassStringFilter(DatItemFilter.Value, info.Value)) + return false; + } + + #endregion + + #region Input + + else if (datItem is Input input) + { + // Filter on service + if (!Filter.PassBoolFilter(DatItemFilter.Service, input.Service)) + return false; + + // Filter on tilt + if (!Filter.PassBoolFilter(DatItemFilter.Tilt, input.Tilt)) + return false; + + // Filter on players + if (!Filter.PassLongFilter(DatItemFilter.Players, input.Players)) + return false; + + // Filter on coins + if (!Filter.PassLongFilter(DatItemFilter.Coins, input.Coins)) + return false; + + // Filter on individual controls + if (input.ControlsSpecified) + { + foreach (Control subControl in input.Controls) + { + if (!PassesFilters(subControl, true)) + return false; + } + } + } + + #endregion + + #region Instance + + else if (datItem is Instance instance) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Instance_Name, instance.Name)) + return false; + + // Filter on brief name + if (!Filter.PassStringFilter(DatItemFilter.Instance_BriefName, instance.BriefName)) + return false; + } + + #endregion + + #region Location + + else if (datItem is Location location) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Location_Name, location.Name)) + return false; + + // Filter on number + if (!Filter.PassLongFilter(DatItemFilter.Location_Number, location.Number)) + return false; + + // Filter on inverted + if (!Filter.PassBoolFilter(DatItemFilter.Location_Inverted, location.Inverted)) + return false; + } + + #endregion + + #region Media + + else if (datItem is Media media) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, media.Name)) + return false; + + // Filter on MD5 + if (!Filter.PassStringFilter(DatItemFilter.MD5, media.MD5)) + return false; + + // Filter on SHA-1 + if (!Filter.PassStringFilter(DatItemFilter.SHA1, media.SHA1)) + return false; + + // Filter on SHA-256 + if (!Filter.PassStringFilter(DatItemFilter.SHA256, media.SHA256)) + return false; + + // Filter on SpamSum + if (!Filter.PassStringFilter(DatItemFilter.SpamSum, media.SpamSum)) + return false; + } + + #endregion + + #region Part + + else if (datItem is Part part) + { + // Filter on part name + if (!Filter.PassStringFilter(DatItemFilter.Part_Name, part.Name)) + return false; + + // Filter on part interface + if (!Filter.PassStringFilter(DatItemFilter.Part_Interface, part.Interface)) + return false; + + // Filter on features + if (part.FeaturesSpecified) + { + foreach (PartFeature subPartFeature in part.Features) + { + if (!PassesFilters(subPartFeature, true)) + return false; + } + } + } + + #endregion + + #region PartFeature + + else if (datItem is PartFeature partFeature) + { + // Filter on name + if (!Filter.PassStringFilter(DatItemFilter.Part_Feature_Name, partFeature.Name)) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Part_Feature_Value, partFeature.Value)) + return false; + } + + #endregion + + #region Port + + else if (datItem is Port port) + { + // Filter on tag + if (!Filter.PassStringFilter(DatItemFilter.Tag, port.Tag)) + return false; + + // Filter on individual analogs + if (port.AnalogsSpecified) + { + foreach (Analog subAnalog in port.Analogs) + { + if (!PassesFilters(subAnalog, true)) + return false; + } + } + } + + #endregion + + #region RamOption + + else if (datItem is RamOption ramOption) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, ramOption.Name)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.Default, ramOption.Default)) + return false; + + // Filter on content + if (!Filter.PassStringFilter(DatItemFilter.Content, ramOption.Content)) + return false; + } + + #endregion + + #region Release + + else if (datItem is Release release) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, release.Name)) + return false; + + // Filter on region + if (!Filter.PassStringFilter(DatItemFilter.Region, release.Region)) + return false; + + // Filter on language + if (!Filter.PassStringFilter(DatItemFilter.Language, release.Language)) + return false; + + // Filter on date + if (!Filter.PassStringFilter(DatItemFilter.Date, release.Date)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.Default, release.Default)) + return false; + } + + #endregion + + #region Rom + + else if (datItem is Rom rom) + { + #region Common + + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, rom.Name)) + return false; + + // Filter on bios + if (!Filter.PassStringFilter(DatItemFilter.Bios, rom.Bios)) + return false; + + // Filter on rom size + if (!Filter.PassLongFilter(DatItemFilter.Size, rom.Size)) + return false; + + // Filter on CRC + if (!Filter.PassStringFilter(DatItemFilter.CRC, rom.CRC)) + return false; + + // Filter on MD5 + if (!Filter.PassStringFilter(DatItemFilter.MD5, rom.MD5)) + return false; + + #if NET_FRAMEWORK + // Filter on RIPEMD160 + if (!Filter.PassStringFilter(DatItemFilter.RIPEMD160, rom.RIPEMD160)) + return false; + #endif + + // Filter on SHA-1 + if (!Filter.PassStringFilter(DatItemFilter.SHA1, rom.SHA1)) + return false; + + // Filter on SHA-256 + if (!Filter.PassStringFilter(DatItemFilter.SHA256, rom.SHA256)) + return false; + + // Filter on SHA-384 + if (!Filter.PassStringFilter(DatItemFilter.SHA384, rom.SHA384)) + return false; + + // Filter on SHA-512 + if (!Filter.PassStringFilter(DatItemFilter.SHA512, rom.SHA512)) + return false; + + // Filter on SpamSum + if (!Filter.PassStringFilter(DatItemFilter.SpamSum, rom.SpamSum)) + return false; + + // Filter on merge tag + if (!Filter.PassStringFilter(DatItemFilter.Merge, rom.MergeTag)) + return false; + + // Filter on region + if (!Filter.PassStringFilter(DatItemFilter.Region, rom.Region)) + return false; + + // Filter on offset + if (!Filter.PassStringFilter(DatItemFilter.Offset, rom.Offset)) + return false; + + // Filter on date + if (!Filter.PassStringFilter(DatItemFilter.Date, rom.Date)) + return false; + + // Filter on status + if (DatItemFilter.Status.MatchesPositive(ItemStatus.NULL, rom.ItemStatus) == false) + return false; + if (DatItemFilter.Status.MatchesNegative(ItemStatus.NULL, rom.ItemStatus) == true) + return false; + + // Filter on optional + if (!Filter.PassBoolFilter(DatItemFilter.Optional, rom.Optional)) + return false; + + // Filter on inverted + if (!Filter.PassBoolFilter(DatItemFilter.Inverted, rom.Inverted)) + return false; + + #endregion + + #region AttractMode + + // Filter on alt name + if (!Filter.PassStringFilter(DatItemFilter.AltName, rom.AltName)) + return false; + + // Filter on alt title + if (!Filter.PassStringFilter(DatItemFilter.AltTitle, rom.AltTitle)) + return false; + + #endregion + + #region OpenMSX + + // Filter on original + if (!Filter.PassStringFilter(DatItemFilter.Original, rom.Original?.Content)) + return false; + + // Filter on OpenMSX subtype + if (DatItemFilter.OpenMSXSubType.MatchesPositive(OpenMSXSubType.NULL, rom.OpenMSXSubType) == false) + return false; + if (DatItemFilter.OpenMSXSubType.MatchesNegative(OpenMSXSubType.NULL, rom.OpenMSXSubType) == true) + return false; + + // Filter on OpenMSX type + if (!Filter.PassStringFilter(DatItemFilter.OpenMSXType, rom.OpenMSXType)) + return false; + + // Filter on remark + if (!Filter.PassStringFilter(DatItemFilter.Remark, rom.Remark)) + return false; + + // Filter on boot + if (!Filter.PassStringFilter(DatItemFilter.Boot, rom.Boot)) + return false; + + #endregion + + #region SoftwareList + + // Filter on load flag + if (DatItemFilter.LoadFlag.MatchesPositive(LoadFlag.NULL, rom.LoadFlag) == false) + return false; + if (DatItemFilter.LoadFlag.MatchesNegative(LoadFlag.NULL, rom.LoadFlag) == true) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Value, rom.Value)) + return false; + + // Filter on DataArea + if (rom.DataAreaSpecified) + { + if (!PassesFilters(rom.DataArea, true)) + return false; + } + + // Filter on Part + if (rom.PartSpecified) + { + if (!PassesFilters(rom.Part, true)) + return false; + } + + #endregion + } + + #endregion + + #region Sample + + else if (datItem is Sample sample) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, sample.Name)) + return false; + } + + #endregion + + #region Setting + + else if (datItem is Setting setting) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Setting_Name, setting.Name)) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Setting_Value, setting.Value)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.Setting_Default, setting.Default)) + return false; + + // Filter on individual conditions + if (setting.ConditionsSpecified) + { + foreach (Condition subCondition in setting.Conditions) + { + if (!PassesFilters(subCondition, true)) + return false; + } + } + } + + #endregion + + #region SharedFeature + + else if (datItem is SharedFeature sharedFeature) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, sharedFeature.Name)) + return false; + + // Filter on value + if (!Filter.PassStringFilter(DatItemFilter.Value, sharedFeature.Value)) + return false; + } + + #endregion + + #region Slot + + else if (datItem is Slot slot) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, slot.Name)) + return false; + + // Filter on individual slot options + if (slot.SlotOptionsSpecified) + { + foreach (SlotOption subSlotOption in slot.SlotOptions) + { + if (!PassesFilters(subSlotOption, true)) + return false; + } + } + } + + #endregion + + #region SlotOption + + else if (datItem is SlotOption slotOption) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.SlotOption_Name, slotOption.Name)) + return false; + + // Filter on device name + if (!Filter.PassStringFilter(DatItemFilter.SlotOption_DeviceName, slotOption.DeviceName)) + return false; + + // Filter on default + if (!Filter.PassBoolFilter(DatItemFilter.SlotOption_Default, slotOption.Default)) + return false; + } + + #endregion + + #region SoftwareList + + else if (datItem is SoftwareList softwareList) + { + // Filter on item name + if (!Filter.PassStringFilter(DatItemFilter.Name, softwareList.Name)) + return false; + + // Filter on status + if (DatItemFilter.SoftwareListStatus.MatchesPositive(SoftwareListStatus.NULL, softwareList.Status) == false) + return false; + if (DatItemFilter.SoftwareListStatus.MatchesNegative(SoftwareListStatus.NULL, softwareList.Status) == true) + return false; + + // Filter on filter + if (!Filter.PassStringFilter(DatItemFilter.Filter, softwareList.Filter)) + return false; + } + + #endregion + + #region Sound + + else if (datItem is Sound sound) + { + // Filter on channels + if (!Filter.PassLongFilter(DatItemFilter.Channels, sound.Channels)) + return false; + } + + #endregion + + return true; + } + + /// + /// Check to see if a Machine passes the filters + /// + /// Machine to check + /// True if the machine passed the filter, false otherwise + public bool PassesFilters(Machine machine) + { + if (machine == null) + return false; + + #region Common + + // Machine_Name + bool passes = Filter.PassStringFilter(MachineFilter.Name, machine.Name); + if (MachineFilter.IncludeOfInGame) + { + passes |= Filter.PassStringFilter(MachineFilter.Name, machine.CloneOf); + passes |= Filter.PassStringFilter(MachineFilter.Name, machine.RomOf); + } + if (!passes) + return false; + + // Machine_Comment + if (!Filter.PassStringFilter(MachineFilter.Comment, machine.Comment)) + return false; + + // Machine_Description + if (!Filter.PassStringFilter(MachineFilter.Description, machine.Description)) + return false; + + // Machine_Year + if (!Filter.PassStringFilter(MachineFilter.Year, machine.Year)) + return false; + + // Machine_Manufacturer + if (!Filter.PassStringFilter(MachineFilter.Manufacturer, machine.Manufacturer)) + return false; + + // Machine_Publisher + if (!Filter.PassStringFilter(MachineFilter.Publisher, machine.Publisher)) + return false; + + // Machine_Category + if (!Filter.PassStringFilter(MachineFilter.Category, machine.Category)) + return false; + + // Machine_RomOf + if (!Filter.PassStringFilter(MachineFilter.RomOf, machine.RomOf)) + return false; + + // Machine_CloneOf + if (!Filter.PassStringFilter(MachineFilter.CloneOf, machine.CloneOf)) + return false; + + // Machine_SampleOf + if (!Filter.PassStringFilter(MachineFilter.SampleOf, machine.SampleOf)) + return false; + + // Machine_Type + if (MachineFilter.Type.MatchesPositive(0x0, machine.MachineType) == false) + return false; + if (MachineFilter.Type.MatchesNegative(0x0, machine.MachineType) == true) + return false; + + #endregion + + #region AttractMode + + // Machine_Players + if (!Filter.PassStringFilter(MachineFilter.Players, machine.Players)) + return false; + + // Machine_Rotation + if (!Filter.PassStringFilter(MachineFilter.Rotation, machine.Rotation)) + return false; + + // Machine_Control + if (!Filter.PassStringFilter(MachineFilter.Control, machine.Control)) + return false; + + // Machine_Status + if (!Filter.PassStringFilter(MachineFilter.Status, machine.Status)) + return false; + + // Machine_DisplayCount + if (!Filter.PassStringFilter(MachineFilter.DisplayCount, machine.DisplayCount)) + return false; + + // Machine_DisplayType + if (!Filter.PassStringFilter(MachineFilter.DisplayType, machine.DisplayType)) + return false; + + // Machine_Buttons + if (!Filter.PassStringFilter(MachineFilter.Buttons, machine.Buttons)) + return false; + + #endregion + + #region ListXML + + // Machine_SourceFile + if (!Filter.PassStringFilter(MachineFilter.SourceFile, machine.SourceFile)) + return false; + + // Machine_Runnable + if (MachineFilter.Runnable.MatchesPositive(Runnable.NULL, machine.Runnable) == false) + return false; + if (MachineFilter.Runnable.MatchesNegative(Runnable.NULL, machine.Runnable) == true) + return false; + + #endregion + + #region Logiqx + + // Machine_Board + if (!Filter.PassStringFilter(MachineFilter.Board, machine.Board)) + return false; + + // Machine_RebuildTo + if (!Filter.PassStringFilter(MachineFilter.RebuildTo, machine.RebuildTo)) + return false; + + #endregion + + #region Logiqx EmuArc + + // Machine_TitleID + if (!Filter.PassStringFilter(MachineFilter.TitleID, machine.TitleID)) + return false; + + // Machine_Developer + if (!Filter.PassStringFilter(MachineFilter.Developer, machine.Developer)) + return false; + + // Machine_Genre + if (!Filter.PassStringFilter(MachineFilter.Genre, machine.Genre)) + return false; + + // Machine_Subgenre + if (!Filter.PassStringFilter(MachineFilter.Subgenre, machine.Subgenre)) + return false; + + // Machine_Ratings + if (!Filter.PassStringFilter(MachineFilter.Ratings, machine.Ratings)) + return false; + + // Machine_Score + if (!Filter.PassStringFilter(MachineFilter.Score, machine.Score)) + return false; + + // Machine_Enabled + if (!Filter.PassStringFilter(MachineFilter.Enabled, machine.Enabled)) + return false; + + // Machine_CRC + if (!Filter.PassBoolFilter(MachineFilter.CRC, machine.Crc)) + return false; + + // Machine_RelatedTo + if (!Filter.PassStringFilter(MachineFilter.RelatedTo, machine.RelatedTo)) + return false; + + #endregion + + #region OpenMSX + + // Machine_GenMSXID + if (!Filter.PassStringFilter(MachineFilter.GenMSXID, machine.GenMSXID)) + return false; + + // Machine_System + if (!Filter.PassStringFilter(MachineFilter.System, machine.System)) + return false; + + // Machine_Country + if (!Filter.PassStringFilter(MachineFilter.Country, machine.Country)) + return false; + + #endregion + + #region SoftwareList + + // Machine_Supported + if (MachineFilter.Supported.MatchesPositive(Supported.NULL, machine.Supported) == false) + return false; + if (MachineFilter.Supported.MatchesNegative(Supported.NULL, machine.Supported) == true) + return false; + + #endregion // SoftwareList + + return true; + } #endregion }