Unity/C++: Significant re-factoring of Unity header management (see description)

Extract resource handling to UnityResource
Add API header resource helpers
Fix UnityVersion ToString() when Min == Max
Replace fixed list of Il2Cpp header reserved names with parsed names from actual selected headers (solves TypeInfo/MemberInfo problems in 5.3.0-5.3.4 (metadata v16-20))
Use CppDeclarationGenerator when initializing CppTypeCollection to ensure all Il2Cpp header symbols are reserved
Process API headers in CppTypeCollection.FromUnityHeaders
Move #define IS_32BIT handling to UnityHeaders
Update tests
This commit is contained in:
Katy Coe
2020-07-22 19:01:33 +02:00
parent 53909c539c
commit deeb8daa97
12 changed files with 216 additions and 142 deletions

View File

@@ -205,7 +205,7 @@ namespace Il2CppInspectorGUI
var prevCppSelection = cboCppUnityVersion.SelectedItem;
cboUnityVersion.Items.Clear();
cboCppUnityVersion.Items.Clear();
foreach (var version in UnityHeader.GuessHeadersForModel(model.ILModel)) {
foreach (var version in UnityHeaders.GuessHeadersForBinary(model.Package.Binary)) {
cboUnityVersion.Items.Add(version);
cboCppUnityVersion.Items.Add(version);
}
@@ -406,7 +406,7 @@ namespace Il2CppInspectorGUI
var outFile = scriptSaveFileDialog.FileName;
areaBusyIndicator.Visibility = Visibility.Visible;
var selectedVersion = ((UnityHeader) cboUnityVersion.SelectedItem)?.Version.Min;
var selectedVersion = ((UnityHeaders) cboUnityVersion.SelectedItem)?.VersionRange.Min;
await Task.Run(() => {
OnStatusUpdate(this, "Building C++ application model");
model.Build(selectedVersion, CppCompilerType.GCC);
@@ -430,7 +430,7 @@ namespace Il2CppInspectorGUI
var cppOutPath = cppSaveFolderDialog.SelectedPath;
areaBusyIndicator.Visibility = Visibility.Visible;
var selectedCppUnityVersion = ((UnityHeader) cboCppUnityVersion.SelectedItem)?.Version.Min;
var selectedCppUnityVersion = ((UnityHeaders) cboCppUnityVersion.SelectedItem)?.VersionRange.Min;
var cppCompiler = (CppCompilerType) Enum.Parse(typeof(CppCompilerType), cboCppCompiler.SelectionBoxItem.ToString());
await Task.Run(() => {
OnStatusUpdate(this, "Building C++ application model");