ctr_test_tools/TwlBkpCheck/Windows/TWLBackupBlock/AbstractBody.cs
n2460 155d21f9df TWLBackupBlock:ディレクトリ移動。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@11 6b0af911-cb57-b745-895f-eec5701120e1
2011-10-18 08:27:25 +00:00

71 lines
2.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
namespace TwlBackupBlock
{
/// <summary>
/// データ本体を表す抽象クラスです。
/// </summary>
public abstract class AbstractBody : IEnumerable<byte>, ICloneable
{
/// <summary>
/// 指定したインデックスにアクセスします。
/// </summary>
/// <param name="index">アクセスするインデックス。</param>
/// <returns>指定したインデックスのバイトデータ。</returns>
public abstract byte this[int index]
{
get;
set;
}
/// <summary>
/// データ本体のバイトサイズを取得します。
/// </summary>
public abstract int Length
{
get;
}
/// <summary>
/// イテレータブロック。
/// </summary>
/// <returns>列挙子。</returns>
public IEnumerator<byte> GetEnumerator()
{
for (int i = 0; i < Length; i++)
{
yield return this[i];
}
}
/// <summary>
/// イテレータブロック。
/// </summary>
/// <returns>列挙子。</returns>
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
/// <summary>
/// データ本体を表すバイト配列を取得します。
/// </summary>
/// <returns>データ本体を表すバイト配列</returns>
public abstract byte[] GetBytes();
/// <summary>
/// バイト配列からデータ本体を構成します。
/// </summary>
/// <param name="bytes">データ本体を表すバイト配列</param>
public abstract void SetBytes(byte[] bytes);
/// <summary>
/// AbstractBodyのディープコピーを作成します。
/// </summary>
/// <returns>AbstractBodyのコピー</returns>
public abstract object Clone();
}
}