Пример #1
0
        internal MulContainer(MulContainer container, uint entryoff, uint entries = 0, uint entrySize = 0)
        {
            if (container == null || !container.IsVirtual)
            {
                throw new ArgumentException("Mul container is null or not virtual.");
            }
            _Parent = container;
            _Parent._Chields.Add(this);
            FNameMul  = container.FNameMul;
            StreamMul = container.StreamMul;
            EntrySize = entrySize;
            _EntryOff = entryoff;

            if (container.StreamIdx != null && (entrySize == 0 || entrySize == 12))
            {
                FNameIdx           = container.FNameIdx;
                StreamIdx          = container.StreamIdx;
                StreamIdx.Position = 12 * entryoff;
                _EntryLength       = entries == 0 ? (uint)StreamIdx.Length / 12 - entryoff : entries;
                IdxTable           = Utils.ArrayRead <IndexEntry>(StreamIdx, (int)_EntryLength);
            }
            else if (container.StreamIdx == null && entrySize != 0)
            {
                FNameIdx     = null;
                StreamIdx    = null;
                IdxTable     = null;
                _EntryLength = entries == 0 ? ((uint)StreamMul.Length - entryoff) / EntrySize : entries;
            }
            _EntryHeaderSize = 0;
            _EntryItemsCount = 1;
            _EntryItemSize   = 0;
        }
Пример #2
0
        internal static MulContainer GetVirtual(string idxFile, string mulFile, bool realTime)
        {
            var container = new MulContainer(realTime, idxFile, mulFile);

            return(container);
            //TODO: we need to remember opend streams for virtual containers
        }
Пример #3
0
 internal MulContainer(MulContainer container, uint entryHeaderSize, uint entryItemSize, uint entryItemsCount, uint entryoff, uint entries = 0)
     : this(container, entryoff, entries, entryHeaderSize + entryItemSize * entryItemsCount)
 {
     if ((container as IDataContainer).IsIndexBased)
     {
         throw new ArgumentException("Index based mul container can't have items.");
     }
     _EntryHeaderSize = entryHeaderSize;
     _EntryItemsCount = entryItemsCount;
     _EntryItemSize   = entryItemSize;
 }
Пример #4
0
 internal static MulContainer GetParent(MulContainer container)
 {
     return(container._Parent);
 }