
Here is an includefile of helper functions for compressing to / decompressing from GZip format (DEFLATE but wrapped in different header/footer than ZLib).
The source data can be a file, string, buffer (AllocateMemory), or arbitrary memory range.
It can compress to a GZip file, buffer, or arbitrary memory range.
It can decompress/uncompress/"UnGZip" back to those four original formats.
So that's 24 different conversions available... 4 data sources x 3 GZip destinations x 2 directions
Uses only PB's "Zip" and "CRC32"! No imports required! Enjoy.
GitHub link: https://github.com/kenmo-pb/includes/bl ... Helper.pbi
Direct PBI link: https://raw.githubusercontent.com/kenmo ... Helper.pbi
EDIT:
Compress procedures
Code: Select all
Procedure.i GZip_MemoryToMemory(*Source, SourceBytes.i, *Destination, DestinationBytes.i)
Procedure.i GZip_MemoryToBuffer(*Source, SourceBytes.i)
Procedure.i GZip_BufferToBuffer(*Source)
Procedure.i GZip_BufferToMemory(*Source, *Destination, DestinationBytes.i)
Procedure.i GZip_StringToMemory(String.s, *Destination, DestinationBytes.i, Format.i = #PB_Default, IncludeNull.i = #False)
Procedure.i GZip_StringToBuffer(String.s, Format.i = #PB_Default, IncludeNull.i = #False)
Procedure.i GZip_FileToMemory(File.s, *Destination, DestinationBytes.i, RangeStart.q = #GZipHelper_StartOfFile, RangeSize.q = #GZipHelper_RestOfFile)
Procedure.i GZip_FileToBuffer(File.s, RangeStart.q = #GZipHelper_StartOfFile, RangeSize.q = #GZipHelper_RestOfFile)
Procedure.i GZip_FileToFile(SourceFile.s, GZipFile.s, RangeStart.q = #GZipHelper_StartOfFile, RangeSize.q = #GZipHelper_RestOfFile)
Procedure.i GZip_MemoryToFile(*Source, SourceBytes.i, File.s)
Procedure.i GZip_BufferToFile(*GZip, File.s)
Procedure.i GZip_StringToFile(String.s, File.s, Format.i = #PB_Default, IncludeNull.i = #False)
Code: Select all
Procedure.i UnGZip_MemoryToMemory(*GZip, GZipBytes.i, *Destination, DestinationBytes.i)
Procedure.i UnGZip_MemoryToBuffer(*GZip, GZipBytes.i)
Procedure.i UnGZip_BufferToBuffer(*GZip)
Procedure.i UnGZip_BufferToMemory(*GZip, *Destination, DestinationBytes.i)
Procedure.s UnGZip_MemoryToString(*GZip, GZipBytes.i, Format.i = #PB_Default)
Procedure.s UnGZip_BufferToString(*GZip, Format.i = #PB_Default)
Procedure.i UnGZip_MemoryToFile(*GZip, GZipBytes.i, File.s)
Procedure.i UnGZip_BufferToFile(*GZip, File.s)
Procedure.i UnGZip_FileToMemory(GZipFile.s, *Destination, DestinationBytes.i)
Procedure.i UnGZip_FileToBuffer(GZipFile.s)
Procedure.i UnGZip_FileToFile(GZipFile.s, DestinationFile.s)
Procedure.s UnGZip_FileToString(GZipFile.s, Format.i = #PB_Default)
Code: Select all
Procedure.i GZip_GetUncompressedSizeFromMemory(*GZip, GZipBytes.i)
Procedure.i GZip_GetUncompressedSizeFromBuffer(*GZip)
Procedure.i GZip_GetUncompressedCRC32FromMemory(*GZip, GZipBytes.i)
Procedure.i GZip_GetUncompressedCRC32FromBuffer(*GZip)
Procedure.i GZip_GetRequiredBufferSize(*Source, SourceBytes.i)