1 |
william |
229 |
using System; |
2 |
|
|
using System.Collections.Generic; |
3 |
|
|
using System.Linq; |
4 |
|
|
using System.Text; |
5 |
|
|
|
6 |
|
|
namespace RomCheater.Docking.MemorySearch |
7 |
|
|
{ |
8 |
|
|
public interface IResultDataType |
9 |
|
|
{ |
10 |
|
|
uint Address { get; set; } |
11 |
|
|
bool IsFrozen { get; set; } |
12 |
|
|
bool IsUnsigned { get; set; } |
13 |
|
|
object Value { get; set; } |
14 |
|
|
SearchDataTypes ValueType { get; set; } |
15 |
|
|
} |
16 |
|
|
public class ResultDataType : IResultDataType |
17 |
|
|
{ |
18 |
|
|
|
19 |
|
|
public ResultDataType(uint address) { this.Address = address; } |
20 |
|
|
public ResultDataType(uint address, bool isfrozen) : this(address) { this.IsFrozen = isfrozen; } |
21 |
|
|
public ResultDataType(uint address, bool isfrozen, object value, SearchDataTypes ValueType) : this(address, isfrozen, value) { this.ValueType = ValueType; } |
22 |
|
|
public ResultDataType(uint address, bool isfrozen, object value) |
23 |
|
|
: this(address, isfrozen) |
24 |
|
|
{ |
25 |
|
|
this.Value = value; |
26 |
|
|
this.ValueType = SearchDataTypes._8bits; |
27 |
|
|
if (value.GetType() == typeof(sbyte) || value.GetType() == typeof(byte)) |
28 |
|
|
{ |
29 |
|
|
this.ValueType = SearchDataTypes._8bits; |
30 |
|
|
} |
31 |
|
|
else if (value.GetType() == typeof(short) || value.GetType() == typeof(ushort)) |
32 |
|
|
{ |
33 |
|
|
this.ValueType = SearchDataTypes._16bits; |
34 |
|
|
} |
35 |
|
|
else if (value.GetType() == typeof(int) || value.GetType() == typeof(uint)) |
36 |
|
|
{ |
37 |
|
|
this.ValueType = SearchDataTypes._32bits; |
38 |
|
|
} |
39 |
|
|
else if (value.GetType() == typeof(long) || value.GetType() == typeof(ulong)) |
40 |
|
|
{ |
41 |
|
|
this.ValueType = SearchDataTypes._64bits; |
42 |
|
|
} |
43 |
|
|
else |
44 |
|
|
{ |
45 |
|
|
this.ValueType = SearchDataTypes._8bits; |
46 |
|
|
} |
47 |
|
|
this.IsUnsigned = true; |
48 |
|
|
} |
49 |
|
|
public ResultDataType(uint address, bool isfrozen, byte value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._8bits; this.IsUnsigned = true; } |
50 |
|
|
public ResultDataType(uint address, bool isfrozen, sbyte value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._8bits; } |
51 |
|
|
public ResultDataType(uint address, bool isfrozen, ushort value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._16bits; this.IsUnsigned = true; } |
52 |
|
|
public ResultDataType(uint address, bool isfrozen, short value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._16bits; } |
53 |
|
|
public ResultDataType(uint address, bool isfrozen, uint value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._32bits; this.IsUnsigned = true; } |
54 |
|
|
public ResultDataType(uint address, bool isfrozen, int value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._32bits; } |
55 |
|
|
public ResultDataType(uint address, bool isfrozen, ulong value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._64bits; this.IsUnsigned = true; } |
56 |
|
|
public ResultDataType(uint address, bool isfrozen, long value) : this(address, isfrozen) { this.Value = (object)value; this.ValueType = SearchDataTypes._64bits; } |
57 |
|
|
|
58 |
|
|
#region IResultDataType Members |
59 |
|
|
|
60 |
|
|
private uint _address; |
61 |
|
|
private bool _isfrozen; |
62 |
|
|
private object _value; |
63 |
|
|
private SearchDataTypes _valuetype; |
64 |
|
|
private bool _IsUnsigned = false; |
65 |
|
|
|
66 |
|
|
public uint Address { get { return _address; } set { _address = value; } } |
67 |
|
|
public bool IsFrozen { get { return _isfrozen; } set { _isfrozen = value; } } |
68 |
|
|
public object Value { get { return _value; } set { _value = value; } } |
69 |
|
|
public SearchDataTypes ValueType { get { return _valuetype; } set { _valuetype = value; } } |
70 |
|
|
|
71 |
|
|
public bool IsUnsigned { get { return _IsUnsigned; } set { _IsUnsigned = value; } } |
72 |
|
|
#endregion |
73 |
|
|
|
74 |
|
|
public override string ToString() |
75 |
|
|
{ |
76 |
|
|
string value_out = ""; |
77 |
|
|
|
78 |
|
|
switch (this.ValueType) |
79 |
|
|
{ |
80 |
|
|
case SearchDataTypes._8bits: |
81 |
|
|
value_out = string.Format("0x{0:x2}", this.Value); |
82 |
|
|
break; |
83 |
|
|
case SearchDataTypes._16bits: |
84 |
|
|
value_out = string.Format("0x{0:x4}", this.Value); |
85 |
|
|
break; |
86 |
|
|
case SearchDataTypes._32bits: |
87 |
|
|
value_out = string.Format("0x{0:x8}", this.Value); |
88 |
|
|
break; |
89 |
|
|
case SearchDataTypes._64bits: |
90 |
|
|
value_out = string.Format("0x{0:x16}", this.Value); |
91 |
|
|
break; |
92 |
|
|
} |
93 |
|
|
|
94 |
|
|
StringBuilder builder = new StringBuilder(); |
95 |
|
|
builder.Append("{"); |
96 |
|
|
builder.AppendFormat("0x{0:x8},{1},{2}", |
97 |
|
|
this.Address, |
98 |
|
|
value_out, |
99 |
|
|
this.IsFrozen); |
100 |
|
|
builder.Append("}"); |
101 |
|
|
return builder.ToString(); |
102 |
|
|
} |
103 |
|
|
} |
104 |
|
|
} |