| 19 | } |
| 20 | |
| 21 | Error GodotMonoDecompWrapper::_load(const String &p_assembly_path, const Vector<String> &p_original_project_files, const Vector<String> &p_assembly_reference_dirs, const GodotMonoDecompSettings &p_settings) { |
| 22 | CharString assembly_path_chrstr = p_assembly_path.utf8(); |
| 23 | const char *assembly_path_c = assembly_path_chrstr.get_data(); |
| 24 | String ref_path = p_assembly_path.get_base_dir(); |
| 25 | CharString ref_path_chrstr = ref_path.utf8(); |
| 26 | const char *ref_path_c = ref_path_chrstr.get_data(); |
| 27 | const char *ref_path_c_array[] = { ref_path_c }; |
| 28 | |
| 29 | CharString godotVersionOverride_chrstr = p_settings.GodotVersionOverride.is_empty() ? "" : p_settings.GodotVersionOverride.utf8(); |
| 30 | const char *godotVersionOverride_c = p_settings.GodotVersionOverride.is_empty() ? nullptr : godotVersionOverride_chrstr.get_data(); |
| 31 | |
| 32 | const char **originalProjectFiles_c_array = new const char *[p_original_project_files.size()]; |
| 33 | Vector<CharString> originalProjectFiles_chrstrs; |
| 34 | originalProjectFiles_chrstrs.resize(p_original_project_files.size()); |
| 35 | for (int i = 0; i < p_original_project_files.size(); i++) { |
| 36 | // to keep them from being freed |
| 37 | originalProjectFiles_chrstrs.write[i] = p_original_project_files[i].utf8(); |
| 38 | originalProjectFiles_c_array[i] = originalProjectFiles_chrstrs[i].get_data(); |
| 39 | } |
| 40 | |
| 41 | auto new_decompiler_handle = GodotMonoDecomp_CreateGodotModuleDecompiler( |
| 42 | assembly_path_c, |
| 43 | originalProjectFiles_c_array, |
| 44 | p_original_project_files.size(), |
| 45 | ref_path_c_array, |
| 46 | 1, |
| 47 | godotVersionOverride_c, |
| 48 | p_settings.WriteNuGetPackageReferences, |
| 49 | p_settings.VerifyNuGetPackageIsFromNugetOrg, |
| 50 | p_settings.CopyOutOfTreeReferences, |
| 51 | p_settings.CreateAdditionalProjectsForProjectReferences, |
| 52 | p_settings.RemoveGeneratedJsonContextBody, |
| 53 | p_settings.EnableCollectionInitializerLifting, |
| 54 | p_settings.EmitILAnnotationComments, |
| 55 | (LanguageVersion)p_settings.OverrideLanguageVersion); |
| 56 | delete[] originalProjectFiles_c_array; |
| 57 | if (new_decompiler_handle == nullptr) { |
| 58 | return ERR_CANT_CREATE; |
| 59 | } |
| 60 | this->decompilerHandle = new_decompiler_handle; |
| 61 | this->assembly_path = p_assembly_path; |
| 62 | this->originalProjectFiles = p_original_project_files; |
| 63 | this->assemblyReferenceDirs = p_assembly_reference_dirs; |
| 64 | this->settings = p_settings; |
| 65 | return OK; |
| 66 | } |
| 67 | |
| 68 | struct DecompileModuleTaskData : public TaskRunnerStruct { |
| 69 | String outputCSProjectPath; |