Reko.Core.Serialization.ProjectSaver.VisitProgram C# (CSharp) Méthode

VisitProgram() public méthode

public VisitProgram ( string projectAbsPath, System.Program program ) : ProjectFile_v3
projectAbsPath string
program System.Program
Résultat ProjectFile_v3
        public ProjectFile_v3 VisitProgram(string projectAbsPath, Program program)
        {
            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(),
                    IndirectJumps = program.User.IndirectJumps.Select(SerializeIndirectJump).ToList(),
                    JumpTables = program.User.JumpTables.Select(SerializeJumpTable).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),
            };
        }

Usage Example

 private void When_SaveToTextWriter(Program program, TextWriter sw)
 {
     var saver = new ProjectSaver();
     var sProj = new Project_v3
     {
         Inputs = { saver.VisitProgram(program) }
     };
     var writer = new FilteringXmlWriter(sw);
     writer.Formatting = System.Xml.Formatting.Indented;
     XmlSerializer ser = SerializedLibrary.CreateSerializer_v3(typeof(Project_v3));
     ser.Serialize(writer, sProj);
 }
All Usage Examples Of Reko.Core.Serialization.ProjectSaver::VisitProgram