using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net.Http; using System.Threading; using System.Threading.Tasks; #nullable enable using MemoryPack.Compression; using MemoryPack.Formatters; namespace MemoryPack { #if !UNITY_2021_2_OR_NEWER public sealed class Utf8StringFormatterAttribute : MemoryPackCustomFormatterAttribute { public override Utf8StringFormatter GetFormatter() { return Utf8StringFormatter.Default; } } public sealed class Utf16StringFormatterAttribute : MemoryPackCustomFormatterAttribute { public override Utf16StringFormatter GetFormatter() { return Utf16StringFormatter.Default; } } public sealed class OrdinalIgnoreCaseStringDictionaryFormatter : MemoryPackCustomFormatterAttribute, Dictionary> { static readonly DictionaryFormatter formatter = new DictionaryFormatter(StringComparer.OrdinalIgnoreCase); public override DictionaryFormatter GetFormatter() { return formatter; } } public sealed class InternStringFormatterAttribute : MemoryPackCustomFormatterAttribute { public override InternStringFormatter GetFormatter() { return InternStringFormatter.Default; } } public sealed class BitPackFormatterAttribute : MemoryPackCustomFormatterAttribute { public override BitPackFormatter GetFormatter() { return BitPackFormatter.Default; } } public sealed class BrotliFormatterAttribute : MemoryPackCustomFormatterAttribute { public System.IO.Compression.CompressionLevel CompressionLevel { get; } public int Window { get; } public int DecompressionSizeLimit { get; } public BrotliFormatterAttribute(System.IO.Compression.CompressionLevel compressionLevel = System.IO.Compression.CompressionLevel.Fastest, int window = BrotliUtils.WindowBits_Default, int decompressionSizeLimit = BrotliFormatter.DefaultDecompssionSizeLimit) { this.CompressionLevel = compressionLevel; this.Window = window; this.DecompressionSizeLimit = decompressionSizeLimit; } public override BrotliFormatter GetFormatter() { return new BrotliFormatter(CompressionLevel, Window, DecompressionSizeLimit); } } public sealed class BrotliFormatterAttribute : MemoryPackCustomFormatterAttribute, T> { public System.IO.Compression.CompressionLevel CompressionLevel { get; } public int Window { get; } public BrotliFormatterAttribute(System.IO.Compression.CompressionLevel compressionLevel = System.IO.Compression.CompressionLevel.Fastest, int window = BrotliUtils.WindowBits_Default) { this.CompressionLevel = compressionLevel; this.Window = window; } public override BrotliFormatter GetFormatter() { return new BrotliFormatter(CompressionLevel, Window); } } public sealed class BrotliStringFormatterAttribute : MemoryPackCustomFormatterAttribute { public System.IO.Compression.CompressionLevel CompressionLevel { get; } public int Window { get; } public int DecompressionSizeLimit { get; } public BrotliStringFormatterAttribute(System.IO.Compression.CompressionLevel compressionLevel = System.IO.Compression.CompressionLevel.Fastest, int window = BrotliUtils.WindowBits_Default, int decompressionSizeLimit = BrotliFormatter.DefaultDecompssionSizeLimit) { this.CompressionLevel = compressionLevel; this.Window = window; this.DecompressionSizeLimit = decompressionSizeLimit; } public override BrotliStringFormatter GetFormatter() { return new BrotliStringFormatter(CompressionLevel, Window, DecompressionSizeLimit); } } public sealed class MemoryPoolFormatterAttribute : MemoryPackCustomFormatterAttribute, Memory> { static readonly MemoryPoolFormatter formatter = new MemoryPoolFormatter(); public override MemoryPoolFormatter GetFormatter() { return formatter; } } public sealed class ReadOnlyMemoryPoolFormatterAttribute : MemoryPackCustomFormatterAttribute, ReadOnlyMemory> { static readonly ReadOnlyMemoryPoolFormatter formatter = new ReadOnlyMemoryPoolFormatter(); public override ReadOnlyMemoryPoolFormatter GetFormatter() { return formatter; } } #endif }