using System; using System.Diagnostics; namespace TwlBackupBlock { /// /// ブロックの集合です。 /// public class Blocks : ICloneable { private const int NUM_BLOCKS = 7; public Block banner; public Block header; public Block signature; public Block tmd; public Block content; public Block saveData; public Block subBanner; /// /// Blocksクラスの新しいインスタンスを初期化します。 /// public Blocks() { banner = new Block(); header = new Block(); signature = new Block(); tmd = new Block(); content = new Block(); saveData = new Block(); subBanner = new Block(); } /// /// 指定したインデックスのブロックにアクセスします。 /// /// インデックス。 /// 指定したインデックスのブロック。 public Block this[int index] { get { switch (index) { case 0: return banner; case 1: return header; case 2: return signature; case 3: return tmd; case 4: return content; case 5: return saveData; case 6: return subBanner; default: Debug.Assert(false); return null; // never reach } } } /// /// ブロック数(=7)を取得します。 /// public int Length { get { return NUM_BLOCKS; } } /// /// Blocksのディープコピーを作成します。 /// /// Blocksのコピー public object Clone() { Blocks newBlocks = new Blocks(); newBlocks.banner = (Block)banner.Clone(); newBlocks.header = (Block)header.Clone(); newBlocks.signature = (Block)signature.Clone(); newBlocks.tmd = (Block)tmd.Clone(); newBlocks.content = (Block)content.Clone(); newBlocks.saveData = (Block)saveData.Clone(); newBlocks.subBanner = (Block)subBanner.Clone(); return newBlocks; } } }