#pragma once #include #include #include #include #include #include "decompiler/Disasm/Register.h" namespace decompiler { struct TypeHint { Register reg; std::string type_name; }; struct LabelType { std::string type_name; bool is_const = false; std::optional array_size; }; struct Config { int game_version = -1; std::vector dgo_names; std::vector object_file_names; std::vector str_file_names; std::unordered_set bad_inspect_types; std::string obj_file_name_map_file; bool write_disassembly = false; bool write_hexdump = false; bool write_scripts = false; bool write_hexdump_on_v3_only = false; bool disassemble_objects_without_functions = false; bool write_hex_near_instructions = false; bool analyze_functions = false; bool process_tpages = false; bool process_game_text = false; bool process_game_count = false; bool dump_objs = false; bool write_func_json = false; bool function_type_prop = false; bool analyze_expressions = false; std::unordered_set asm_functions_by_name; std::unordered_set pair_functions_by_name; std::unordered_set no_type_analysis_functions_by_name; std::unordered_set allowed_objects; std::unordered_map>> type_hints_by_function_by_idx; std::unordered_map> anon_function_types_by_obj_by_id; std::unordered_map> function_arg_names; std::unordered_map> function_var_names; std::unordered_map> label_types; bool run_ir2 = false; }; Config& get_config(); void set_config(const std::string& path_to_config_file); } // namespace decompiler