Skip to content

Commit 64b9479

Browse files
committed
Use switch expressions.
1 parent ead9f20 commit 64b9479

File tree

6 files changed

+184
-382
lines changed

6 files changed

+184
-382
lines changed

ReClass.NET/MemoryScanner/Comparer/ByteMemoryComparer.cs

Lines changed: 27 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,18 @@ public bool Compare(byte[] data, int index, out ScanResult result)
2323
return CompareInternal(
2424
data,
2525
index,
26-
value =>
26+
value => CompareType switch
2727
{
28-
switch (CompareType)
29-
{
30-
case ScanCompareType.Equal:
31-
return value == Value1;
32-
case ScanCompareType.NotEqual:
33-
return value != Value1;
34-
case ScanCompareType.GreaterThan:
35-
return value > Value1;
36-
case ScanCompareType.GreaterThanOrEqual:
37-
return value >= Value1;
38-
case ScanCompareType.LessThan:
39-
return value < Value1;
40-
case ScanCompareType.LessThanOrEqual:
41-
return value <= Value1;
42-
case ScanCompareType.Between:
43-
return Value1 < value && value < Value2;
44-
case ScanCompareType.BetweenOrEqual:
45-
return Value1 <= value && value <= Value2;
46-
case ScanCompareType.Unknown:
47-
return true;
48-
default:
49-
throw new InvalidCompareTypeException(CompareType);
50-
}
28+
ScanCompareType.Equal => value == Value1,
29+
ScanCompareType.NotEqual => value != Value1,
30+
ScanCompareType.GreaterThan => value > Value1,
31+
ScanCompareType.GreaterThanOrEqual => value >= Value1,
32+
ScanCompareType.LessThan => value < Value1,
33+
ScanCompareType.LessThanOrEqual => value <= Value1,
34+
ScanCompareType.Between => Value1 < value && value < Value2,
35+
ScanCompareType.BetweenOrEqual => Value1 <= value && value <= Value2,
36+
ScanCompareType.Unknown => true,
37+
_ => throw new InvalidCompareTypeException(CompareType)
5138
},
5239
out result
5340
);
@@ -67,42 +54,23 @@ public bool Compare(byte[] data, int index, ByteScanResult previous, out ScanRes
6754
return CompareInternal(
6855
data,
6956
index,
70-
value =>
57+
value => CompareType switch
7158
{
72-
switch (CompareType)
73-
{
74-
case ScanCompareType.Equal:
75-
return value == Value1;
76-
case ScanCompareType.NotEqual:
77-
return value != Value1;
78-
case ScanCompareType.GreaterThan:
79-
return value > Value1;
80-
case ScanCompareType.GreaterThanOrEqual:
81-
return value >= Value1;
82-
case ScanCompareType.LessThan:
83-
return value < Value1;
84-
case ScanCompareType.LessThanOrEqual:
85-
return value <= Value1;
86-
case ScanCompareType.Between:
87-
return Value1 < value && value < Value2;
88-
case ScanCompareType.BetweenOrEqual:
89-
return Value1 <= value && value <= Value2;
90-
91-
case ScanCompareType.Changed:
92-
return value != previous.Value;
93-
case ScanCompareType.NotChanged:
94-
return value == previous.Value;
95-
case ScanCompareType.Increased:
96-
return value > previous.Value;
97-
case ScanCompareType.IncreasedOrEqual:
98-
return value >= previous.Value;
99-
case ScanCompareType.Decreased:
100-
return value < previous.Value;
101-
case ScanCompareType.DecreasedOrEqual:
102-
return value <= previous.Value;
103-
default:
104-
throw new InvalidCompareTypeException(CompareType);
105-
}
59+
ScanCompareType.Equal => value == Value1,
60+
ScanCompareType.NotEqual => value != Value1,
61+
ScanCompareType.GreaterThan => value > Value1,
62+
ScanCompareType.GreaterThanOrEqual => value >= Value1,
63+
ScanCompareType.LessThan => value < Value1,
64+
ScanCompareType.LessThanOrEqual => value <= Value1,
65+
ScanCompareType.Between => Value1 < value && value < Value2,
66+
ScanCompareType.BetweenOrEqual => Value1 <= value && value <= Value2,
67+
ScanCompareType.Changed => value != previous.Value,
68+
ScanCompareType.NotChanged => value == previous.Value,
69+
ScanCompareType.Increased => value > previous.Value,
70+
ScanCompareType.IncreasedOrEqual => value >= previous.Value,
71+
ScanCompareType.Decreased => value < previous.Value,
72+
ScanCompareType.DecreasedOrEqual => value <= previous.Value,
73+
_ => throw new InvalidCompareTypeException(CompareType)
10674
},
10775
out result
10876
);

ReClass.NET/MemoryScanner/Comparer/DoubleMemoryComparer.cs

Lines changed: 38 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -31,53 +31,35 @@ public DoubleMemoryComparer(ScanCompareType compareType, ScanRoundMode roundType
3131
maxValue = value1 + 1.0 / factor;
3232
}
3333

34-
private bool CheckRoundedEquality(double value)
34+
private bool CheckRoundedEquality(double value) =>
35+
RoundType switch
3536
{
36-
switch (RoundType)
37-
{
38-
case ScanRoundMode.Strict:
39-
return Value1.IsNearlyEqual(Math.Round(value, significantDigits, MidpointRounding.AwayFromZero), 0.0001);
40-
case ScanRoundMode.Normal:
41-
return minValue < value && value < maxValue;
42-
case ScanRoundMode.Truncate:
43-
return (long)value == (long)Value1;
44-
default:
45-
throw new ArgumentOutOfRangeException();
46-
}
47-
}
37+
ScanRoundMode.Strict => Value1.IsNearlyEqual(Math.Round(value, significantDigits, MidpointRounding.AwayFromZero), 0.0001),
38+
ScanRoundMode.Normal => minValue < value && value < maxValue,
39+
ScanRoundMode.Truncate => (long)value == (long)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.ToDouble(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, DoubleScanResult previous, out ScanR
10486

10587
var value = BitConverter.ToDouble(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
{

ReClass.NET/MemoryScanner/Comparer/FloatMemoryComparer.cs

Lines changed: 38 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)