Пример #1
0
        public XLSFile(Stream stream)
        {
            var header  = new XLSHeader(stream);
            var sectors = GetSectors(stream);
            List <SectorIndex> index = new List <SectorIndex>((int)(MaxSectorIndex * header.FatCount));

            Set109Fats(header, sectors, index);
            SetRemainFats(header, sectors, index);
            SetMiniFats(header, sectors, index);
            var dirs = SetDirs(header, sectors, index);

            m_Root = XLSDirectoryFactory.CreateEntry(dirs, sectors, index);
            stream.Close();
        }
Пример #2
0
        public XLSDirectory Find(string name)
        {
            XLSDirectory child = Child;

            while (child != null)
            {
                int c = Compare(name, child.Name);
                if (c == 0)
                {
                    break;
                }
                child = GetNext(c, child);
            }

            return(child);
        }
Пример #3
0
        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);
        }
Пример #4
0
 private XLSDirectory GetNext(int c, XLSDirectory child)
 {
     return(c < 0 ? child.LeftSibling
         : (c > 0 ? child.RightSibling : null));
 }