mirror of
https://github.com/rvtr/ctr_test_tools.git
synced 2025-06-20 01:25:34 -04:00

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@11 6b0af911-cb57-b745-895f-eec5701120e1
71 lines
2.1 KiB
C#
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();
|
|
}
|
|
}
|