Esempio n. 1
0
        public override CFGData LoadDataLocal(IDataDescriptor id, bool treeStructure, int numberOfVariables = 3, bool recursion = false)
        {
            BenchmarkSuiteDataDescritpor descriptor = (BenchmarkSuiteDataDescritpor)id;
            CFGData cfgData             = descriptor.GenerateData(treeStructure, numberOfVariables, true, new PythonPushRelatedGrammarConstructor()); // set recursion to true. it should always be used for the Push Related Grammars
            var     instanceArchiveName = GetResourceName(FileName + @"\.zip");

            using (
                var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {
                IEnumerable <ZipArchiveEntry> entries = instancesZipFile.Entries.Where(e => e.FullName.StartsWith(descriptor.Identifier) && !String.IsNullOrWhiteSpace(e.Name));

                var embedEntry = entries.FirstOrDefault(x => x.Name.EndsWith("Embed.txt"));
                if (embedEntry != null)
                {
                    using (var stream = new StreamReader(embedEntry.Open())) {
                        cfgData.Embed = stream.ReadToEnd();
                    }
                }
            }

            var pushRelatedArchiveName = GetType().Assembly.GetManifestResourceNames().First(x => x.EndsWith("PythonPushRelated.PushRelated.zip"));

            using (
                var pushRelatedZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(pushRelatedArchiveName), ZipArchiveMode.Read)) {
                ZipArchiveEntry headerEntry = pushRelatedZipFile.Entries.First(e => e.Name == "Embed-Header.txt");

                using (var stream = new StreamReader(headerEntry.Open())) {
                    var realHeader          = stream.ReadToEnd();
                    var endOfOriginalHeader = cfgData.Embed.LastIndexOf(HeaderSeparation);
                    cfgData.Embed = realHeader + cfgData.Embed.Substring(endOfOriginalHeader + HeaderSeparation.Length);
                }

                ZipArchiveEntry additionalEntry = pushRelatedZipFile.Entries.FirstOrDefault(e => e.FullName.StartsWith(descriptor.Identifier) && !String.IsNullOrWhiteSpace(e.Name));
                if (additionalEntry != null)
                {
                    using (var stream = new StreamReader(additionalEntry.Open())) {
                        var additionalHeader = stream.ReadToEnd();
                        var endOfHeader      = cfgData.Embed.LastIndexOf(HeaderSeparation);
                        cfgData.Embed = cfgData.Embed.Substring(0, endOfHeader) + additionalHeader + cfgData.Embed.Substring(endOfHeader, cfgData.Embed.Length - endOfHeader);
                    }
                }
            }

            return(cfgData);
        }
Esempio n. 2
0
        public virtual CFGData LoadDataLocal(IDataDescriptor id, bool treeStructure, int numberOfVariables = 3, bool recursion = false)
        {
            BenchmarkSuiteDataDescritpor descriptor = (BenchmarkSuiteDataDescritpor)id;
            CFGData cfgData             = descriptor.GenerateData(treeStructure, numberOfVariables, recursion, new PythonGrammarConstructor());
            var     instanceArchiveName = GetResourceName(FileName + @"\.zip");

            using (
                var instancesZipFile = new ZipArchive(GetType().Assembly.GetManifestResourceStream(instanceArchiveName), ZipArchiveMode.Read)) {
                IEnumerable <ZipArchiveEntry> entries = instancesZipFile.Entries.Where(e => e.FullName.StartsWith(descriptor.Identifier) && !String.IsNullOrWhiteSpace(e.Name));

                var embedEntry = entries.FirstOrDefault(x => x.Name.EndsWith("Embed.txt"));
                if (embedEntry != null)
                {
                    using (var stream = new StreamReader(embedEntry.Open())) {
                        cfgData.Embed = stream.ReadToEnd();
                    }
                }
            }
            return(cfgData);
        }