public ProjectFile_v3 VisitProgram(string projectAbsPath, Program program) { var dtSerializer = new DataTypeSerializer(); return(new DecompilerInput_v4 { Filename = ConvertToProjectRelativePath(projectAbsPath, program.Filename), User = new UserData_v4 { Procedures = program.User.Procedures .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; }) .ToList(), Processor = SerializeProcessorOptions(program.User, program.Architecture), PlatformOptions = SerializePlatformOptions(program.User, program.Platform), LoadAddress = program.User.LoadAddress != null?program.User.LoadAddress.ToString() : null, Calls = program.User.Calls .Select(uc => SerializeUserCall(program, uc.Value)) .Where(uc => uc != null) .ToList(), GlobalData = program.User.Globals .Select(de => new GlobalDataItem_v2 { Address = de.Key.ToString(), DataType = de.Value.DataType, Name = GlobalName(de), }) .ToList(), OnLoadedScript = program.User.OnLoadedScript, Heuristics = program.User.Heuristics .Select(h => new Heuristic_v3 { Name = h }).ToList(), Annotations = program.User.Annotations.Select(SerializeAnnotation).ToList(), TextEncoding = program.User.TextEncoding != Encoding.ASCII ? program.User.TextEncoding.WebName : null, RegisterValues = SerializeRegisterValues(program.User.RegisterValues) }, DisassemblyFilename = ConvertToProjectRelativePath(projectAbsPath, program.DisassemblyFilename), IntermediateFilename = ConvertToProjectRelativePath(projectAbsPath, program.IntermediateFilename), OutputFilename = ConvertToProjectRelativePath(projectAbsPath, program.OutputFilename), TypesFilename = ConvertToProjectRelativePath(projectAbsPath, program.TypesFilename), GlobalsFilename = ConvertToProjectRelativePath(projectAbsPath, program.GlobalsFilename), }); }
public ProjectFile_v2 VisitProgram(Program program) { var dtSerializer = new DataTypeSerializer(); return(new DecompilerInput_v2 { Address = program.Image != null ? program.Image.BaseAddress.ToString() : null, Filename = program.Filename, UserProcedures = program.UserProcedures .Select(de => { de.Value.Address = de.Key.ToString(); return de.Value; }) .ToList(), UserCalls = program.UserCalls .Select(uc => uc.Value) .ToList(), UserGlobalData = program.UserGlobalData .Select(de => new GlobalDataItem_v2 { Address = de.Key.ToString(), DataType = de.Value.DataType, Name = string.Format("g_{0:X}", de.Key.ToLinear()) }) .ToList(), DisassemblyFilename = program.DisassemblyFilename, IntermediateFilename = program.IntermediateFilename, OutputFilename = program.OutputFilename, TypesFilename = program.TypesFilename, GlobalsFilename = program.GlobalsFilename, OnLoadedScript = program.OnLoadedScript, Options = new ProgramOptions_v2 { HeuristicScanning = program.Options.HeuristicScanning, } }); }