-
Notifications
You must be signed in to change notification settings - Fork 396
Expand file tree
/
Copy pathCppTypeMapping.cs
More file actions
96 lines (86 loc) · 5.47 KB
/
CppTypeMapping.cs
File metadata and controls
96 lines (86 loc) · 5.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System.Xml.Linq;
using ReClassNET.Util;
namespace ReClassNET.Project
{
public class CppTypeMapping
{
public string TypeBool { get; set; } = "bool";
public string TypeInt8 { get; set; } = "int8_t";
public string TypeInt16 { get; set; } = "int16_t";
public string TypeInt32 { get; set; } = "int32_t";
public string TypeInt64 { get; set; } = "int64_t";
public string TypeNInt { get; set; } = "ptrdiff_t";
public string TypeUInt8 { get; set; } = "uint8_t";
public string TypeUInt16 { get; set; } = "uint16_t";
public string TypeUInt32 { get; set; } = "uint32_t";
public string TypeUInt64 { get; set; } = "uint64_t";
public string TypeNUInt { get; set; } = "size_t";
public string TypeFloat { get; set; } = "float";
public string TypeDouble { get; set; } = "double";
public string TypeVector2 { get; set; } = "Vector2";
public string TypeVector3 { get; set; } = "Vector3";
public string TypeVector4 { get; set; } = "Vector4";
public string TypeMatrix3x3 { get; set; } = "Matrix3x3";
public string TypeMatrix3x4 { get; set; } = "Matrix3x4";
public string TypeMatrix4x4 { get; set; } = "Matrix4x4";
public string TypeUtf8Text { get; set; } = "char";
public string TypeUtf16Text { get; set; } = "wchar_t"; // Should be char16_t, but this type isn't well supported at the moment.
public string TypeUtf32Text { get; set; } = "char32_t";
public string TypeFunctionPtr { get; set; } = "void*";
internal XElement Serialize(string name)
{
return new XElement(
name,
XElementSerializer.ToXml(nameof(TypeBool), TypeBool),
XElementSerializer.ToXml(nameof(TypeInt8), TypeInt8),
XElementSerializer.ToXml(nameof(TypeInt16), TypeInt16),
XElementSerializer.ToXml(nameof(TypeInt32), TypeInt32),
XElementSerializer.ToXml(nameof(TypeInt64), TypeInt64),
XElementSerializer.ToXml(nameof(TypeNInt), TypeNInt),
XElementSerializer.ToXml(nameof(TypeUInt8), TypeUInt8),
XElementSerializer.ToXml(nameof(TypeUInt16), TypeUInt16),
XElementSerializer.ToXml(nameof(TypeUInt32), TypeUInt32),
XElementSerializer.ToXml(nameof(TypeUInt64), TypeUInt64),
XElementSerializer.ToXml(nameof(TypeNUInt), TypeNUInt),
XElementSerializer.ToXml(nameof(TypeFloat), TypeFloat),
XElementSerializer.ToXml(nameof(TypeDouble), TypeDouble),
XElementSerializer.ToXml(nameof(TypeVector2), TypeVector2),
XElementSerializer.ToXml(nameof(TypeVector3), TypeVector3),
XElementSerializer.ToXml(nameof(TypeVector4), TypeVector4),
XElementSerializer.ToXml(nameof(TypeMatrix3x3), TypeMatrix3x3),
XElementSerializer.ToXml(nameof(TypeMatrix3x4), TypeMatrix3x4),
XElementSerializer.ToXml(nameof(TypeMatrix4x4), TypeMatrix4x4),
XElementSerializer.ToXml(nameof(TypeUtf8Text), TypeUtf8Text),
XElementSerializer.ToXml(nameof(TypeUtf16Text), TypeUtf16Text),
XElementSerializer.ToXml(nameof(TypeUtf32Text), TypeUtf32Text),
XElementSerializer.ToXml(nameof(TypeFunctionPtr), TypeFunctionPtr)
);
}
internal void Deserialize(XElement element)
{
XElementSerializer.TryRead(element, nameof(TypeBool), e => TypeBool = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeInt8), e => TypeInt8 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeInt16), e => TypeInt16 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeInt32), e => TypeInt32 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeInt64), e => TypeInt64 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeNInt), e => TypeNInt = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUInt8), e => TypeUInt8 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUInt16), e => TypeUInt16 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUInt32), e => TypeUInt32 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUInt64), e => TypeUInt64 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeNUInt), e => TypeNUInt = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeFloat), e => TypeFloat = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeDouble), e => TypeDouble = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeVector2), e => TypeVector2 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeVector3), e => TypeVector3 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeVector4), e => TypeVector4 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeMatrix3x3), e => TypeMatrix3x3 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeMatrix3x4), e => TypeMatrix3x4 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeMatrix4x4), e => TypeMatrix4x4 = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUtf8Text), e => TypeUtf8Text = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUtf16Text), e => TypeUtf16Text = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeUtf32Text), e => TypeUtf32Text = XElementSerializer.ToString(e));
XElementSerializer.TryRead(element, nameof(TypeFunctionPtr), e => TypeFunctionPtr = XElementSerializer.ToString(e));
}
}
}