internal override IEnumerable <SevenZipEntry> GetEntries(Stream stream) { List <SevenZipArchiveEntry> entries = archive.Entries.ToList(); stream.Position = 0; foreach (var dir in entries.Where(x => x.IsDirectory)) { yield return(dir); } foreach (var group in entries.Where(x => !x.IsDirectory).GroupBy(x => x.FilePart.Folder)) { currentFolder = group.Key; if (group.Key == null) { currentStream = Stream.Null; } else { currentStream = archive.database.GetFolderStream(stream, currentFolder, null); } foreach (var entry in group) { currentItem = entry.FilePart.Header; yield return(entry); } } }
internal override IEnumerable <SevenZipEntry> GetEntries(Stream stream) { List <SevenZipArchiveEntry> source = Enumerable.ToList <SevenZipArchiveEntry>(this.archive.Entries); stream.Position = 0L; foreach (SevenZipArchiveEntry iteratorVariable1 in Enumerable.Where <SevenZipArchiveEntry>(source, delegate(SevenZipArchiveEntry x) { return(x.IsDirectory); })) { yield return(iteratorVariable1); } foreach (IGrouping <CFolder, SevenZipArchiveEntry> iteratorVariable2 in Enumerable.GroupBy <SevenZipArchiveEntry, CFolder>(Enumerable.Where <SevenZipArchiveEntry>(source, delegate(SevenZipArchiveEntry x) { return(!x.IsDirectory); }), delegate(SevenZipArchiveEntry x) { return(x.FilePart.Folder); })) { this.currentFolder = iteratorVariable2.Key; if (iteratorVariable2.Key == null) { this.currentStream = Stream.Null; } else { this.currentStream = this.archive.database.GetFolderStream(stream, this.currentFolder, null); } foreach (SevenZipArchiveEntry iteratorVariable3 in iteratorVariable2) { this.currentItem = iteratorVariable3.FilePart.Header; yield return(iteratorVariable3); } } }
protected override IEnumerable <SevenZipArchiveEntry> LoadEntries(IEnumerable <SevenZipVolume> volumes) { Stream stream = Enumerable.Single <SevenZipVolume>(volumes).Stream; this.LoadFactory(stream); for (int i = 0; i < this.database.Files.Count; i++) { CFileItem fileEntry = this.database.Files[i]; if (!fileEntry.IsDir) { yield return(new SevenZipArchiveEntry(this, new SevenZipFilePart(stream, this.database, i, fileEntry))); } } }