mirror of
https://github.com/adamhathcock/sharpcompress.git
synced 2026-09-22 06:54:40 +00:00
first pass of sync generator
This commit is contained in:
@@ -7,6 +7,7 @@ namespace SharpCompress.Compressors.Filters;
|
||||
|
||||
internal abstract partial class Filter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
@@ -200,6 +201,7 @@ internal abstract partial class Filter
|
||||
}
|
||||
#endif
|
||||
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task WriteAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -50,99 +50,9 @@ internal abstract partial class Filter : Stream
|
||||
set => throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var size = 0;
|
||||
|
||||
if (_transformed > 0)
|
||||
{
|
||||
var copySize = _transformed;
|
||||
if (copySize > count)
|
||||
{
|
||||
copySize = count;
|
||||
}
|
||||
Buffer.BlockCopy(_tail, 0, buffer, offset, copySize);
|
||||
_transformed -= copySize;
|
||||
_read -= copySize;
|
||||
offset += copySize;
|
||||
count -= copySize;
|
||||
size += copySize;
|
||||
Buffer.BlockCopy(_tail, copySize, _tail, 0, _read);
|
||||
}
|
||||
if (count == 0)
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
var inSize = _read;
|
||||
if (inSize > count)
|
||||
{
|
||||
inSize = count;
|
||||
}
|
||||
Buffer.BlockCopy(_tail, 0, buffer, offset, inSize);
|
||||
_read -= inSize;
|
||||
Buffer.BlockCopy(_tail, inSize, _tail, 0, _read);
|
||||
while (!_endReached && inSize < count)
|
||||
{
|
||||
var baseRead = _baseStream.Read(buffer, offset + inSize, count - inSize);
|
||||
inSize += baseRead;
|
||||
if (baseRead == 0)
|
||||
{
|
||||
_endReached = true;
|
||||
}
|
||||
}
|
||||
while (!_endReached && _read < _tail.Length)
|
||||
{
|
||||
var baseRead = _baseStream.Read(_tail, _read, _tail.Length - _read);
|
||||
_read += baseRead;
|
||||
if (baseRead == 0)
|
||||
{
|
||||
_endReached = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (inSize > _tail.Length)
|
||||
{
|
||||
_transformed = Transform(buffer, offset, inSize);
|
||||
offset += _transformed;
|
||||
count -= _transformed;
|
||||
size += _transformed;
|
||||
inSize -= _transformed;
|
||||
_transformed = 0;
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
Buffer.BlockCopy(buffer, offset, _window, 0, inSize);
|
||||
Buffer.BlockCopy(_tail, 0, _window, inSize, _read);
|
||||
if (inSize + _read > _tail.Length)
|
||||
{
|
||||
_transformed = Transform(_window, 0, inSize + _read);
|
||||
}
|
||||
else
|
||||
{
|
||||
_transformed = inSize + _read;
|
||||
}
|
||||
Buffer.BlockCopy(_window, 0, buffer, offset, inSize);
|
||||
Buffer.BlockCopy(_window, inSize, _tail, 0, _read);
|
||||
size += inSize;
|
||||
_transformed -= inSize;
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException();
|
||||
|
||||
public override void SetLength(long value) => throw new NotSupportedException();
|
||||
|
||||
public override void Write(byte[] buffer, int offset, int count)
|
||||
{
|
||||
Transform(buffer, offset, count);
|
||||
_baseStream.Write(buffer, offset, count);
|
||||
}
|
||||
|
||||
protected abstract int Transform(byte[] buffer, int offset, int count);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class ArmFilter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -45,13 +44,5 @@ public partial class ArmFilter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.ARMConverter(buffer, _ip);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class ArmThumbFilter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -45,13 +44,5 @@ public partial class ArmThumbFilter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.ARMTConverter(buffer, _ip);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class IA64Filter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -45,13 +44,5 @@ public partial class IA64Filter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.IA64Converter(buffer, _ip);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class Lzma2Filter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -52,8 +52,5 @@ public partial class Lzma2Filter : BlockFilter
|
||||
public override void SetBaseStream(Stream stream) =>
|
||||
BaseStream = LzmaStream.Create(new[] { _dictionarySize }, stream);
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count) =>
|
||||
BaseStream.Read(buffer, offset, count);
|
||||
|
||||
public override int ReadByte() => BaseStream.ReadByte();
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class PowerPCFilter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -45,13 +44,5 @@ public partial class PowerPCFilter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.PowerPCConverter(buffer, _ip);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class SparcFilter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -45,13 +44,5 @@ public partial class SparcFilter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.SPARCConverter(buffer, _ip);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
public partial class X86Filter
|
||||
{
|
||||
[Zomp.SyncMethodGenerator.CreateSyncVersion]
|
||||
public override async Task<int> ReadAsync(
|
||||
byte[] buffer,
|
||||
int offset,
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
using System.IO;
|
||||
using SharpCompress.Common;
|
||||
using SharpCompress.Compressors.Filters;
|
||||
|
||||
namespace SharpCompress.Compressors.Xz.Filters;
|
||||
|
||||
@@ -47,13 +46,5 @@ public partial class X86Filter : BlockFilter
|
||||
|
||||
public override void ValidateFilter() { }
|
||||
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
var bytesRead = BaseStream.Read(buffer, offset, count);
|
||||
BranchExecFilter.X86Converter(buffer, _ip, ref _state);
|
||||
_ip += (uint)bytesRead;
|
||||
return bytesRead;
|
||||
}
|
||||
|
||||
public override void SetBaseStream(Stream stream) => BaseStream = stream;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user