| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using System;
- using System.IO;
- namespace Ryujinx.HLE.HOS
- {
- class HomebrewRomFsStream : Stream
- {
- private Stream _baseStream;
- private long _positionOffset;
- public HomebrewRomFsStream(Stream baseStream, long positionOffset)
- {
- _baseStream = baseStream;
- _positionOffset = positionOffset;
- _baseStream.Position = _positionOffset;
- }
- public override bool CanRead => _baseStream.CanRead;
- public override bool CanSeek => _baseStream.CanSeek;
- public override bool CanWrite => false;
- public override long Length => _baseStream.Length - _positionOffset;
- public override long Position
- {
- get
- {
- return _baseStream.Position - _positionOffset;
- }
- set
- {
- _baseStream.Position = value + _positionOffset;
- }
- }
- public override void Flush()
- {
- _baseStream.Flush();
- }
- public override int Read(byte[] buffer, int offset, int count)
- {
- return _baseStream.Read(buffer, offset, count);
- }
- public override long Seek(long offset, SeekOrigin origin)
- {
- if (origin == SeekOrigin.Begin)
- {
- offset += _positionOffset;
- }
- return _baseStream.Seek(offset, origin);
- }
- public override void SetLength(long value)
- {
- throw new NotImplementedException();
- }
- public override void Write(byte[] buffer, int offset, int count)
- {
- throw new NotImplementedException();
- }
- protected override void Dispose(bool disposing)
- {
- if (disposing)
- {
- _baseStream.Dispose();
- }
- }
- }
- }
|