public static void DetectFile(string filePath, string projectFileName)
        {
            var builder = new ContainerBuilder();

            builder.RegisterModule(new FrameworkModule());
            builder.RegisterModule(new DataContractSerializerModule());

            using (var container = builder.Build())
            {
                string           detectorPath    = ConfigurationManager.AppSettings.Get("Defraser.DetectorPath") ?? AppDomain.CurrentDomain.BaseDirectory;
                IDetectorFactory detectorFactory = container.Resolve <IDetectorFactory>();
                detectorFactory.Initialize(detectorPath);

                File.Delete(projectFileName);
                ProjectManager projectManager = container.Resolve <ProjectManager>();
                IProject       project        = projectManager.CreateProject(projectFileName, "Console", DateTime.Now, "Batch process");

                IInputFile   inputFile   = project.AddFile(filePath, detectorFactory.ContainerDetectors.Union(detectorFactory.CodecDetectors));
                IFileScanner fileScanner = container.Resolve <IFileScanner>();
                fileScanner.ContainerDetectors = detectorFactory.ContainerDetectors;
                fileScanner.CodecDetectors     = detectorFactory.CodecDetectors;
                fileScanner.DataBlockDetected += (s, e) => project.AddDataBlock(e.DataBlock);
                fileScanner.Scan(inputFile, container.Resolve <IProgressReporter>());

                projectManager.SaveProject(project);
                projectManager.CloseProject(project);
            }
        }
Beispiel #2
0
        internal static IInputFile DetectData(IList <IDetector> containerDetectors, IList <IDetector> codecDetectors, IProject project, string fileName)
        {
            IFileScanner fileScanner = _container.Resolve <IFileScanner>();

            fileScanner.ContainerDetectors = containerDetectors;
            fileScanner.CodecDetectors     = codecDetectors;
            fileScanner.DataBlockDetected += (s, e) => project.AddDataBlock(e.DataBlock);
            List <IDetector> detectors = new List <IDetector>();

            detectors.AddRange(containerDetectors);
            detectors.AddRange(codecDetectors);
            IInputFile inputFile = project.AddFile(fileName, detectors);

            fileScanner.Scan(inputFile, new NullProgressReporter());
            return(inputFile);
        }
Beispiel #3
0
        public async Task AddIcon(IProject project, IProjectIcon icon, string name)
        {
            // download icon
            var data = await icon.Get();

            // save file
            var root     = project.GetRootDirectory();
            var filename = $"{name}@{icon.Density}.png".Replace("@1x", "");
            var filepath = Path.Combine(root, RESOURCES_FOLDER, filename);

            FileUtils.WriteAllBytes(data, filepath);
            // add to project
            project.AddFile(filepath, "BundleResource");
            // save
            project.Save();
        }
        public async Task AddIcon(IProject project, IProjectIcon icon, string name)
        {
            // download icon
            var data = await icon.Get();

            // save file
            var root     = project.GetRootDirectory();
            var filename = $"{name}.png";
            var filepath = Path.Combine(root, filename);

            FileUtils.WriteAllBytes(data, filepath);
            // add to project
            project.AddFile(filepath, "Content");
            // save
            project.Save();
        }
Beispiel #5
0
        public async Task AddIcon(IProject project, IProjectIcon icon, string name)
        {
            // download icon
            var data = await icon.Get();

            // TEMP solution to https://github.com/interisti/vs-material-icons-generator/issues/17
            if (data == null)
            {
                return;
            }
            // save file
            var filepath = this.GetFilePath(project, icon, name);

            FileUtils.WriteAllBytes(data, filepath);
            // add to project
            project.AddFile(filepath, "AndroidResource");
            // save
            project.Save();
        }
 public void ProjectChangedSetVisibleColumns()
 {
     With.Mocks(_mockRepository).Expecting(delegate
     {
         var e = new ProjectChangedEventArgs(ProjectChangedType.VisibleColumnsChanged, _detector1);
         _projectChangedEventHandler.Expect(x => x(_project, e));
     }).Verify(delegate
     {
         _project.AddFile(FileName1, OneDetector);
         _project.ProjectChanged += _projectChangedEventHandler;
         _project.SetVisibleColumns(_detector1, TwoColumns);
     });
 }
 public void CreateEmptyScene(string name, IProject project)
 {
     CreateEmptyScene(name, (fileName, stream) => project.AddFile(fileName, stream));
 }
Beispiel #8
0
        public void Initialize(IProject project, DesignContext context)
        {
            SubprogramsDontDriveSignals sdds = new SubprogramsDontDriveSignals();
            sdds.ApplyTo(context);

            foreach (VHDLib lib in _stdLibraries)
            {
                foreach (VHDPkg pkg in lib.Packages)
                {
                    if (pkg.FileContent == null)
                        continue;
                    string fname = MakeVHDSourceFileName(pkg.Name);
                    string path = project.AddFile(fname);
                    FileStream fs = new FileStream(path, FileMode.Create);
                    fs.Write(pkg.FileContent, 0, pkg.FileContent.Length);
                    fs.Close();
                }
            }
        }
Beispiel #9
0
        public void GeneratePackage(IProject project, PackageDescriptor pd)
        {
            string name = MakeIDName(pd.PackageName, pd);
            string fname = MakeVHDSourceFileName(name);
            string path = project.AddFile(fname);
            project.AddFileAttribute(fname, pd);
            if (pd.Library != null)
                project.SetFileLibrary(fname, pd.Library);
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "  ");
            ClearDependencies();
            tw.WriteLine("package " + name + " is");
            tw.Indent++;
            GenerateTypeDecls(pd, tw);
            foreach (MethodDescriptor md in pd.GetActiveMethods())
            {
                GenerateMethodDecl(md, tw);
            }
            foreach (FieldDescriptor fd in pd.GetConstants())
            {
                DeclareField(fd, tw);
            }
            tw.Indent--;
            tw.WriteLine("end;");
            tw.WriteLine();
            tw.WriteLine("package body " + name + " is");
            tw.Indent++;
            foreach (MethodDescriptor md in pd.GetActiveMethods())
            {
                GenerateMethodImpl(md, tw);
                tw.WriteLine();
            }
            tw.Indent--;
            tw.WriteLine("end package body;");
            tw.Flush();

            sw = new StreamWriter(path);
            tw = new IndentedTextWriter(sw, "  ");
            CreateFileHeader(new GeneratorInfo(name), tw);
            GenerateDependencies(pd, tw);
            tw.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            ms.CopyTo(sw.BaseStream);
            ms.Close();
            tw.Close();
            sw.Close();
        }
Beispiel #10
0
        public void GenerateComponent(IProject project, IComponentDescriptor cd)
        {
            string name = GetComponentName(cd);
            string fname = MakeVHDSourceFileName(name);
            string path = project.AddFile(fname);
            project.AddFileAttribute(fname, cd);
            if (cd.Library != null)
                project.SetFileLibrary(fname, cd.Library);
            _sim.PushScope();
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "  ");
            _curComponent = cd;
            ClearDependencies();
            DeclareEntity(cd, tw);
            tw.WriteLine();
            GenerateArchitecture(cd, tw);
            tw.Flush();
            sw = new StreamWriter(path);
            tw = new IndentedTextWriter(sw, "  ");

            CreateFileHeader(new GeneratorInfo(name), tw);
            GenerateDependencies((IPackageOrComponentDescriptor)cd, tw);
            tw.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            ms.CopyTo(sw.BaseStream);
            ms.Close();
            tw.Close();
            sw.Close();
            _curComponent = null;
            _sim.PopScope();

            InstanceDescriptor icd = cd as InstanceDescriptor;
            if (icd != null)
            {
                object[] attrs = icd.Instance.GetType().GetCustomAttributes(typeof(ComponentPurpose), true);
                if (attrs.Length > 0)
                {
                    ComponentPurpose purpose = (ComponentPurpose)attrs.First();
                    project.AddFileAttribute(fname, purpose.Purpose);
                }
            }

            var gi = new VHDLGenInfo(name, "inst_" + name, "behavioral", fname);
            var d = (DescriptorBase)cd;
            d.AddAttribute(gi);
        }
        public void SerializeProject()
        {
            IProject project = TestFramework.ProjectManager.CreateProject(ProjectPath, ProjectInvestigator, DateTime.Now, ProjectDescription);

            IDetector  systemDetector = TestFramework.DetectorFactory.ContainerDetectors.Single(x => x.Name == "MPEG-1/2 Systems");
            IDetector  videoDetector  = TestFramework.DetectorFactory.CodecDetectors.Single(x => x.Name == Mpeg2VideoDetector.DetectorName);
            IInputFile inputFile1     = project.AddFile(FileName1, new[] { systemDetector, videoDetector });
            IInputFile inputFile2     = project.AddFile(FileName2, new[] { videoDetector });

            IDataBlockBuilder dataBlockBuilder1 = TestFramework.CreateDataBlockBuilder();

            dataBlockBuilder1.DataFormat  = CodecID.Mpeg2System;
            dataBlockBuilder1.Detectors   = new[] { systemDetector };
            dataBlockBuilder1.InputFile   = inputFile1;
            dataBlockBuilder1.StartOffset = 0L;
            dataBlockBuilder1.EndOffset   = 20480L;
            dataBlockBuilder1.IsFullFile  = true;
            ICodecStreamBuilder codecStreamBuilder = dataBlockBuilder1.AddCodecStream();

            codecStreamBuilder.Name       = "Video Stream #1";
            codecStreamBuilder.DataFormat = CodecID.Mpeg2Video;
            codecStreamBuilder.Detector   = videoDetector;
            codecStreamBuilder.Data       = TestFramework.CreateDataPacket(inputFile1, 0L, 3033L);
            IDataBlock dataBlock1 = dataBlockBuilder1.Build();

            IDataBlockBuilder dataBlockBuilder2 = TestFramework.CreateDataBlockBuilder();

            dataBlockBuilder2.DataFormat  = CodecID.Mpeg2Video;
            dataBlockBuilder2.Detectors   = new[] { videoDetector };
            dataBlockBuilder2.InputFile   = inputFile1;
            dataBlockBuilder2.StartOffset = 130303L;
            dataBlockBuilder2.EndOffset   = 130327L;
            dataBlockBuilder2.IsFullFile  = false;
            IDataBlock dataBlock2 = dataBlockBuilder2.Build();

            IDataBlockBuilder dataBlockBuilder3 = TestFramework.CreateDataBlockBuilder();

            dataBlockBuilder3.DataFormat  = CodecID.Mpeg2Video;
            dataBlockBuilder3.Detectors   = new[] { videoDetector };
            dataBlockBuilder3.InputFile   = inputFile2;
            dataBlockBuilder3.StartOffset = 0L;
            dataBlockBuilder3.EndOffset   = FileLength2;
            dataBlockBuilder3.IsFullFile  = true;
            IDataBlock dataBlock3 = dataBlockBuilder3.Build();

            project.AddDataBlock(dataBlock1);
            project.AddDataBlock(dataBlock2);
            project.AddDataBlock(dataBlock3);
            project.SetMetadata(_fullMetadata);
//			project.SetVisibleColumns(systemDetector, TwoColumns);

            IProject deserializedProject;

            using (FileStream fileStream = new FileStream(_project.FileName, FileMode.Create))
            {
                TestFramework.CreateXmlObjectSerializer().WriteObject(fileStream, project);
            }
            using (FileStream fileStream = new FileStream(ProjectPath, FileMode.Open))
            {
                deserializedProject = TestFramework.CreateXmlObjectSerializer().ReadObject(fileStream) as IProject;
            }

            IList <IInputFile> inputFiles = deserializedProject.GetInputFiles();

            Assert.AreEqual(2, inputFiles.Count, "Serialization, input files (2 files)");
            AreEqual(inputFile1, inputFiles[0], "1");
            AreEqual(inputFile2, inputFiles[1], "2");

            IList <IDataBlock> dataBlocks = deserializedProject.GetDataBlocks(inputFiles[0]);

            Assert.AreEqual(2, dataBlocks.Count, "Serialization, data blocks (file 1, 2 blocks)");
            AreEqual(dataBlock1, dataBlocks[0], "1", "1");
            AreEqual(dataBlock2, dataBlocks[1], "1", "2");
            dataBlocks = deserializedProject.GetDataBlocks(inputFiles[1]);
            Assert.AreEqual(1, dataBlocks.Count, "Serialization, data blocks (file 2, 1 block)");
            AreEqual(dataBlock3, dataBlocks[0], "2", "1");

            IDictionary <ProjectMetadataKey, string> metadata = deserializedProject.GetMetadata();

            Assert.AreEqual(5, metadata.Count, "Serialization, metadata (5 entries)");
            Assert.IsTrue(metadata.ContainsKey(ProjectMetadataKey.FileVersion), "Serialization, metadata (FileVersion)");
            Assert.AreEqual("1.0.0.4", metadata[ProjectMetadataKey.FileVersion], "Serialization, metadata (FileVersion)");
            Assert.IsTrue(metadata.ContainsKey(ProjectMetadataKey.ProjectDescription), "Serialization, metadata (ProjectDescription)");
            Assert.AreEqual(ProjectDescription, metadata[ProjectMetadataKey.ProjectDescription], "Serialization, metadata (ProjectDescription)");
            Assert.IsTrue(metadata.ContainsKey(ProjectMetadataKey.InvestigatorName), "Serialization, metadata (InvestigatorName)");
            Assert.AreEqual(ProjectInvestigator, metadata[ProjectMetadataKey.InvestigatorName], "Serialization, metadata (InvestigatorName)");
            Assert.IsTrue(metadata.ContainsKey(ProjectMetadataKey.DateCreated), "Serialization, metadata (DateCreated)");
            Assert.AreEqual(ProjectCreationDate, metadata[ProjectMetadataKey.DateCreated], "Serialization, metadata (DateCreated)");
            Assert.IsTrue(metadata.ContainsKey(ProjectMetadataKey.DateLastModified), "Serialization, metadata (DateLastModified)");
            Assert.AreEqual(ProjectModificationDate, metadata[ProjectMetadataKey.DateLastModified], "Serialization, metadata (DateLastModified)");

            //IList<IColumnInfo> visibleColumns = deserializedProject.GetVisibleColumns(systemDetector);
            //Assert.AreEqual(2, visibleColumns.Count, "Serialization, visible columns (2 columns)");
            //Assert.IsTrue(visibleColumns.Contains(_columnInfo1), "Serialization, visible columns (column 1)");
            //Assert.IsTrue(visibleColumns.Contains(_columnInfo2), "Serialization, visible columns (column 2)");

            TestFramework.ProjectManager.CloseProject(project);
        }
Beispiel #12
0
        //      ADDED
        private void GenerateMainFile(IProject project, IComponentDescriptor cd)
        {
            string fname = MakeSysCSourceFileName("main");
            string path = project.AddFile(fname);
            StreamWriter sw = new StreamWriter(path);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "  ");
            string SimTimeUnit;

            CreateFileHeader(new GeneratorInfo(fname), tw);
            GenerateDependencies(null, tw, GetComponentName(cd));

            //  Get Simulation Time
            switch (SimTime.Unit)
            {
                case ETimeUnit.fs:
                    SimTimeUnit = "SC_FS";
                    break;
                case ETimeUnit.ps:
                    SimTimeUnit = "SC_PS";
                    break;
                case ETimeUnit.ns:
                    SimTimeUnit = "SC_NS";
                    break;
                case ETimeUnit.us:
                    SimTimeUnit = "SC_US";
                    break;
                case ETimeUnit.ms:
                    SimTimeUnit = "SC_MS";
                    break;
                case ETimeUnit.sec:
                    SimTimeUnit = "SC_SEC";
                    break;
                default:
                    throw new NotImplementedException();
            }

            tw.WriteLine();
            tw.WriteLine("int sc_main(int argc, char* argv[])");
            tw.WriteLine("{");
            tw.Indent++;
            tw.WriteLine("sc_report_handler::set_actions (SC_WARNING, SC_DO_NOTHING);");
            tw.WriteLine();
            tw.WriteLine(GetComponentName(cd) + " "
                + GetComponentName(((ComponentDescriptor)cd).Instance.Representant.Descriptor)
                + "(\"" + GetComponentName(cd) + "\");");

            tw.WriteLine();
            tw.WriteLine("sc_start(" + SimTime.Value + ", " + SimTimeUnit + ");");
            tw.WriteLine();
            tw.WriteLine("return 0;");
            tw.Indent--;
            tw.WriteLine("}");

            tw.Flush();
            tw.Close();
            sw.Close();
        }
Beispiel #13
0
        // TODO
        public void GeneratePackage(IProject project, PackageDescriptor pd)
        {
            string name = MakeIDName(pd.PackageName, pd);

            string fname = MakeSysCHeaderFileName(name);
            string path = project.AddFile(fname);
            project.AddFileAttribute(fname, pd);
            if (pd.Library != null)
                project.SetFileLibrary(fname, pd.Library);
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "  ");

            string cfname = MakeSysCSourceFileName(name);
            string path1 = project.AddFile(cfname);
            project.AddFileAttribute(cfname, pd);
            if (pd.Library != null)
                project.SetFileLibrary(cfname, pd.Library);
            MemoryStream ms1 = new MemoryStream();
            StreamWriter sw1 = new StreamWriter(ms1);
            IndentedTextWriter tw1 = new IndentedTextWriter(sw1, "  ");

            ClearDependencies();

            //tw.Indent++;
            tw1.WriteLine("#include \"" + fname + "\"");
            tw1.WriteLine();

            GenerateTypeDecls(pd, tw);

            foreach (MethodDescriptor md in pd.GetMethods())
            {
                GenerateMethodDecl(md, tw);
                tw.WriteLine();
                GenerateMethodImpl(md, tw1);
                tw1.WriteLine();
            }

            foreach (FieldDescriptor fd in pd.GetConstants())
            {
                DeclareField(fd, tw);
            }
            tw.Indent--;
            //tw.Indent++;
            tw.WriteLine("#endif");

            tw.Flush();
            sw = new StreamWriter(path);
            tw = new IndentedTextWriter(sw, "  ");

            tw1.Flush();
            sw1 = new StreamWriter(path1);
            tw1 = new IndentedTextWriter(sw1, "  ");

            CreateFileHeader(new GeneratorInfo(fname), tw);
            CreateFileHeader(new GeneratorInfo(cfname), tw1);
            GeneratePreProcDir(pd, tw);
            GenerateDependencies(pd, tw);
            //_extraLibraries.Add(new SysCLib(fname));

            tw.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            ms.CopyTo(sw.BaseStream);
            ms.Close();
            tw.Close();
            sw.Close();

            tw1.Flush();
            ms1.Seek(0, SeekOrigin.Begin);
            ms1.CopyTo(sw1.BaseStream);
            ms1.Close();
            tw1.Close();
            sw1.Close();

        }
Beispiel #14
0
        //      ALTERADA
        public void GenerateComponent(IProject project, IComponentDescriptor cd)
        {
            string name = GetComponentName(cd);
            string fname = MakeSysCHeaderFileName(name);
            string path = project.AddFile(fname);
            bool IsTopComponent = (name == "top0") ? true : false;
            project.AddFileAttribute(fname, cd);
            if (cd.Library != null)
                project.SetFileLibrary(fname, cd.Library);
            _sim.PushScope();
            MemoryStream ms = new MemoryStream();
            StreamWriter sw = new StreamWriter(ms);
            IndentedTextWriter tw = new IndentedTextWriter(sw, "  ");
            _curComponent = cd;
            ClearDependencies();
            DeclareAndGenerateModule(cd, tw);

            tw.Flush();
            sw = new StreamWriter(path);
            tw = new IndentedTextWriter(sw, "  ");

            CreateFileHeader(new GeneratorInfo(fname), tw);
            GeneratePreProcDir(cd, tw);
            GenerateDependencies(cd, tw, null);
            tw.Flush();
            ms.Seek(0, SeekOrigin.Begin);
            ms.CopyTo(sw.BaseStream);
            ms.Close();
            tw.Close();
            sw.Close();
            _curComponent = null;
            _sim.PopScope();

            InstanceDescriptor icd = cd as InstanceDescriptor;
            if (icd != null)
            {
                object[] attrs = icd.Instance.GetType().GetCustomAttributes(typeof(ComponentPurpose), true);
                if (attrs.Length > 0)
                {
                    ComponentPurpose purpose = (ComponentPurpose)attrs.First();
                    project.AddFileAttribute(fname, purpose.Purpose);
                }
            }

            if (IsTopComponent)
            {
                GenerateMainFile(project, cd);
            }

        }
 /// <summary>
 /// Adds the given <paramref name="filePath"/> to the <see cref="project"/>
 /// on the GUI thread.
 /// This will set the <see cref="CurrentFile"/> property to the <see cref="IInputFile"/>
 /// that was created by and added to the <paramref name="project"/>.
 /// </summary>
 /// <param name="project">The <see cref="IProject"/> to add the file to</param>
 /// <param name="filePath">The path of the file to add</param>
 /// <param name="detectors">The detectors used for scanning <see cref="filePath"/></param>
 private void AddFileToProject(IProject project, string filePath, IEnumerable <IDetector> detectors)
 {
     _synchronizeInvoke.Invoke(new Action(() => CurrentFile = project.AddFile(filePath, detectors)), null);
 }