public static Type00Block FromReader(BinaryReader br) { Type00Block t0b = new Type00Block(); t0b.Read(br); return(t0b); }
// Recursive private bool ReadBlocks(BinaryReader br, int?address, int amount, List <Type00Block> t00blocks) { if (amount > 0 && address != null) { List <Type00Block> t00NextBlocks = new List <Type00Block>(); br.BaseStream.Seek(address.Value, SeekOrigin.Begin); for (int i = 0; i < amount; i++) { Type00Block t0b = Type00Block.FromReader(br); t00NextBlocks.Add(t0b); } for (int i = 0; i < t00NextBlocks.Count; i++) { if (!ReadBlocks(br, t00NextBlocks[i].nextAddress, t00NextBlocks[i].nextAmount, t00NextBlocks)) { return(false); } } t00blocks.AddRange(t00NextBlocks); } return(true); }