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 - -