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); }
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); }