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;
}
}
}