@@ -31,53 +31,35 @@ public FloatMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType,
3131 maxValue = value1 + 1.0f / factor ;
3232 }
3333
34- private bool CheckRoundedEquality ( float value )
34+ private bool CheckRoundedEquality ( float value ) =>
35+ RoundType switch
3536 {
36- switch ( RoundType )
37- {
38- case ScanRoundMode . Strict :
39- return Value1 . IsNearlyEqual ( ( float ) Math . Round ( value , significantDigits , MidpointRounding . AwayFromZero ) , 0.0001f ) ;
40- case ScanRoundMode . Normal :
41- return minValue < value && value < maxValue ;
42- case ScanRoundMode . Truncate :
43- return ( int ) value == ( int ) Value1 ;
44- default :
45- throw new ArgumentOutOfRangeException ( ) ;
46- }
47- }
37+ ScanRoundMode . Strict => Value1 . IsNearlyEqual ( ( float ) Math . Round ( value , significantDigits , MidpointRounding . AwayFromZero ) , 0.0001f ) ,
38+ ScanRoundMode . Normal => minValue < value && value < maxValue ,
39+ ScanRoundMode . Truncate => ( int ) value == ( int ) Value1 ,
40+ _ => throw new ArgumentOutOfRangeException ( )
41+ } ;
4842
4943 public bool Compare ( byte [ ] data , int index , out ScanResult result )
5044 {
5145 result = null ;
5246
5347 var value = BitConverter . ToSingle ( data , index ) ;
5448
55- bool IsMatch ( )
49+ bool IsMatch ( ) =>
50+ CompareType switch
5651 {
57- switch ( CompareType )
58- {
59- case ScanCompareType . Equal :
60- return CheckRoundedEquality ( value ) ;
61- case ScanCompareType . NotEqual :
62- return ! CheckRoundedEquality ( value ) ;
63- case ScanCompareType . GreaterThan :
64- return value > Value1 ;
65- case ScanCompareType . GreaterThanOrEqual :
66- return value >= Value1 ;
67- case ScanCompareType . LessThan :
68- return value < Value1 ;
69- case ScanCompareType . LessThanOrEqual :
70- return value <= Value1 ;
71- case ScanCompareType . Between :
72- return Value1 < value && value < Value2 ;
73- case ScanCompareType . BetweenOrEqual :
74- return Value1 <= value && value <= Value2 ;
75- case ScanCompareType . Unknown :
76- return true ;
77- default :
78- throw new InvalidCompareTypeException ( CompareType ) ;
79- }
80- }
52+ ScanCompareType . Equal => CheckRoundedEquality ( value ) ,
53+ ScanCompareType . NotEqual => ! CheckRoundedEquality ( value ) ,
54+ ScanCompareType . GreaterThan => value > Value1 ,
55+ ScanCompareType . GreaterThanOrEqual => value >= Value1 ,
56+ ScanCompareType . LessThan => value < Value1 ,
57+ ScanCompareType . LessThanOrEqual => value <= Value1 ,
58+ ScanCompareType . Between => Value1 < value && value < Value2 ,
59+ ScanCompareType . BetweenOrEqual => Value1 <= value && value <= Value2 ,
60+ ScanCompareType . Unknown => true ,
61+ _ => throw new InvalidCompareTypeException ( CompareType )
62+ } ;
8163
8264 if ( ! IsMatch ( ) )
8365 {
@@ -104,42 +86,25 @@ public bool Compare(byte[] data, int index, FloatScanResult previous, out ScanRe
10486
10587 var value = BitConverter . ToSingle ( data , index ) ;
10688
107- bool IsMatch ( )
89+ bool IsMatch ( ) =>
90+ CompareType switch
10891 {
109- switch ( CompareType )
110- {
111- case ScanCompareType . Equal :
112- return CheckRoundedEquality ( value ) ;
113- case ScanCompareType . NotEqual :
114- return ! CheckRoundedEquality ( value ) ;
115- case ScanCompareType . Changed :
116- return value != previous . Value ;
117- case ScanCompareType . NotChanged :
118- return value == previous . Value ;
119- case ScanCompareType . GreaterThan :
120- return value > Value1 ;
121- case ScanCompareType . GreaterThanOrEqual :
122- return value >= Value1 ;
123- case ScanCompareType . Increased :
124- return value > previous . Value ;
125- case ScanCompareType . IncreasedOrEqual :
126- return value >= previous . Value ;
127- case ScanCompareType . LessThan :
128- return value < Value1 ;
129- case ScanCompareType . LessThanOrEqual :
130- return value <= Value1 ;
131- case ScanCompareType . Decreased :
132- return value < previous . Value ;
133- case ScanCompareType . DecreasedOrEqual :
134- return value <= previous . Value ;
135- case ScanCompareType . Between :
136- return Value1 < value && value < Value2 ;
137- case ScanCompareType . BetweenOrEqual :
138- return Value1 <= value && value <= Value2 ;
139- default :
140- throw new InvalidCompareTypeException ( CompareType ) ;
141- }
142- }
92+ ScanCompareType . Equal => CheckRoundedEquality ( value ) ,
93+ ScanCompareType . NotEqual => ! CheckRoundedEquality ( value ) ,
94+ ScanCompareType . Changed => value != previous . Value ,
95+ ScanCompareType . NotChanged => value == previous . Value ,
96+ ScanCompareType . GreaterThan => value > Value1 ,
97+ ScanCompareType . GreaterThanOrEqual => value >= Value1 ,
98+ ScanCompareType . Increased => value > previous . Value ,
99+ ScanCompareType . IncreasedOrEqual => value >= previous . Value ,
100+ ScanCompareType . LessThan => value < Value1 ,
101+ ScanCompareType . LessThanOrEqual => value <= Value1 ,
102+ ScanCompareType . Decreased => value < previous . Value ,
103+ ScanCompareType . DecreasedOrEqual => value <= previous . Value ,
104+ ScanCompareType . Between => Value1 < value && value < Value2 ,
105+ ScanCompareType . BetweenOrEqual => Value1 <= value && value <= Value2 ,
106+ _ => throw new InvalidCompareTypeException ( CompareType )
107+ } ;
143108
144109 if ( ! IsMatch ( ) )
145110 {
0 commit comments