diff --git a/BitStream.cs b/BitStream.cs
index d6fa53c..f70eaaa 100644
--- a/BitStream.cs
+++ b/BitStream.cs
@@ -33,11 +33,7 @@ namespace SabreTools.Compression
///
/// Create a new BitStream from a source Stream
///
-#if NET48
- public BitStream(Stream source)
-#else
public BitStream(Stream? source)
-#endif
{
if (source == null || !source.CanRead || !source.CanSeek)
throw new ArgumentException(nameof(source));
@@ -210,11 +206,7 @@ namespace SabreTools.Compression
/// Number of bytes to read
/// The next bytes, null on error or end of stream
/// Assumes the stream is byte-aligned
-#if NET48
- public byte[] ReadBytes(int bytes)
-#else
public byte[]? ReadBytes(int bytes)
-#endif
{
try
{
diff --git a/LZ/Decompressor.cs b/LZ/Decompressor.cs
index 7194cd2..a256ef0 100644
--- a/LZ/Decompressor.cs
+++ b/LZ/Decompressor.cs
@@ -17,11 +17,7 @@ namespace SabreTools.Compression.LZ
///
/// Byte array representing the compressed data
/// Decompressed data as a byte array, null on error
-#if NET48
- public static byte[] Decompress(byte[] compressed)
-#else
public static byte[]? Decompress(byte[]? compressed)
-#endif
{
// If we have and invalid input
if (compressed == null || compressed.Length == 0)
@@ -37,11 +33,7 @@ namespace SabreTools.Compression.LZ
///
/// Stream representing the compressed data
/// Decompressed data as a byte array, null on error
-#if NET48
- public static byte[] Decompress(Stream compressed)
-#else
public static byte[]? Decompress(Stream? compressed)
-#endif
{
// If we have and invalid input
if (compressed == null || compressed.Length == 0)
@@ -87,11 +79,7 @@ namespace SabreTools.Compression.LZ
///
/// Reconstructs the full filename of the compressed file
///
-#if NET48
- public static string GetExpandedName(string input, out LZERROR error)
-#else
public static string? GetExpandedName(string input, out LZERROR error)
-#endif
{
// Try to open the file as a compressed stream
var fileStream = File.Open(input, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
@@ -137,11 +125,7 @@ namespace SabreTools.Compression.LZ
/// Output representing the last error
/// An initialized State, null on error
/// Uncompressed streams are represented by a State with no buffer
-#if NET48
- public State Open(Stream stream, out LZERROR error)
-#else
public State? Open(Stream stream, out LZERROR error)
-#endif
{
var lzs = Init(stream, out error);
if (error == LZERROR.LZERROR_OK || error == LZERROR.LZERROR_NOT_LZ)
@@ -170,11 +154,7 @@ namespace SabreTools.Compression.LZ
/// Output representing the last error
/// An initialized State, null on error
/// Uncompressed streams are represented by a State with no buffer
-#if NET48
- public State Init(Stream source, out LZERROR error)
-#else
public State? Init(Stream? source, out LZERROR error)
-#endif
{
// If we have an invalid source
if (source == null)
@@ -540,11 +520,7 @@ namespace SabreTools.Compression.LZ
/// Stream to parse
/// Output representing the last error
/// Filled file header on success, null on error
-#if NET48
- private FileHeaader ParseFileHeader(Stream data, out LZERROR error)
-#else
private FileHeaader? ParseFileHeader(Stream data, out LZERROR error)
-#endif
{
error = LZERROR.LZERROR_OK;
var fileHeader = new FileHeaader();
diff --git a/MSZIP/DeflateDecompressor.cs b/MSZIP/DeflateDecompressor.cs
index 611bacc..38c790c 100644
--- a/MSZIP/DeflateDecompressor.cs
+++ b/MSZIP/DeflateDecompressor.cs
@@ -19,11 +19,7 @@ namespace SabreTools.Compression.MSZIP
/// Create a new Decompressor from a byte array
///
/// Byte array to decompress
-#if NET48
- public DeflateDecompressor(byte[] input)
-#else
public DeflateDecompressor(byte[]? input)
-#endif
{
// If we have an invalid stream
if (input == null || input.Length == 0)
@@ -40,11 +36,7 @@ namespace SabreTools.Compression.MSZIP
/// Create a new Decompressor from a Stream
///
/// Stream to decompress
-#if NET48
- public DeflateDecompressor(Stream input)
-#else
public DeflateDecompressor(Stream? input)
-#endif
{
// If we have an invalid stream
if (input == null || !input.CanRead || !input.CanSeek)
@@ -58,11 +50,7 @@ namespace SabreTools.Compression.MSZIP
/// Decompress a stream into a
///
/// Block containing the decompressed data on success, null on error
-#if NET48
- public Block Process()
-#else
public Block? Process()
-#endif
{
// Create a new block
var block = new Block();
@@ -85,11 +73,7 @@ namespace SabreTools.Compression.MSZIP
deflateBlocks.Add(deflateBlock);
// If we're at the final block, exit out of the loop
-#if NET48
- if (deflateBlock.Header.BFINAL)
-#else
if (deflateBlock.Header!.BFINAL)
-#endif
break;
}
@@ -187,11 +171,7 @@ namespace SabreTools.Compression.MSZIP
///
/// Read an RFC1951 block
///
-#if NET48
- private DeflateBlock ReadDeflateBlock()
-#else
private DeflateBlock? ReadDeflateBlock()
-#endif
{
var deflateBlock = new DeflateBlock();
@@ -241,11 +221,7 @@ namespace SabreTools.Compression.MSZIP
///
/// Read an RFC1951 block with no compression
///
-#if NET48
- private (NonCompressedBlockHeader, byte[]) ReadNoCompression()
-#else
private (NonCompressedBlockHeader?, byte[]?) ReadNoCompression()
-#endif
{
// Skip any remaining bits in current partially processed byte
_bitStream.Discard();
@@ -262,11 +238,7 @@ namespace SabreTools.Compression.MSZIP
///
/// Read an RFC1951 block with fixed Huffman compression
///
-#if NET48
- private (FixedCompressedDataHeader, byte[]) ReadFixedHuffman()
-#else
private (FixedCompressedDataHeader, byte[]?) ReadFixedHuffman()
-#endif
{
var bytes = new List();
@@ -284,11 +256,7 @@ namespace SabreTools.Compression.MSZIP
///
/// Read an RFC1951 block with dynamic Huffman compression
///
-#if NET48
- private (DynamicCompressedDataHeader, byte[]) ReadDynamicHuffman()
-#else
private (DynamicCompressedDataHeader?, byte[]?) ReadDynamicHuffman()
-#endif
{
// Get the dynamic huffman header
(var header, uint numLiteral, uint numDistance) = ReadDynamicCompressedDataHeader();
@@ -304,11 +272,7 @@ namespace SabreTools.Compression.MSZIP
///
/// Read an RFC1951 block with Huffman compression
///
-#if NET48
- private byte[] ReadHuffmanBlock(HuffmanDecoder literalTree, HuffmanDecoder distanceTree)
-#else
private byte[]? ReadHuffmanBlock(HuffmanDecoder literalTree, HuffmanDecoder distanceTree)
-#endif
{
// Now loop and decode
var bytes = new List();
diff --git a/MSZIP/HuffmanDecoder.cs b/MSZIP/HuffmanDecoder.cs
index 116597b..8dbb8d0 100644
--- a/MSZIP/HuffmanDecoder.cs
+++ b/MSZIP/HuffmanDecoder.cs
@@ -16,22 +16,14 @@ namespace SabreTools.Compression.MSZIP
///
/// Array representing the number of bits for each value
/// Number of Huffman codes encoded
-#if NET48
- public HuffmanDecoder(uint[] lengths, uint numCodes)
-#else
public HuffmanDecoder(uint[]? lengths, uint numCodes)
-#endif
{
// Ensure we have lengths
if (lengths == null)
throw new ArgumentNullException(nameof(lengths));
// Set the root to null for now
-#if NET48
- HuffmanNode root = null;
-#else
HuffmanNode? root = null;
-#endif
// Determine the value for max_bits
uint max_bits = lengths.Max();
@@ -83,11 +75,7 @@ namespace SabreTools.Compression.MSZIP
}
// Assign the root value
-#if NET48
- _root = root;
-#else
_root = root!;
-#endif
}
///
@@ -125,11 +113,7 @@ namespace SabreTools.Compression.MSZIP
/// Length of the current encoding
/// Encoding of the value to traverse
/// New instance of the node with value appended
-#if NET48
- private static HuffmanNode Insert(HuffmanNode node, int value, uint length, int code)
-#else
private static HuffmanNode Insert(HuffmanNode? node, int value, uint length, int code)
-#endif
{
// If no node is provided, create a new one
if (node == null)
diff --git a/MSZIP/HuffmanNode.cs b/MSZIP/HuffmanNode.cs
index 8aede0c..0692ab3 100644
--- a/MSZIP/HuffmanNode.cs
+++ b/MSZIP/HuffmanNode.cs
@@ -8,20 +8,12 @@ namespace SabreTools.Compression.MSZIP
///
/// Left child of the current node
///
-#if NET48
- public HuffmanNode Left { get; set; }
-#else
public HuffmanNode? Left { get; set; }
-#endif
///
/// Right child of the current node
///
-#if NET48
- public HuffmanNode Right { get; set; }
-#else
public HuffmanNode? Right { get; set; }
-#endif
///
/// Value of the current node
diff --git a/Quantum/Decompressor.cs b/Quantum/Decompressor.cs
index 2b85799..abdd674 100644
--- a/Quantum/Decompressor.cs
+++ b/Quantum/Decompressor.cs
@@ -87,11 +87,7 @@ namespace SabreTools.Compression.Quantum
///
/// Byte array to decompress
/// Number of bits in the sliding window
-#if NET48
- public Decompressor(byte[] input, uint windowBits)
-#else
public Decompressor(byte[]? input, uint windowBits)
-#endif
{
// If we have an invalid stream
if (input == null || input.Length == 0)
@@ -134,11 +130,7 @@ namespace SabreTools.Compression.Quantum
///
/// Stream to decompress
/// Number of bits in the sliding window
-#if NET48
- public Decompressor(Stream input, uint windowBits)
-#else
public Decompressor(Stream? input, uint windowBits)
-#endif
{
// If we have an invalid stream
if (input == null || !input.CanRead || !input.CanSeek)
@@ -293,36 +285,20 @@ namespace SabreTools.Compression.Quantum
///
private int GetSymbol(Model model)
{
-#if NET48
- int freq = GetFrequency(model.Symbols[0].CumulativeFrequency);
-#else
int freq = GetFrequency(model.Symbols![0]!.CumulativeFrequency);
-#endif
int i;
for (i = 1; i < model.Entries; i++)
{
-#if NET48
- if (model.Symbols[i].CumulativeFrequency <= freq)
-#else
if (model.Symbols[i]!.CumulativeFrequency <= freq)
-#endif
break;
}
-#if NET48
- int sym = model.Symbols[i - 1].Symbol;
-
- GetCode(model.Symbols[i - 1].CumulativeFrequency,
- model.Symbols[i].CumulativeFrequency,
- model.Symbols[0].CumulativeFrequency);
-#else
int sym = model.Symbols![i - 1]!.Symbol;
GetCode(model.Symbols![i - 1]!.CumulativeFrequency,
model.Symbols![i]!.CumulativeFrequency,
model.Symbols![0]!.CumulativeFrequency);
-#endif
UpdateModel(model, i);
@@ -369,20 +345,12 @@ namespace SabreTools.Compression.Quantum
// Update cumulative frequencies
for (int i = 0; i < lastUpdated; i++)
{
-#if NET48
- var sym = model.Symbols[i];
-#else
var sym = model.Symbols![i]!;
-#endif
sym.CumulativeFrequency += 8;
}
// Decrement reordering time, if needed
-#if NET48
- if (model.Symbols[0].CumulativeFrequency > 3800)
-#else
if (model.Symbols![0]!.CumulativeFrequency > 3800)
-#endif
model.TimeToReorder--;
// If we haven't hit the reordering time
@@ -392,21 +360,12 @@ namespace SabreTools.Compression.Quantum
for (int i = model.Entries - 1; i >= 0; i--)
{
// Divide with truncation by 2
-#if NET48
- var sym = model.Symbols[i];
-#else
var sym = model.Symbols![i]!;
-#endif
sym.CumulativeFrequency >>= 1;
// If we are lower the next frequency
-#if NET48
- if (i != 0 && sym.CumulativeFrequency <= model.Symbols[i + 1].CumulativeFrequency)
- sym.CumulativeFrequency = (ushort)(model.Symbols[i + 1].CumulativeFrequency + 1);
-#else
if (i != 0 && sym.CumulativeFrequency <= model.Symbols![i + 1]!.CumulativeFrequency)
sym.CumulativeFrequency = (ushort)(model.Symbols![i + 1]!.CumulativeFrequency + 1);
-#endif
}
}
@@ -416,19 +375,11 @@ namespace SabreTools.Compression.Quantum
// Calculate frequencies from cumulative frequencies
for (int i = 0; i < model.Entries; i++)
{
-#if NET48
- if (i != model.Entries - 1)
- model.Symbols[i].CumulativeFrequency -= model.Symbols[i + 1].CumulativeFrequency;
-
- model.Symbols[i].CumulativeFrequency++;
- model.Symbols[i].CumulativeFrequency >>= 1;
-#else
if (i != model.Entries - 1)
model.Symbols![i]!.CumulativeFrequency -= model.Symbols![i + 1]!.CumulativeFrequency;
model.Symbols![i]!.CumulativeFrequency++;
model.Symbols![i]!.CumulativeFrequency >>= 1;
-#endif
}
// Sort frequencies in decreasing order
@@ -436,11 +387,7 @@ namespace SabreTools.Compression.Quantum
{
for (int j = i + 1; j < model.Entries; j++)
{
-#if NET48
- if (model.Symbols[i].CumulativeFrequency < model.Symbols[j].CumulativeFrequency)
-#else
if (model.Symbols![i]!.CumulativeFrequency < model.Symbols![j]!.CumulativeFrequency)
-#endif
{
var temp = model.Symbols[i];
model.Symbols[i] = model.Symbols[j];
@@ -453,11 +400,7 @@ namespace SabreTools.Compression.Quantum
for (int i = model.Entries - 1; i >= 0; i--)
{
if (i != model.Entries - 1)
-#if NET48
- model.Symbols[i].CumulativeFrequency += model.Symbols[i + 1].CumulativeFrequency;
-#else
model.Symbols![i]!.CumulativeFrequency += model.Symbols![i + 1]!.CumulativeFrequency;
-#endif
}
// Reset the time to reorder
diff --git a/SabreTools.Compression.csproj b/SabreTools.Compression.csproj
index 277afbb..a818034 100644
--- a/SabreTools.Compression.csproj
+++ b/SabreTools.Compression.csproj
@@ -4,8 +4,11 @@
net48;net6.0;net7.0;net8.0
win-x86;win-x64;linux-x64;osx-x64
- 0.1.1
true
+ latest
+ enable
+ true
+ 0.1.1
Matt Nadareski
@@ -19,10 +22,6 @@
MIT
-
- enable
-
-