Refactor Read and Write classes to use ReadOnlySpan for tape entries.

This commit is contained in:
2025-09-25 13:37:04 +01:00
parent 5efd86a5c3
commit e8ea2d94d0
3 changed files with 37 additions and 43 deletions

View File

@@ -1166,7 +1166,7 @@ public sealed partial class AaruFormat
byte[] tapePartitionBytes = new byte[partitionHeader.length]; byte[] tapePartitionBytes = new byte[partitionHeader.length];
_imageStream.EnsureRead(tapePartitionBytes, 0, tapePartitionBytes.Length); _imageStream.EnsureRead(tapePartitionBytes, 0, tapePartitionBytes.Length);
Span<TapePartitionEntry> tapePartitions = ReadOnlySpan<TapePartitionEntry> tapePartitions =
MemoryMarshal.Cast<byte, TapePartitionEntry>(tapePartitionBytes); MemoryMarshal.Cast<byte, TapePartitionEntry>(tapePartitionBytes);
TapePartitions = []; TapePartitions = [];
@@ -1198,7 +1198,7 @@ public sealed partial class AaruFormat
byte[] tapeFileBytes = new byte[fileHeader.length]; byte[] tapeFileBytes = new byte[fileHeader.length];
_imageStream.EnsureRead(tapeFileBytes, 0, tapeFileBytes.Length); _imageStream.EnsureRead(tapeFileBytes, 0, tapeFileBytes.Length);
Span<TapeFileEntry> tapeFiles = MemoryMarshal.Cast<byte, TapeFileEntry>(tapeFileBytes); ReadOnlySpan<TapeFileEntry> tapeFiles = MemoryMarshal.Cast<byte, TapeFileEntry>(tapeFileBytes);
Files = []; Files = [];
foreach(TapeFileEntry file in tapeFiles) foreach(TapeFileEntry file in tapeFiles)

View File

@@ -1361,7 +1361,7 @@ public sealed partial class AaruFormat
byte[] tapePartitionBytes = new byte[partitionHeader.length]; byte[] tapePartitionBytes = new byte[partitionHeader.length];
_imageStream.EnsureRead(tapePartitionBytes, 0, tapePartitionBytes.Length); _imageStream.EnsureRead(tapePartitionBytes, 0, tapePartitionBytes.Length);
Span<TapePartitionEntry> tapePartitions = ReadOnlySpan<TapePartitionEntry> tapePartitions =
MemoryMarshal.Cast<byte, TapePartitionEntry>(tapePartitionBytes); MemoryMarshal.Cast<byte, TapePartitionEntry>(tapePartitionBytes);
TapePartitions = []; TapePartitions = [];
@@ -1394,7 +1394,7 @@ public sealed partial class AaruFormat
byte[] tapeFileBytes = new byte[fileHeader.length]; byte[] tapeFileBytes = new byte[fileHeader.length];
_imageStream.EnsureRead(tapeFileBytes, 0, tapeFileBytes.Length); _imageStream.EnsureRead(tapeFileBytes, 0, tapeFileBytes.Length);
Span<TapeFileEntry> tapeFiles = MemoryMarshal.Cast<byte, TapeFileEntry>(tapeFileBytes); ReadOnlySpan<TapeFileEntry> tapeFiles = MemoryMarshal.Cast<byte, TapeFileEntry>(tapeFileBytes);
Files = []; Files = [];
foreach(TapeFileEntry file in tapeFiles) foreach(TapeFileEntry file in tapeFiles)
@@ -1899,8 +1899,9 @@ public sealed partial class AaruFormat
// Fill FLAC block // Fill FLAC block
if(remaining != 0) if(remaining != 0)
for(int r = 0; r < remaining * 4; r++) {
_writingBuffer[_writingBufferPosition + r] = 0; for(int r = 0; r < remaining * 4; r++) _writingBuffer[_writingBufferPosition + r] = 0;
}
compressedLength = FLAC.EncodeBuffer(_writingBuffer, compressedLength = FLAC.EncodeBuffer(_writingBuffer,
_compressedBuffer, _compressedBuffer,
@@ -2692,8 +2693,9 @@ public sealed partial class AaruFormat
// Fill FLAC block // Fill FLAC block
if(remaining != 0) if(remaining != 0)
for(int r = 0; r < remaining * 4; r++) {
_writingBuffer[_writingBufferPosition + r] = 0; for(int r = 0; r < remaining * 4; r++) _writingBuffer[_writingBufferPosition + r] = 0;
}
compressedLength = FLAC.EncodeBuffer(_writingBuffer, compressedLength = FLAC.EncodeBuffer(_writingBuffer,
_compressedBuffer, _compressedBuffer,

View File

@@ -426,19 +426,13 @@ public sealed partial class VMware
AaruLogging.Debug(MODULE_NAME, "vmEHdr.overhead = {0}", _vmEHdr.overhead); AaruLogging.Debug(MODULE_NAME, "vmEHdr.overhead = {0}", _vmEHdr.overhead);
AaruLogging.Debug(MODULE_NAME, "vmEHdr.uncleanShutdown = {0}", _vmEHdr.uncleanShutdown); AaruLogging.Debug(MODULE_NAME, "vmEHdr.uncleanShutdown = {0}", _vmEHdr.uncleanShutdown);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, "vmEHdr.singleEndLineChar = 0x{0:X2}", _vmEHdr.singleEndLineChar);
"vmEHdr.singleEndLineChar = 0x{0:X2}",
_vmEHdr.singleEndLineChar);
AaruLogging.Debug(MODULE_NAME, "vmEHdr.nonEndLineChar = 0x{0:X2}", _vmEHdr.nonEndLineChar); AaruLogging.Debug(MODULE_NAME, "vmEHdr.nonEndLineChar = 0x{0:X2}", _vmEHdr.nonEndLineChar);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, "vmEHdr.doubleEndLineChar1 = 0x{0:X2}", _vmEHdr.doubleEndLineChar1);
"vmEHdr.doubleEndLineChar1 = 0x{0:X2}",
_vmEHdr.doubleEndLineChar1);
AaruLogging.Debug(MODULE_NAME, AaruLogging.Debug(MODULE_NAME, "vmEHdr.doubleEndLineChar2 = 0x{0:X2}", _vmEHdr.doubleEndLineChar2);
"vmEHdr.doubleEndLineChar2 = 0x{0:X2}",
_vmEHdr.doubleEndLineChar2);
AaruLogging.Debug(MODULE_NAME, "vmEHdr.compression = 0x{0:X4}", _vmEHdr.compression); AaruLogging.Debug(MODULE_NAME, "vmEHdr.compression = 0x{0:X4}", _vmEHdr.compression);
@@ -511,7 +505,7 @@ public sealed partial class VMware
AaruLogging.Debug(MODULE_NAME, Localization.Reading_grain_directory); AaruLogging.Debug(MODULE_NAME, Localization.Reading_grain_directory);
byte[] gdBytes = new byte[gdEntries * 4]; byte[] gdBytes = new byte[gdEntries * 4];
gdStream.EnsureRead(gdBytes, 0, gdBytes.Length); gdStream.EnsureRead(gdBytes, 0, gdBytes.Length);
Span<uint> gd = MemoryMarshal.Cast<byte, uint>(gdBytes); ReadOnlySpan<uint> gd = MemoryMarshal.Cast<byte, uint>(gdBytes);
AaruLogging.Debug(MODULE_NAME, Localization.Reading_grain_tables); AaruLogging.Debug(MODULE_NAME, Localization.Reading_grain_tables);
uint currentGrain = 0; uint currentGrain = 0;
@@ -559,9 +553,7 @@ public sealed partial class VMware
if(parentError != ErrorNumber.NoError) if(parentError != ErrorNumber.NoError)
{ {
AaruLogging.Error(string.Format(Localization.Error_0_opening_parent_1, AaruLogging.Error(string.Format(Localization.Error_0_opening_parent_1, parentError, _parentName));
parentError,
_parentName));
return parentError; return parentError;
} }