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); }
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); }
public void Reset() => Current = null;
public OneArchiveEntryEnumerator(OneFileEntry *initial, void *maxPointer) { Current = null; _initial = initial; _maxPointer = maxPointer; }