using System.Collections.Generic; using SabreTools.Core; using SabreTools.Core.Tools; using SabreTools.Logging; namespace SabreTools.Filtering { /// /// Represents the filtering operations that need to be performed on a DatHeader /// public class DatHeaderFilter : Filter { #region Constructors /// /// Constructor /// public DatHeaderFilter() { logger = new Logger(this); } #endregion #region Filter Population /// /// Populate the filters object using a set of key:value filters /// /// List of key:value where ~key/!key is negated public override void PopulateFromList(List filters) { foreach (string filterPair in filters) { (string field, string value, bool negate) = ProcessFilterPair(filterPair); // If we don't even have a possible filter pair if (field == null && value == null) continue; DatHeaderField filterField = field.AsDatHeaderField(); SetFilter(filterField, value, negate); } } /// /// Set multiple filters from key /// /// Key for the filter to be set /// List of values for the filter /// True if negative filter, false otherwise public void SetFilter(DatHeaderField key, List values, bool negate) { foreach (string value in values) { SetFilter(key, value, negate); } } /// /// Set a single filter from key /// /// Key for the filter to be set /// Value of the filter /// True if negative filter, false otherwise public void SetFilter(DatHeaderField key, string value, bool negate) { switch (key) { // TODO: Add DatHeader filters } } #endregion } }