mirror of
https://github.com/rvtr/ctr_test_tools.git
synced 2025-06-19 00:55:31 -04:00

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_test_tools@27 6b0af911-cb57-b745-895f-eec5701120e1
151 lines
5.5 KiB
C#
151 lines
5.5 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace TwlBackupBlock
|
|
{
|
|
/// <summary>
|
|
/// BinaryReaderのReadをラップするクラスです。
|
|
/// </summary>
|
|
public class ExtBinaryReader : IDisposable
|
|
{
|
|
private bool disposed;
|
|
private BinaryReader br;
|
|
|
|
/// <summary>
|
|
/// 指定したMemoryStreamをもとに、ExtBinaryReaderクラスの新しいインスタンスを初期化します。
|
|
/// </summary>
|
|
/// <param name="ms"></param>
|
|
public ExtBinaryReader(MemoryStream ms)
|
|
{
|
|
disposed = false;
|
|
br = new BinaryReader(ms);
|
|
}
|
|
|
|
~ExtBinaryReader()
|
|
{
|
|
Dispose(false);
|
|
}
|
|
|
|
/// <summary>
|
|
/// ExtBinaryReaderを破棄します。
|
|
/// </summary>
|
|
public void Dispose()
|
|
{
|
|
Dispose(true);
|
|
GC.SuppressFinalize(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// ExtBinaryReaderを破棄します。
|
|
/// </summary>
|
|
/// <param name="disposing">BinaryReaderも破棄する場合はtrue。それ以外の場合はfalse。</param>
|
|
protected virtual void Dispose(bool disposing)
|
|
{
|
|
if (!disposed)
|
|
{
|
|
if (disposing)
|
|
{
|
|
((IDisposable)br).Dispose();
|
|
}
|
|
}
|
|
disposed = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから次のバイトを読み取り、ストリームの現在位置を1バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref Byte value)
|
|
{
|
|
value = br.ReadByte();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから2バイト符号なし整数を読み取り、ストリームの現在位置を2バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref UInt16 value)
|
|
{
|
|
value = br.ReadUInt16();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから4バイト符号なし整数を読み取り、ストリームの現在位置を4バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref UInt32 value)
|
|
{
|
|
value = br.ReadUInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから8バイト符号なし整数を読み取り、ストリームの現在位置を8バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref UInt64 value)
|
|
{
|
|
value = br.ReadUInt64();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから2バイト符号付き整数を読み取り、ストリームの現在位置を2バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref Int16 value)
|
|
{
|
|
value = br.ReadInt16();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから4バイト符号付き整数を読み取り、ストリームの現在位置を4バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref Int32 value)
|
|
{
|
|
value = br.ReadInt32();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから8バイト符号付き整数を読み取り、ストリームの現在位置を8バイトだけ進めます。
|
|
/// </summary>
|
|
/// <param name="value">データを読み取るバッファ</param>
|
|
public void Read(ref Int64 value)
|
|
{
|
|
value = br.ReadInt64();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから指定した配列にバイトを読み取り、ストリームの現在位置を指定した配列のバイト数だけ進めます。
|
|
/// </summary>
|
|
/// <param name="buffer">データを読み取るバッファ</param>
|
|
public void Read(Byte[] buffer)
|
|
{
|
|
br.Read(buffer, 0, buffer.Length);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから指定した配列に2バイト符号なし整数を読み取り、ストリームの現在位置を指定した配列のバイト数だけ進めます。
|
|
/// </summary>
|
|
/// <param name="buffer">データを読み取るバッファ</param>
|
|
public void Read(UInt16[] buffer)
|
|
{
|
|
for (int i = 0; i < buffer.Length; i++)
|
|
{
|
|
Read(ref buffer[i]);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 現在のストリームから指定した配列に4バイト符号なし整数を読み取り、ストリームの現在位置を指定した配列のバイト数だけ進めます。
|
|
/// </summary>
|
|
/// <param name="buffer">データを読み取るバッファ</param>
|
|
public void Read(UInt32[] buffer)
|
|
{
|
|
for (int i = 0; i < buffer.Length; i++)
|
|
{
|
|
Read(ref buffer[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|