Skip to content

Commit 9ca525e

Browse files
committed
Added different string formats.
1 parent ee98209 commit 9ca525e

File tree

1 file changed

+44
-9
lines changed

1 file changed

+44
-9
lines changed

ReClass.NET/MemoryScanner/BytePattern.cs

Lines changed: 44 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,12 @@
88

99
namespace ReClassNET.MemoryScanner
1010
{
11+
public enum PatternFormat
12+
{
13+
Code,
14+
Combined
15+
}
16+
1117
public class BytePattern
1218
{
1319
private struct PatternByte
@@ -104,15 +110,25 @@ public bool Equals(byte b)
104110
return matched == 2;
105111
}
106112

107-
public override string ToString()
113+
public Tuple<string, string> ToString(PatternFormat format)
108114
{
109-
var sb = new StringBuilder();
110-
if (nibble1.IsWildcard) sb.Append('?');
111-
else sb.AppendFormat("{0:X}", nibble1.Value);
112-
if (nibble2.IsWildcard) sb.Append('?');
113-
else sb.AppendFormat("{0:X}", nibble2.Value);
114-
return sb.ToString();
115+
switch (format)
116+
{
117+
case PatternFormat.Code:
118+
return HasWildcard ? Tuple.Create("\\x00", "?") : Tuple.Create($"\\x{ByteValue:X02}", "x");
119+
case PatternFormat.Combined:
120+
var sb = new StringBuilder();
121+
if (nibble1.IsWildcard) sb.Append('?');
122+
else sb.AppendFormat("{0:X}", nibble1.Value);
123+
if (nibble2.IsWildcard) sb.Append('?');
124+
else sb.AppendFormat("{0:X}", nibble2.Value);
125+
return Tuple.Create<string, string>(sb.ToString(), null);
126+
default:
127+
throw new ArgumentOutOfRangeException(nameof(format), format, null);
128+
}
115129
}
130+
131+
public override string ToString() => ToString(PatternFormat.Combined).Item1;
116132
}
117133

118134
private readonly List<PatternByte> pattern = new List<PatternByte>();
@@ -218,9 +234,28 @@ public byte[] ToByteArray()
218234
return pattern.Select(pb => pb.ByteValue).ToArray();
219235
}
220236

221-
public override string ToString()
237+
public Tuple<string, string> ToString(PatternFormat format)
222238
{
223-
return string.Join(" ", pattern.Select(p => p.ToString()));
239+
switch (format)
240+
{
241+
case PatternFormat.Code:
242+
var sb1 = new StringBuilder();
243+
var sb2 = new StringBuilder();
244+
pattern
245+
.Select(p => p.ToString(PatternFormat.Code))
246+
.ForEach(t =>
247+
{
248+
sb1.Append(t.Item1);
249+
sb2.Append(t.Item2);
250+
});
251+
return Tuple.Create(sb1.ToString(), sb2.ToString());
252+
case PatternFormat.Combined:
253+
return Tuple.Create<string, string>(string.Join(" ", pattern.Select(p => p.ToString(PatternFormat.Combined).Item1)), null);
254+
default:
255+
throw new ArgumentOutOfRangeException(nameof(format), format, null);
256+
}
224257
}
258+
259+
public override string ToString() => ToString(PatternFormat.Combined).Item1;
225260
}
226261
}

0 commit comments

Comments
 (0)