Beispiel #1
0
        private void SetupPointers(byte *oneFileStart)
        {
            Header            = (OneArchiveHeader *)oneFileStart;
            NameSectionHeader = (OneNameSectionHeader *)((byte *)Header + sizeof(OneArchiveHeader));
            Names             = new FixedArrayPtr <OneFileName>((ulong)((byte *)NameSectionHeader + sizeof(OneNameSectionHeader)), NameSectionHeader->GetNameCount());
            Files             = (OneFileEntry *)((byte *)Names.Pointer + NameSectionHeader->FileNameSectionLength);

            _fileLength = Header->FileSize + sizeof(OneArchiveHeader);
        }
Beispiel #2
0
            public bool MoveNext()
            {
                // First item
                if (Current == null)
                {
                    Current = _initial;
                    return(true);
                }

                // Every item thereafter.
                Current  = (OneFileEntry *)Unsafe.Add <byte>(Current, Current->FileSize);
                Current += 1;
                return((void *)Current < _maxPointer);
            }
Beispiel #3
0
 public void Reset() => Current = null;
Beispiel #4
0
 public OneArchiveEntryEnumerator(OneFileEntry *initial, void *maxPointer)
 {
     Current     = null;
     _initial    = initial;
     _maxPointer = maxPointer;
 }