コード例 #1
0
ファイル: ProjectLoader.cs プロジェクト: Godzil/reko
        /// <summary>
        /// Loads a Project object from its serialized representation. First loads the programs
        /// and then any extra metadata files.
        /// </summary>
        /// <param name="sp"></param>
        /// <returns></returns>
        public Project LoadProject(string projectFilePath, Project_v2 sp)
        {
            var typelibs = sp.Inputs.OfType <MetadataFile_v2>().Select(m => VisitMetadataFile(m));
            var programs = sp.Inputs.OfType <DecompilerInput_v2>().Select(s => VisitInputFile(projectFilePath, s));
            var asm      = sp.Inputs.OfType <AssemblerFile_v2>().Select(s => VisitAssemblerFile(s));

            project.MetadataFiles.AddRange(typelibs);
            project.Programs.AddRange(programs);
            return(this.project);
        }
コード例 #2
0
ファイル: ProjectSaver.cs プロジェクト: mmyydd/reko
        public Project_v2 Save(Project project)
        {
            var inputs = new List <ProjectFile_v2>();

            inputs.AddRange(project.Programs.Select(prog => VisitProgram(prog)));
            inputs.AddRange(project.MetadataFiles.Select(m => VisitMetadataFile(m)));
            var sp = new Project_v2()
            {
                Inputs = inputs
            };

            return(sp);
        }
コード例 #3
0
ファイル: ProjectLoader.cs プロジェクト: ntzwq/reko
 public Project LoadProject(string projectFilePath, Project_v2 sp)
 {
     var typelibs = sp.Inputs.OfType<MetadataFile_v2>().Select(m => VisitMetadataFile(m));
     var programs = sp.Inputs.OfType<DecompilerInput_v2>().Select(s => VisitInputFile(projectFilePath, s)).ToList();
     var sAsms = sp.Inputs.OfType<AssemblerFile_v2>().ToList();
     programs.AddRange(sAsms.Select(s => VisitAssemblerFile(s)));
     if (this.platform != null)
     {
         this.project.LoadedMetadata = this.platform.CreateMetadata();
     }
     foreach (var program in programs)
     {
         program.EnvironmentMetadata = this.project.LoadedMetadata;
     }
     project.MetadataFiles.AddRange(typelibs);
     project.Programs.AddRange(programs);
     return this.project;
 }
コード例 #4
0
ファイル: ProjectLoader.cs プロジェクト: ntzwq/reko
 public Project VisitProject_v2(Project_v2 sProject) { return outer.LoadProject(filename, sProject); }
コード例 #5
0
ファイル: ProjectLoader.cs プロジェクト: feelworld/reko
        public void Save(Project_v2 project, TextWriter sw)
        {
            XmlSerializer ser = SerializedLibrary.CreateSerializer_v1(typeof(Project_v2));

            ser.Serialize(sw, project);
        }