public static XLSDirectory CreateEntry(DirectorySectorData root, List <DirectorySectorData> dirs, List <Sector> sectors, List <SectorIndex> index) { var result = GetEntry(root, sectors, index); if (!root.LeftSibling.IsEof) { result.LeftSibling = CreateEntry(dirs[root.LeftSibling.ToInt()], dirs, sectors, index); } if (!root.RightSibling.IsEof) { result.RightSibling = CreateEntry(dirs[root.RightSibling.ToInt()], dirs, sectors, index); } if (!root.Child.IsEof) { result.Child = CreateEntry(dirs[root.Child.ToInt()], dirs, sectors, index); } return(result); }
public DirectorySector(Stream stream) { Entries = new DirectorySectorData[4]; for (int i = 0; i < Entries.Length; ++i) { Entries[i] = new DirectorySectorData(stream); } }
private static XLSDirectory GetEntry(DirectorySectorData entry, List <Sector> sectors, List <SectorIndex> index) { XLSDirectory result = null; switch (entry.Type) { case Stgty.Storage: result = new XLSDirectory(entry.Name); break; case Stgty.Stream: result = new XLSStreamDirectory(entry.Name, entry.Size, entry.Start, sectors, index); break; default: result = new XLSGenericDirectory(entry.Name, entry.Type); break; } return(result); }