Пример #1
0
        public bool Compare(byte[] data, int index, ShortScanResult previous, out ScanResult result)
        {
            return(CompareInternal(
                       data,
                       index,
                       value =>
            {
                switch (CompareType)
                {
                case ScanCompareType.Equal:
                    return value == Value1;

                case ScanCompareType.NotEqual:
                    return value != Value1;

                case ScanCompareType.GreaterThan:
                    return value > Value1;

                case ScanCompareType.GreaterThanOrEqual:
                    return value >= Value1;

                case ScanCompareType.LessThan:
                    return value < Value1;

                case ScanCompareType.LessThanOrEqual:
                    return value <= Value1;

                case ScanCompareType.Between:
                    return Value1 < value && value < Value2;

                case ScanCompareType.BetweenOrEqual:
                    return Value1 <= value && value <= Value2;

                case ScanCompareType.Changed:
                    return value != previous.Value;

                case ScanCompareType.NotChanged:
                    return value == previous.Value;

                case ScanCompareType.Increased:
                    return value > previous.Value;

                case ScanCompareType.IncreasedOrEqual:
                    return value >= previous.Value;

                case ScanCompareType.Decreased:
                    return value < previous.Value;

                case ScanCompareType.DecreasedOrEqual:
                    return value <= previous.Value;

                default:
                    throw new InvalidCompareTypeException(CompareType);
                }
            },
                       out result
                       ));
        }
Пример #2
0
        public bool Compare(byte[] data, int index, out ScanResult result)
        {
            result = null;

            var value = BitConverter.ToInt16(data, index);

            bool IsMatch()
            {
                switch (CompareType)
                {
                case ScanCompareType.Equal:
                    return(value == Value1);

                case ScanCompareType.NotEqual:
                    return(value != Value1);

                case ScanCompareType.GreaterThan:
                    return(value > Value1);

                case ScanCompareType.GreaterThanOrEqual:
                    return(value >= Value1);

                case ScanCompareType.LessThan:
                    return(value < Value1);

                case ScanCompareType.LessThanOrEqual:
                    return(value <= Value1);

                case ScanCompareType.Between:
                    return(Value1 < value && value < Value2);

                case ScanCompareType.BetweenOrEqual:
                    return(Value1 <= value && value <= Value2);

                case ScanCompareType.Unknown:
                    return(true);

                default:
                    throw new InvalidCompareTypeException(CompareType);
                }
            }

            if (!IsMatch())
            {
                return(false);
            }

            result = new ShortScanResult(value);

            return(true);
        }
Пример #3
0
		private static bool CompareInternal(byte[] data, int index, Func<short, bool> matcher, out ScanResult result)
		{
			result = null;

			var value = BitConverter.ToInt16(data, index);

			if (!matcher(value))
			{
				return false;
			}

			result = new ShortScanResult(value);

			return true;
		}