Ejemplo n.º 1
0
        private bool ValueQualifies(object memoryObject, object oldMemoryObject, object searchObject1, object searchObject2, Type type)
        {
            if (type == typeof(byte))
            {
                byte?memoryValue = ParsingUtilities.ParseByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                byte?oldMemoryValue = ParsingUtilities.ParseByteNullable(oldMemoryObject);
                byte?searchValue1   = ParsingUtilities.ParseByteNullable(searchObject1);
                byte?searchValue2   = ParsingUtilities.ParseByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(sbyte))
            {
                sbyte?memoryValue = ParsingUtilities.ParseSByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                sbyte?            oldMemoryValue    = ParsingUtilities.ParseSByteNullable(oldMemoryObject);
                sbyte?            searchValue1      = ParsingUtilities.ParseSByteNullable(searchObject1);
                sbyte?            searchValue2      = ParsingUtilities.ParseSByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(short))
            {
                short?memoryValue = ParsingUtilities.ParseShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                short?            oldMemoryValue    = ParsingUtilities.ParseShortNullable(oldMemoryObject);
                short?            searchValue1      = ParsingUtilities.ParseShortNullable(searchObject1);
                short?            searchValue2      = ParsingUtilities.ParseShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(ushort))
            {
                ushort?memoryValue = ParsingUtilities.ParseUShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                ushort?           oldMemoryValue    = ParsingUtilities.ParseUShortNullable(oldMemoryObject);
                ushort?           searchValue1      = ParsingUtilities.ParseUShortNullable(searchObject1);
                ushort?           searchValue2      = ParsingUtilities.ParseUShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(int))
            {
                int?memoryValue = ParsingUtilities.ParseIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                int?oldMemoryValue = ParsingUtilities.ParseIntNullable(oldMemoryObject);
                int?searchValue1   = ParsingUtilities.ParseIntNullable(searchObject1);
                int?searchValue2   = ParsingUtilities.ParseIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(uint))
            {
                uint?memoryValue = ParsingUtilities.ParseUIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                uint?oldMemoryValue = ParsingUtilities.ParseUIntNullable(oldMemoryObject);
                uint?searchValue1   = ParsingUtilities.ParseUIntNullable(searchObject1);
                uint?searchValue2   = ParsingUtilities.ParseUIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(float))
            {
                float?memoryValue = ParsingUtilities.ParseFloatNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                float?            oldMemoryValue    = ParsingUtilities.ParseFloatNullable(oldMemoryObject);
                float?            searchValue1      = ParsingUtilities.ParseFloatNullable(searchObject1);
                float?            searchValue2      = ParsingUtilities.ParseFloatNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(double))
            {
                double?memoryValue = ParsingUtilities.ParseDoubleNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                double?           oldMemoryValue    = ParsingUtilities.ParseDoubleNullable(oldMemoryObject);
                double?           searchValue1      = ParsingUtilities.ParseDoubleNullable(searchObject1);
                double?           searchValue2      = ParsingUtilities.ParseDoubleNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            throw new ArgumentOutOfRangeException();
        }