Files
sharpcompress/SharpCompress/IO/MarkingBinaryReader.cs
2013-04-28 12:32:55 +01:00

132 lines
3.1 KiB
C#

using System;
using System.IO;
namespace SharpCompress.IO
{
internal class MarkingBinaryReader : BinaryReader
{
public MarkingBinaryReader(Stream stream)
: base(stream)
{
}
public long CurrentReadByteCount { get; private set; }
public void Mark()
{
CurrentReadByteCount = 0;
}
public override int Read()
{
CurrentReadByteCount += 4;
return base.Read();
}
public override int Read(byte[] buffer, int index, int count)
{
CurrentReadByteCount += count;
return base.Read(buffer, index, count);
}
public override int Read(char[] buffer, int index, int count)
{
throw new NotImplementedException();
}
public override bool ReadBoolean()
{
CurrentReadByteCount++;
return base.ReadBoolean();
}
public override byte ReadByte()
{
CurrentReadByteCount++;
return base.ReadByte();
}
public override byte[] ReadBytes(int count)
{
CurrentReadByteCount += count;
return base.ReadBytes(count);
}
public override char ReadChar()
{
throw new NotImplementedException();
}
public override char[] ReadChars(int count)
{
throw new NotImplementedException();
}
#if !SILVERLIGHT && !PORTABLE
public override decimal ReadDecimal()
{
CurrentReadByteCount += 16;
return base.ReadDecimal();
}
#endif
public override double ReadDouble()
{
CurrentReadByteCount += 8;
return base.ReadDouble();
}
public override short ReadInt16()
{
CurrentReadByteCount += 2;
return base.ReadInt16();
}
public override int ReadInt32()
{
CurrentReadByteCount += 4;
return base.ReadInt32();
}
public override long ReadInt64()
{
CurrentReadByteCount += 8;
return base.ReadInt64();
}
public override sbyte ReadSByte()
{
CurrentReadByteCount++;
return base.ReadSByte();
}
public override float ReadSingle()
{
CurrentReadByteCount += 4;
return base.ReadSingle();
}
public override string ReadString()
{
throw new NotImplementedException();
}
public override ushort ReadUInt16()
{
CurrentReadByteCount += 2;
return base.ReadUInt16();
}
public override uint ReadUInt32()
{
CurrentReadByteCount += 4;
return base.ReadUInt32();
}
public override ulong ReadUInt64()
{
CurrentReadByteCount += 8;
return base.ReadUInt64();
}
}
}