예제 #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NefsHeaderPart1"/> class.
        /// </summary>
        /// <param name="items">The list of items in the archive sorted by id.</param>
        /// <param name="part4">Header part 4.</param>
        internal NefsHeaderPart1(NefsItemList items, NefsHeaderPart4 part4)
        {
            this.entriesById = new SortedDictionary <NefsItemId, NefsHeaderPart1Entry>();
            var nextMetadataIndex = 0U;

            // Enumerate this list depth first. This determines the metadata index.
            // The part 1 entries will be sorted by item id.
            foreach (var item in items.EnumerateDepthFirstByName())
            {
                var entry = new NefsHeaderPart1Entry();
                entry.Data0x00_OffsetToData.Value   = item.DataSource.Offset;
                entry.Data0x08_MetadataIndex.Value  = nextMetadataIndex++;
                entry.Data0x10_Id.Value             = item.Id.Value;
                entry.Data0x0c_IndexIntoPart4.Value = part4.GetIndexForItem(item);

                this.entriesById.Add(item.Id, entry);
            }

            // Part 1 is sorted by item id
            this.entriesByIndex = new List <NefsHeaderPart1Entry>(this.entriesById.Values);
        }
예제 #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NefsHeader"/> class.
 /// </summary>
 /// <param name="intro">Header intro.</param>
 /// <param name="toc">Header intro table of contents.</param>
 /// <param name="part1">Header part 1.</param>
 /// <param name="part2">Header part 2.</param>
 /// <param name="part3">Header part 3.</param>
 /// <param name="part4">Header part 4.</param>
 /// <param name="part5">Header part 5.</param>
 /// <param name="part6">Header part 6.</param>
 /// <param name="part7">Header part 7.</param>
 /// <param name="part8">Header part 8.</param>
 public NefsHeader(
     NefsHeaderIntro intro,
     NefsHeaderIntroToc toc,
     NefsHeaderPart1 part1,
     NefsHeaderPart2 part2,
     NefsHeaderPart3 part3,
     NefsHeaderPart4 part4,
     NefsHeaderPart5 part5,
     NefsHeaderPart6 part6,
     NefsHeaderPart7 part7,
     NefsHeaderPart8 part8)
 {
     this.Intro           = intro ?? throw new ArgumentNullException(nameof(intro));
     this.TableOfContents = toc ?? throw new ArgumentNullException(nameof(toc));
     this.Part1           = part1 ?? throw new ArgumentNullException(nameof(part1));
     this.Part2           = part2 ?? throw new ArgumentNullException(nameof(part2));
     this.Part3           = part3 ?? throw new ArgumentNullException(nameof(part3));
     this.Part4           = part4 ?? throw new ArgumentNullException(nameof(part4));
     this.Part5           = part5 ?? throw new ArgumentNullException(nameof(part5));
     this.Part6           = part6 ?? throw new ArgumentNullException(nameof(part6));
     this.Part7           = part7 ?? throw new ArgumentNullException(nameof(part7));
     this.Part8           = part8 ?? throw new ArgumentNullException(nameof(part8));
 }