From d883c37bd1a195b44aba6c042ed154aae4e3346d Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 6 May 2017 18:48:43 +0300 Subject: [PATCH] Preparations for 2.4.1. --- .jazzy.yaml | 4 +- CHANGELOG.md | 4 ++ SWCompression.podspec | 2 +- Sources/Service/Info-iOS.plist | 2 +- Sources/Service/Info-tvOS.plist | 2 +- Sources/Service/Info-watchOS.plist | 2 +- Sources/Service/Info.plist | 2 +- docs/Classes.html | 18 ++++----- docs/Classes/BZip2.html | 7 +--- docs/Classes/Deflate.html | 10 ++--- docs/Classes/GzipArchive.html | 14 ++----- docs/Classes/LZMA.html | 7 +--- docs/Classes/LZMA2.html | 7 +--- docs/Classes/XZArchive.html | 7 +--- docs/Classes/ZipContainer.html | 24 +++--------- docs/Classes/ZlibArchive.html | 14 ++----- docs/Enums.html | 18 ++++----- docs/Enums/BZip2Error.html | 20 +++++----- docs/Enums/DeflateError.html | 10 ++--- docs/Enums/GzipError.html | 14 +++---- docs/Enums/LZMA2Error.html | 12 +++--- docs/Enums/LZMAError.html | 16 ++++---- docs/Enums/XZError.html | 22 +++++------ docs/Enums/ZipError.html | 22 +++++------ docs/Enums/ZlibError.html | 12 +++--- docs/Protocols.html | 6 +-- docs/Protocols/Archive.html | 4 +- docs/Protocols/DecompressionAlgorithm.html | 4 +- docs/Structs.html | 8 ++-- docs/Structs/GzipHeader.html | 20 +++++----- .../Structs/GzipHeader/CompressionMethod.html | 4 +- docs/Structs/GzipHeader/FileSystemType.html | 12 +++--- docs/Structs/ZipEntry.html | 8 ++-- docs/Structs/ZlibHeader.html | 16 ++++---- docs/Structs/ZlibHeader/CompressionLevel.html | 10 ++--- .../Structs/ZlibHeader/CompressionMethod.html | 4 +- .../Contents/Resources/Documents/Classes.html | 18 ++++----- .../Resources/Documents/Classes/BZip2.html | 7 +--- .../Resources/Documents/Classes/Deflate.html | 10 ++--- .../Documents/Classes/GzipArchive.html | 14 ++----- .../Resources/Documents/Classes/LZMA.html | 7 +--- .../Resources/Documents/Classes/LZMA2.html | 7 +--- .../Documents/Classes/XZArchive.html | 7 +--- .../Documents/Classes/ZipContainer.html | 24 +++--------- .../Documents/Classes/ZlibArchive.html | 14 ++----- .../Contents/Resources/Documents/Enums.html | 18 ++++----- .../Resources/Documents/Enums/BZip2Error.html | 20 +++++----- .../Documents/Enums/DeflateError.html | 10 ++--- .../Resources/Documents/Enums/GzipError.html | 14 +++---- .../Resources/Documents/Enums/LZMA2Error.html | 12 +++--- .../Resources/Documents/Enums/LZMAError.html | 16 ++++---- .../Resources/Documents/Enums/XZError.html | 22 +++++------ .../Resources/Documents/Enums/ZipError.html | 22 +++++------ .../Resources/Documents/Enums/ZlibError.html | 12 +++--- .../Resources/Documents/Protocols.html | 6 +-- .../Documents/Protocols/Archive.html | 4 +- .../Protocols/DecompressionAlgorithm.html | 4 +- .../Contents/Resources/Documents/Structs.html | 8 ++-- .../Documents/Structs/GzipHeader.html | 20 +++++----- .../Structs/GzipHeader/CompressionMethod.html | 4 +- .../Structs/GzipHeader/FileSystemType.html | 12 +++--- .../Resources/Documents/Structs/ZipEntry.html | 8 ++-- .../Documents/Structs/ZlibHeader.html | 16 ++++---- .../Structs/ZlibHeader/CompressionLevel.html | 10 ++--- .../Structs/ZlibHeader/CompressionMethod.html | 4 +- .../Contents/Resources/Documents/index.html | 36 +++++++++--------- .../Contents/Resources/Documents/search.json | 2 +- .../Resources/Documents/undocumented.json | 6 --- docs/docsets/SWCompression.tgz | Bin 99468 -> 99272 bytes docs/index.html | 36 +++++++++--------- docs/search.json | 2 +- 71 files changed, 351 insertions(+), 449 deletions(-) delete mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/undocumented.json diff --git a/.jazzy.yaml b/.jazzy.yaml index 3de5bc3a..4b203748 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -3,9 +3,9 @@ clean: true exclude: Tests/ author: Timofey Solomko module: SWCompression -module_version: 2.4.0 +module_version: 2.4.1 copyright: '© 2017 Timofey Solomko' readme: README.md github_url: https://github.com/tsolomko/SWCompression -github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v2.4.0 +github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v2.4.1 theme: fullwidth diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e483061..627a6080 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,8 @@ # Changelog +v2.4.1 +---------------- +- Lowered deployment targets versions for all (supported) Apple platforms. + v2.4.0 ---------------- - Reduced memory usage in some cases. diff --git a/SWCompression.podspec b/SWCompression.podspec index a3b37328..bc0bad0f 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" - s.version = "2.4.0" + s.version = "2.4.1" s.summary = "Framework with implementations in Swift of different (de)compression algorithms" s.description = <<-DESC diff --git a/Sources/Service/Info-iOS.plist b/Sources/Service/Info-iOS.plist index b0b5b239..55bd619c 100644 --- a/Sources/Service/Info-iOS.plist +++ b/Sources/Service/Info-iOS.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.4.0 + 2.4.1 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Sources/Service/Info-tvOS.plist b/Sources/Service/Info-tvOS.plist index b0b5b239..55bd619c 100644 --- a/Sources/Service/Info-tvOS.plist +++ b/Sources/Service/Info-tvOS.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.4.0 + 2.4.1 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Sources/Service/Info-watchOS.plist b/Sources/Service/Info-watchOS.plist index b0b5b239..55bd619c 100644 --- a/Sources/Service/Info-watchOS.plist +++ b/Sources/Service/Info-watchOS.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.4.0 + 2.4.1 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/Sources/Service/Info.plist b/Sources/Service/Info.plist index 67fa48ba..3481fa3f 100644 --- a/Sources/Service/Info.plist +++ b/Sources/Service/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.4.0 + 2.4.1 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/docs/Classes.html b/docs/Classes.html index 4799dd80..08e27a62 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -221,7 +221,7 @@
- Show on GitHub + Show on GitHub
@@ -256,7 +256,7 @@
- Show on GitHub + Show on GitHub
@@ -291,7 +291,7 @@
- Show on GitHub + Show on GitHub
@@ -326,7 +326,7 @@
- Show on GitHub + Show on GitHub
@@ -361,7 +361,7 @@
- Show on GitHub + Show on GitHub
@@ -396,7 +396,7 @@
- Show on GitHub + Show on GitHub
@@ -431,7 +431,7 @@
- Show on GitHub + Show on GitHub
@@ -445,7 +445,7 @@ diff --git a/docs/Classes/BZip2.html b/docs/Classes/BZip2.html index 214f339a..ab520303 100644 --- a/docs/Classes/BZip2.html +++ b/docs/Classes/BZip2.html @@ -183,7 +183,6 @@

Decompresses compressedData with BZip2 algortihm.

If data passed is not actually compressed with BZip2, BZip2Error will be thrown.

-

Throws

BZip2Error if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with BZip2.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Classes/Deflate.html b/docs/Classes/Deflate.html index ec4c1473..1bfadb27 100644 --- a/docs/Classes/Deflate.html +++ b/docs/Classes/Deflate.html @@ -183,7 +183,6 @@

Decompresses compressedData with DEFLATE algortihm.

If data passed is not actually compressed with DEFLATE, DeflateError will be thrown.

-

Throws

DeflateError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with DEFLATE.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -247,7 +244,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Compresses data with DEFLATE algortihm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

Currently, SWCompression creates only one block for all data @@ -267,7 +263,7 @@ static Huffman is used in all other cases.
- Show on GitHub + Show on GitHub
@@ -281,7 +277,7 @@ static Huffman is used in all other cases. diff --git a/docs/Classes/GzipArchive.html b/docs/Classes/GzipArchive.html index 6021e238..e7ea7eb4 100644 --- a/docs/Classes/GzipArchive.html +++ b/docs/Classes/GzipArchive.html @@ -185,13 +185,11 @@

If data passed is not actually a gzip archive, GzipError will be thrown.

If data inside the archive is not actually compressed with DEFLATE algorithm, DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError or GzipError depending on the type of inconsistency in data. @@ -221,7 +219,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with gzip.

-
@@ -231,10 +228,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -258,13 +254,11 @@ Fields in the header of the resulting archive will be set to default values It will be also specified that the compressor used slowest DEFLATE algorithm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError if an error was encountered during compression.

@@ -293,7 +287,6 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

Data to compress and archive.

-
@@ -303,10 +296,9 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

Return Value

Data object with resulting archive.

-
- Show on GitHub + Show on GitHub
@@ -320,7 +312,7 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

diff --git a/docs/Classes/LZMA.html b/docs/Classes/LZMA.html index 0521ad06..8ffb084d 100644 --- a/docs/Classes/LZMA.html +++ b/docs/Classes/LZMA.html @@ -183,7 +183,6 @@

Decompresses compressedData with LZMA algortihm.

If data passed is not actually compressed with LZMA, LZMAError will be thrown.

-

Throws

LZMAError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Classes/LZMA2.html b/docs/Classes/LZMA2.html index d56a66b1..2df515e4 100644 --- a/docs/Classes/LZMA2.html +++ b/docs/Classes/LZMA2.html @@ -183,7 +183,6 @@

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

If data passed is not actually compressed with LZMA2, LZMA2Error or LZMAError will be thrown.

-

Throws

LZMA2Error or LZMAError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA2.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Classes/XZArchive.html b/docs/Classes/XZArchive.html index 91dd9b2e..38bc0be3 100644 --- a/docs/Classes/XZArchive.html +++ b/docs/Classes/XZArchive.html @@ -187,7 +187,6 @@ If filters other than LZMA2 are used in archive then LZMAError or LZMA2Error will be thrown.

-

Throws

LZMAError, LZMA2Error or XZError depending on the type of inconsistency in data. @@ -217,7 +216,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with xz.

-
@@ -227,10 +225,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -244,7 +241,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Classes/ZipContainer.html b/docs/Classes/ZipContainer.html index 7b78eb6e..16ff93aa 100644 --- a/docs/Classes/ZipContainer.html +++ b/docs/Classes/ZipContainer.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -212,7 +212,6 @@

Tries to open ZIP archive and parse its Central Directory. If parsing is successful then entries property will contain all directory or file entries found in archive.

-

Important

The order of entries is defined by ZIP archive and, particularly, creator of given ZIP container. @@ -220,7 +219,6 @@ It is likely that directories will be encountered earlier than files stored in t but one SHOULD NOT assume that this is the case.

-

Note

Currently, there is no universal (platform and file system independent) method to determine if entry is a directory. @@ -228,13 +226,11 @@ One can check this by looking at the size of entry’s data (it should be 0 the last character of entry’s name (it should be ‘/’). If all of these is true then entry is likely to be a directory.

-

Note

Only ZIP containers complying to ISO/IEC 21320-1 standard are supported.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -264,7 +260,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Data of ZIP container.

-
@@ -272,7 +267,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont
@@ -291,14 +286,12 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Returns data associated with provided ZipEntry.

-

Note

Returned Data object with the size of 0 can either indicate that the entry is an empty file or it is a directory.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -328,7 +321,6 @@ An error can indicate that the container is damaged.

file or directory entry from current container.

-
@@ -336,7 +328,7 @@ An error can indicate that the container is damaged.

@@ -356,7 +348,6 @@ An error can indicate that the container is damaged.

Processes ZIP archive (container) and returns an array of tuples (String, Data). First member of a tuple is entry’s name, second member is entry’s data.

-

Important

The order of entries is defined by ZIP archive and, particularly, creator of given ZIP container. @@ -364,7 +355,6 @@ It is likely that directories will be encountered earlier than files stored in t but one SHOULD NOT assume that this is the case.

-

Note

Currently, there is no universal (platform and file system independent) method to determine if entry is a directory. @@ -372,13 +362,11 @@ One can check this by looking at the size of entry’s data (it should be 0 the last character of entry’s name (it should be ‘/’). If all of these is true then entry is likely to be a directory.

-

Note

Only ZIP containers complying to ISO/IEC 21320-1 standard are supported.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -408,7 +396,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Data of ZIP container.

-
@@ -418,10 +405,9 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Return Value

Array of pairs (tuples) where first member is entryName and second member is entryData.

-
@@ -435,7 +421,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont
diff --git a/docs/Classes/ZlibArchive.html b/docs/Classes/ZlibArchive.html index 24b6533a..abf97248 100644 --- a/docs/Classes/ZlibArchive.html +++ b/docs/Classes/ZlibArchive.html @@ -185,13 +185,11 @@

If data passed is not actually a zlib archive, ZlibError will be thrown.

If data inside the archive is not actually compressed with DEFLATE algorithm, DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError or ZlibError depending on the type of inconsistency in data. @@ -221,7 +219,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with zlib.

-
@@ -231,10 +228,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -256,13 +252,11 @@ It may indicate that either the data is damaged or it might not be compressed wi It will be specified in archive’s header that the compressor used slowest DEFLATE algorithm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError if an error was encountered during compression.

@@ -291,7 +285,6 @@ It will be specified in archive’s header that the compressor used slowest

Data to compress and archive.

-
@@ -301,10 +294,9 @@ It will be specified in archive’s header that the compressor used slowest

Return Value

Data object with resulting archive.

-
@@ -318,7 +310,7 @@ It will be specified in archive’s header that the compressor used slowest diff --git a/docs/Enums.html b/docs/Enums.html index fddc52af..761c6302 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -195,7 +195,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -242,7 +242,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -292,7 +292,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -386,7 +386,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -429,7 +429,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -477,7 +477,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -528,7 +528,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -542,7 +542,7 @@ Associated value contains already decompressed data. diff --git a/docs/Enums/BZip2Error.html b/docs/Enums/BZip2Error.html index e73e31b0..0bd2b106 100644 --- a/docs/Enums/BZip2Error.html +++ b/docs/Enums/BZip2Error.html @@ -205,7 +205,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -239,7 +239,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -273,7 +273,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -307,7 +307,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -375,7 +375,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -409,7 +409,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -443,7 +443,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -477,7 +477,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -491,7 +491,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Enums/DeflateError.html b/docs/Enums/DeflateError.html index cefd3f8f..4a204494 100644 --- a/docs/Enums/DeflateError.html +++ b/docs/Enums/DeflateError.html @@ -200,7 +200,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -234,7 +234,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -268,7 +268,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -302,7 +302,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -316,7 +316,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Enums/GzipError.html b/docs/Enums/GzipError.html index cfd4b1ae..c2e02ed9 100644 --- a/docs/Enums/GzipError.html +++ b/docs/Enums/GzipError.html @@ -204,7 +204,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -238,7 +238,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -272,7 +272,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -306,7 +306,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -375,7 +375,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -389,7 +389,7 @@ Associated value contains already decompressed data.

diff --git a/docs/Enums/LZMA2Error.html b/docs/Enums/LZMA2Error.html index 412a195c..c56eadd0 100644 --- a/docs/Enums/LZMA2Error.html +++ b/docs/Enums/LZMA2Error.html @@ -201,7 +201,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -235,7 +235,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -269,7 +269,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -303,7 +303,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -338,7 +338,7 @@ amount of compressed data read was different from the one stored in LZMA2 packet
- Show on GitHub + Show on GitHub
@@ -352,7 +352,7 @@ amount of compressed data read was different from the one stored in LZMA2 packet diff --git a/docs/Enums/LZMAError.html b/docs/Enums/LZMAError.html index dbaf4db5..2251b766 100644 --- a/docs/Enums/LZMAError.html +++ b/docs/Enums/LZMAError.html @@ -206,7 +206,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -240,7 +240,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -274,7 +274,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -308,7 +308,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -342,7 +342,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -376,7 +376,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -410,7 +410,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -424,7 +424,7 @@ than the repeat length. diff --git a/docs/Enums/XZError.html b/docs/Enums/XZError.html index e116b0af..a5c9cfce 100644 --- a/docs/Enums/XZError.html +++ b/docs/Enums/XZError.html @@ -208,7 +208,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -242,7 +242,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -276,7 +276,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -310,7 +310,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -344,7 +344,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -378,7 +378,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -413,7 +413,7 @@ amount of compressed data read was different from the one stored in block header
- Show on GitHub + Show on GitHub
@@ -448,7 +448,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -482,7 +482,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -516,7 +516,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -530,7 +530,7 @@ Associated value contains already decompressed data.

diff --git a/docs/Enums/ZipError.html b/docs/Enums/ZipError.html index 87325d62..01d36d24 100644 --- a/docs/Enums/ZipError.html +++ b/docs/Enums/ZipError.html @@ -207,7 +207,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -241,7 +241,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -275,7 +275,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -309,7 +309,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -343,7 +343,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -377,7 +377,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -411,7 +411,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -445,7 +445,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -479,7 +479,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -513,7 +513,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -527,7 +527,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( diff --git a/docs/Enums/ZlibError.html b/docs/Enums/ZlibError.html index 03b6f299..3c38e60e 100644 --- a/docs/Enums/ZlibError.html +++ b/docs/Enums/ZlibError.html @@ -202,7 +202,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -236,7 +236,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -270,7 +270,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -304,7 +304,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -339,7 +339,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -353,7 +353,7 @@ Associated value contains already decompressed data.

diff --git a/docs/Protocols.html b/docs/Protocols.html index 04c23eb8..c677832a 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -217,7 +217,7 @@
- Show on GitHub + Show on GitHub
@@ -231,7 +231,7 @@ diff --git a/docs/Protocols/Archive.html b/docs/Protocols/Archive.html index 4054057f..37c4329f 100644 --- a/docs/Protocols/Archive.html +++ b/docs/Protocols/Archive.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/Protocols/DecompressionAlgorithm.html b/docs/Protocols/DecompressionAlgorithm.html index a19a8711..ae153a9f 100644 --- a/docs/Protocols/DecompressionAlgorithm.html +++ b/docs/Protocols/DecompressionAlgorithm.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/Structs.html b/docs/Structs.html index be767b6d..7982ac12 100644 --- a/docs/Structs.html +++ b/docs/Structs.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -221,7 +221,7 @@
- Show on GitHub + Show on GitHub
@@ -256,7 +256,7 @@
- Show on GitHub + Show on GitHub
@@ -270,7 +270,7 @@ diff --git a/docs/Structs/GzipHeader.html b/docs/Structs/GzipHeader.html index 5e5a8b9c..d17395d1 100644 --- a/docs/Structs/GzipHeader.html +++ b/docs/Structs/GzipHeader.html @@ -193,7 +193,7 @@
- Show on GitHub + Show on GitHub
@@ -224,7 +224,7 @@
- Show on GitHub + Show on GitHub
@@ -254,7 +254,7 @@
- Show on GitHub + Show on GitHub
@@ -295,7 +295,7 @@
- Show on GitHub + Show on GitHub
@@ -325,7 +325,7 @@
- Show on GitHub + Show on GitHub
@@ -355,7 +355,7 @@
- Show on GitHub + Show on GitHub
@@ -385,7 +385,7 @@
- Show on GitHub + Show on GitHub
@@ -406,7 +406,6 @@

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

If data passed is not actually a gzip archive, GzipError will be thrown.

-

Throws

GzipError. It may indicate that either the data is damaged or @@ -436,7 +435,6 @@ it might not be compressed with gzip at all.

Data compressed with gzip.

-
@@ -444,7 +442,7 @@ it might not be compressed with gzip at all.

- Show on GitHub + Show on GitHub
@@ -458,7 +456,7 @@ it might not be compressed with gzip at all.

diff --git a/docs/Structs/GzipHeader/CompressionMethod.html b/docs/Structs/GzipHeader/CompressionMethod.html index 3879855f..0d3e2f9b 100644 --- a/docs/Structs/GzipHeader/CompressionMethod.html +++ b/docs/Structs/GzipHeader/CompressionMethod.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/Structs/GzipHeader/FileSystemType.html b/docs/Structs/GzipHeader/FileSystemType.html index 92ede20c..d0854fb4 100644 --- a/docs/Structs/GzipHeader/FileSystemType.html +++ b/docs/Structs/GzipHeader/FileSystemType.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -226,7 +226,7 @@
- Show on GitHub + Show on GitHub
@@ -260,7 +260,7 @@
- Show on GitHub + Show on GitHub
@@ -294,7 +294,7 @@
- Show on GitHub + Show on GitHub
@@ -328,7 +328,7 @@
- Show on GitHub + Show on GitHub
@@ -342,7 +342,7 @@ diff --git a/docs/Structs/ZipEntry.html b/docs/Structs/ZipEntry.html index ad8636ed..50375545 100644 --- a/docs/Structs/ZipEntry.html +++ b/docs/Structs/ZipEntry.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -222,7 +222,7 @@
- Show on GitHub + Show on GitHub
@@ -252,7 +252,7 @@
- Show on GitHub + Show on GitHub
@@ -266,7 +266,7 @@ diff --git a/docs/Structs/ZlibHeader.html b/docs/Structs/ZlibHeader.html index cf510324..fa568eaa 100644 --- a/docs/Structs/ZlibHeader.html +++ b/docs/Structs/ZlibHeader.html @@ -193,7 +193,7 @@
- Show on GitHub + Show on GitHub
@@ -224,7 +224,7 @@
- Show on GitHub + Show on GitHub
@@ -254,7 +254,7 @@
- Show on GitHub + Show on GitHub
@@ -284,7 +284,7 @@
- Show on GitHub + Show on GitHub
@@ -314,7 +314,7 @@
- Show on GitHub + Show on GitHub
@@ -335,7 +335,6 @@

Initializes the structure with the values from zlib archive presented in archiveData.

If data passed is not actually a zlib archive, ZlibError will be thrown.

-

Throws

ZlibError. It may indicate that either the data is damaged or @@ -365,7 +364,6 @@ it might not be compressed with zlib at all.

Data compressed with zlib.

-
@@ -373,7 +371,7 @@ it might not be compressed with zlib at all.

- Show on GitHub + Show on GitHub
@@ -387,7 +385,7 @@ it might not be compressed with zlib at all.

diff --git a/docs/Structs/ZlibHeader/CompressionLevel.html b/docs/Structs/ZlibHeader/CompressionLevel.html index 15a82d40..2c9ca1b2 100644 --- a/docs/Structs/ZlibHeader/CompressionLevel.html +++ b/docs/Structs/ZlibHeader/CompressionLevel.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -226,7 +226,7 @@
- Show on GitHub + Show on GitHub
@@ -260,7 +260,7 @@
- Show on GitHub + Show on GitHub
@@ -294,7 +294,7 @@
- Show on GitHub + Show on GitHub
@@ -308,7 +308,7 @@ diff --git a/docs/Structs/ZlibHeader/CompressionMethod.html b/docs/Structs/ZlibHeader/CompressionMethod.html index 82996c2d..1ee7ec0e 100644 --- a/docs/Structs/ZlibHeader/CompressionMethod.html +++ b/docs/Structs/ZlibHeader/CompressionMethod.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html index 4799dd80..08e27a62 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -221,7 +221,7 @@
- Show on GitHub + Show on GitHub
@@ -256,7 +256,7 @@
- Show on GitHub + Show on GitHub
@@ -291,7 +291,7 @@
- Show on GitHub + Show on GitHub
@@ -326,7 +326,7 @@
- Show on GitHub + Show on GitHub
@@ -361,7 +361,7 @@
- Show on GitHub + Show on GitHub
@@ -396,7 +396,7 @@
- Show on GitHub + Show on GitHub
@@ -431,7 +431,7 @@
- Show on GitHub + Show on GitHub
@@ -445,7 +445,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html index 214f339a..ab520303 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html @@ -183,7 +183,6 @@

Decompresses compressedData with BZip2 algortihm.

If data passed is not actually compressed with BZip2, BZip2Error will be thrown.

-

Throws

BZip2Error if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with BZip2.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html index ec4c1473..1bfadb27 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html @@ -183,7 +183,6 @@

Decompresses compressedData with DEFLATE algortihm.

If data passed is not actually compressed with DEFLATE, DeflateError will be thrown.

-

Throws

DeflateError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with DEFLATE.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -247,7 +244,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Compresses data with DEFLATE algortihm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

Currently, SWCompression creates only one block for all data @@ -267,7 +263,7 @@ static Huffman is used in all other cases.
- Show on GitHub + Show on GitHub
@@ -281,7 +277,7 @@ static Huffman is used in all other cases. diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html index 6021e238..e7ea7eb4 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html @@ -185,13 +185,11 @@

If data passed is not actually a gzip archive, GzipError will be thrown.

If data inside the archive is not actually compressed with DEFLATE algorithm, DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError or GzipError depending on the type of inconsistency in data. @@ -221,7 +219,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with gzip.

-
@@ -231,10 +228,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -258,13 +254,11 @@ Fields in the header of the resulting archive will be set to default values It will be also specified that the compressor used slowest DEFLATE algorithm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError if an error was encountered during compression.

@@ -293,7 +287,6 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

Data to compress and archive.

-
@@ -303,10 +296,9 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

Return Value

Data object with resulting archive.

-
- Show on GitHub + Show on GitHub
@@ -320,7 +312,7 @@ It will be also specified that the compressor used slowest DEFLATE algorithm.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html index 0521ad06..8ffb084d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html @@ -183,7 +183,6 @@

Decompresses compressedData with LZMA algortihm.

If data passed is not actually compressed with LZMA, LZMAError will be thrown.

-

Throws

LZMAError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html index d56a66b1..2df515e4 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html @@ -183,7 +183,6 @@

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

If data passed is not actually compressed with LZMA2, LZMA2Error or LZMAError will be thrown.

-

Throws

LZMA2Error or LZMAError if unexpected byte (bit) sequence was encountered in compressedData. @@ -213,7 +212,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA2.

-
@@ -223,10 +221,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Decompressed data.

-
@@ -240,7 +237,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html index 91dd9b2e..38bc0be3 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html @@ -187,7 +187,6 @@ If filters other than LZMA2 are used in archive then LZMAError or LZMA2Error will be thrown.

-

Throws

LZMAError, LZMA2Error or XZError depending on the type of inconsistency in data. @@ -217,7 +216,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with xz.

-
@@ -227,10 +225,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -244,7 +241,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html index 7b78eb6e..16ff93aa 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -212,7 +212,6 @@

Tries to open ZIP archive and parse its Central Directory. If parsing is successful then entries property will contain all directory or file entries found in archive.

-

Important

The order of entries is defined by ZIP archive and, particularly, creator of given ZIP container. @@ -220,7 +219,6 @@ It is likely that directories will be encountered earlier than files stored in t but one SHOULD NOT assume that this is the case.

-

Note

Currently, there is no universal (platform and file system independent) method to determine if entry is a directory. @@ -228,13 +226,11 @@ One can check this by looking at the size of entry’s data (it should be 0 the last character of entry’s name (it should be ‘/’). If all of these is true then entry is likely to be a directory.

-

Note

Only ZIP containers complying to ISO/IEC 21320-1 standard are supported.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -264,7 +260,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Data of ZIP container.

-
@@ -272,7 +267,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont
@@ -291,14 +286,12 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Returns data associated with provided ZipEntry.

-

Note

Returned Data object with the size of 0 can either indicate that the entry is an empty file or it is a directory.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -328,7 +321,6 @@ An error can indicate that the container is damaged.

file or directory entry from current container.

-
@@ -336,7 +328,7 @@ An error can indicate that the container is damaged.

@@ -356,7 +348,6 @@ An error can indicate that the container is damaged.

Processes ZIP archive (container) and returns an array of tuples (String, Data). First member of a tuple is entry’s name, second member is entry’s data.

-

Important

The order of entries is defined by ZIP archive and, particularly, creator of given ZIP container. @@ -364,7 +355,6 @@ It is likely that directories will be encountered earlier than files stored in t but one SHOULD NOT assume that this is the case.

-

Note

Currently, there is no universal (platform and file system independent) method to determine if entry is a directory. @@ -372,13 +362,11 @@ One can check this by looking at the size of entry’s data (it should be 0 the last character of entry’s name (it should be ‘/’). If all of these is true then entry is likely to be a directory.

-

Note

Only ZIP containers complying to ISO/IEC 21320-1 standard are supported.

-

Throws

ZipError or DeflateError depending on the type of inconsistency in data. @@ -408,7 +396,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Data of ZIP container.

-
@@ -418,10 +405,9 @@ It may indicate that either the container is damaged or it might not be ZIP cont

Return Value

Array of pairs (tuples) where first member is entryName and second member is entryData.

-
@@ -435,7 +421,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont
diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html index 24b6533a..abf97248 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html @@ -185,13 +185,11 @@

If data passed is not actually a zlib archive, ZlibError will be thrown.

If data inside the archive is not actually compressed with DEFLATE algorithm, DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError or ZlibError depending on the type of inconsistency in data. @@ -221,7 +219,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with zlib.

-
@@ -231,10 +228,9 @@ It may indicate that either the data is damaged or it might not be compressed wi

Return Value

Unarchived data.

-
@@ -256,13 +252,11 @@ It may indicate that either the data is damaged or it might not be compressed wi It will be specified in archive’s header that the compressor used slowest DEFLATE algorithm.

If during compression something goes wrong DeflateError will be thrown.

-

Note

This function is specification compliant.

-

Throws

DeflateError if an error was encountered during compression.

@@ -291,7 +285,6 @@ It will be specified in archive’s header that the compressor used slowest

Data to compress and archive.

-
@@ -301,10 +294,9 @@ It will be specified in archive’s header that the compressor used slowest

Return Value

Data object with resulting archive.

-
@@ -318,7 +310,7 @@ It will be specified in archive’s header that the compressor used slowest diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html index fddc52af..761c6302 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html @@ -195,7 +195,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -242,7 +242,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -292,7 +292,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -386,7 +386,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -429,7 +429,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -477,7 +477,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -528,7 +528,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -542,7 +542,7 @@ Associated value contains already decompressed data. diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html index e73e31b0..0bd2b106 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html @@ -205,7 +205,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -239,7 +239,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -273,7 +273,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -307,7 +307,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -375,7 +375,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -409,7 +409,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -443,7 +443,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -477,7 +477,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -491,7 +491,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html index cefd3f8f..4a204494 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html @@ -200,7 +200,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -234,7 +234,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -268,7 +268,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -302,7 +302,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -316,7 +316,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html index cfd4b1ae..c2e02ed9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html @@ -204,7 +204,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -238,7 +238,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -272,7 +272,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -306,7 +306,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -341,7 +341,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -375,7 +375,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -389,7 +389,7 @@ Associated value contains already decompressed data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html index 412a195c..c56eadd0 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html @@ -201,7 +201,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -235,7 +235,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -269,7 +269,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -303,7 +303,7 @@ It may indicate that either the data is damaged or it might not be compressed wi
- Show on GitHub + Show on GitHub
@@ -338,7 +338,7 @@ amount of compressed data read was different from the one stored in LZMA2 packet
- Show on GitHub + Show on GitHub
@@ -352,7 +352,7 @@ amount of compressed data read was different from the one stored in LZMA2 packet diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html index dbaf4db5..2251b766 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html @@ -206,7 +206,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -240,7 +240,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -274,7 +274,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -308,7 +308,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -342,7 +342,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -376,7 +376,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -410,7 +410,7 @@ than the repeat length.
- Show on GitHub + Show on GitHub
@@ -424,7 +424,7 @@ than the repeat length. diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html index e116b0af..a5c9cfce 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html @@ -208,7 +208,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -242,7 +242,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -276,7 +276,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -310,7 +310,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -344,7 +344,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -378,7 +378,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -413,7 +413,7 @@ amount of compressed data read was different from the one stored in block header
- Show on GitHub + Show on GitHub
@@ -448,7 +448,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -482,7 +482,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -516,7 +516,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -530,7 +530,7 @@ Associated value contains already decompressed data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html index 87325d62..01d36d24 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html @@ -207,7 +207,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -241,7 +241,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -275,7 +275,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -309,7 +309,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -343,7 +343,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -377,7 +377,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -411,7 +411,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -445,7 +445,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -479,7 +479,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -513,7 +513,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
- Show on GitHub + Show on GitHub
@@ -527,7 +527,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html index 03b6f299..3c38e60e 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html @@ -202,7 +202,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -236,7 +236,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -270,7 +270,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -304,7 +304,7 @@ Associated value contains already decompressed data.
- Show on GitHub + Show on GitHub
@@ -339,7 +339,7 @@ Associated value contains already decompressed data.

- Show on GitHub + Show on GitHub
@@ -353,7 +353,7 @@ Associated value contains already decompressed data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html index 04c23eb8..c677832a 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -217,7 +217,7 @@
- Show on GitHub + Show on GitHub
@@ -231,7 +231,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html index 4054057f..37c4329f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html index a19a8711..ae153a9f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html index be767b6d..7982ac12 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html @@ -186,7 +186,7 @@
- Show on GitHub + Show on GitHub
@@ -221,7 +221,7 @@
- Show on GitHub + Show on GitHub
@@ -256,7 +256,7 @@
- Show on GitHub + Show on GitHub
@@ -270,7 +270,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html index 5e5a8b9c..d17395d1 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html @@ -193,7 +193,7 @@
- Show on GitHub + Show on GitHub
@@ -224,7 +224,7 @@
- Show on GitHub + Show on GitHub
@@ -254,7 +254,7 @@
- Show on GitHub + Show on GitHub
@@ -295,7 +295,7 @@
- Show on GitHub + Show on GitHub
@@ -325,7 +325,7 @@
- Show on GitHub + Show on GitHub
@@ -355,7 +355,7 @@
- Show on GitHub + Show on GitHub
@@ -385,7 +385,7 @@
- Show on GitHub + Show on GitHub
@@ -406,7 +406,6 @@

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

If data passed is not actually a gzip archive, GzipError will be thrown.

-

Throws

GzipError. It may indicate that either the data is damaged or @@ -436,7 +435,6 @@ it might not be compressed with gzip at all.

Data compressed with gzip.

-
@@ -444,7 +442,7 @@ it might not be compressed with gzip at all.

- Show on GitHub + Show on GitHub
@@ -458,7 +456,7 @@ it might not be compressed with gzip at all.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html index 3879855f..0d3e2f9b 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/CompressionMethod.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html index 92ede20c..d0854fb4 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader/FileSystemType.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -226,7 +226,7 @@
- Show on GitHub + Show on GitHub
@@ -260,7 +260,7 @@
- Show on GitHub + Show on GitHub
@@ -294,7 +294,7 @@
- Show on GitHub + Show on GitHub
@@ -328,7 +328,7 @@
- Show on GitHub + Show on GitHub
@@ -342,7 +342,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html index ad8636ed..50375545 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -222,7 +222,7 @@
- Show on GitHub + Show on GitHub
@@ -252,7 +252,7 @@
- Show on GitHub + Show on GitHub
@@ -266,7 +266,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html index cf510324..fa568eaa 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html @@ -193,7 +193,7 @@
- Show on GitHub + Show on GitHub
@@ -224,7 +224,7 @@
- Show on GitHub + Show on GitHub
@@ -254,7 +254,7 @@
- Show on GitHub + Show on GitHub
@@ -284,7 +284,7 @@
- Show on GitHub + Show on GitHub
@@ -314,7 +314,7 @@
- Show on GitHub + Show on GitHub
@@ -335,7 +335,6 @@

Initializes the structure with the values from zlib archive presented in archiveData.

If data passed is not actually a zlib archive, ZlibError will be thrown.

-

Throws

ZlibError. It may indicate that either the data is damaged or @@ -365,7 +364,6 @@ it might not be compressed with zlib at all.

Data compressed with zlib.

-
@@ -373,7 +371,7 @@ it might not be compressed with zlib at all.

- Show on GitHub + Show on GitHub
@@ -387,7 +385,7 @@ it might not be compressed with zlib at all.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html index 15a82d40..2c9ca1b2 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionLevel.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -226,7 +226,7 @@
- Show on GitHub + Show on GitHub
@@ -260,7 +260,7 @@
- Show on GitHub + Show on GitHub
@@ -294,7 +294,7 @@
- Show on GitHub + Show on GitHub
@@ -308,7 +308,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html index 82996c2d..1ee7ec0e 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader/CompressionMethod.html @@ -192,7 +192,7 @@
- Show on GitHub + Show on GitHub
@@ -206,7 +206,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html index ce7d301e..1a92dc21 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html @@ -151,9 +151,11 @@
-

SWCompression

+

SWCompression

-

GitHub license CocoaPods Swift 3 +

GitHub license +CocoaPods +Swift 3 Build Status codecov

CocoaPods @@ -162,7 +164,7 @@

A framework which contains implementations of (de)compression algorithms.

Developed with Swift.

-

Why have you made this framework?

+

Why have you made this framework?

There are a couple of reasons for this.

@@ -176,7 +178,7 @@ that framework has a bit complicated API and somewhat questionable choice of sup And yes, it is also in Objective-C.

And here comes SWCompression: no Objective-C, pure Swift.

-

Features

+

Features

  • Containers: @@ -208,10 +210,10 @@ And yes, it is also in Objective-C.

By the way, it seems like GZip, Deflate and Zlib implementations are specification compliant.

-

Installation

+

Installation

SWCompression can be integrated into your project either using CocoaPods, Carthage or Swift Package Manager.

-
CocoaPods
+
CocoaPods

Add to your Podfile pod 'SWCompression'.

@@ -234,14 +236,14 @@ Available subspecs:

To complete installation, run pod install.

Note: Actually, there is one more subspec (SWCompression/Common) but it does not contain any end-user functions. It is included in every other subspec and should not be specified directly in Podfile.

-
Carthage
+
Carthage

Add to your Cartfile github "tsolomko/SWCompression".

Then run carthage update.

Finally, drag and drop SWCompression.framework from Carthage/Build folder into the Embedded Binaries section on your targets’ General tab.

-
Swift Package Manager
+
Swift Package Manager

Add to you package dependecies .Package(url: "https://github.com/tsolomko/SWCompression.git"), for example like this:

import PackageDescription
@@ -255,8 +257,8 @@ Available subspecs:

More info about SPM you can find at Swift Package Manager’s Documentation.

-

Usage

-

Basics

+

Usage

+

Basics

If you’d like to decompress deflated data just use:

let data = try! Data(contentsOf: URL(fileURLWithPath: "path/to/file"),
@@ -275,11 +277,11 @@ So, in case of GZip archive you should use:

One final note: every unarchive/decompress function can throw an error and you are responsible for handling them.

-

Documentation

+

Documentation

Every function or class of public API of SWCompression is documented. This documentation can be found at its own website.

-

Handling Errors

+

Handling Errors

If you look at list of available error types and their cases, you may be frightened by their number. @@ -297,11 +299,11 @@ For example:

<handle all other errors here> }
-

Sophisticated example

+

Sophisticated example

There is a small program, swcomp, which uses SWCompression for unarchiving several types of archives.

-

Why is it so slow?

+

Why is it so slow?

Version 2.0 came with a great performance improvement. Just look at the test results in ‘Tests/Test Result’. @@ -316,14 +318,14 @@ You can once again check test results if you want to convince yourself that this so some difference in speed is expected.

To sum up, it is highly recommended to build SWCompression with ‘Release’ configuration and use the latest version (at least 2.0).

-

Future plans

+

Future plans

  • Tar unarchiving.
  • BZip2 compression.
  • Something else…
-

References

+

References

  • pyflate
  • @@ -346,7 +348,7 @@ so some difference in speed is expected.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json index cc901253..0ffc137c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/search.json @@ -1 +1 @@ -{"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"

Fastest algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"

Fast algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"

Default algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"

Slowest algorithm but with maximum compression.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"

Levels of compression which can be used to create zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"

Level of compression in the archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"

Size of ‘window’: moving interval of data which was used to make the archive

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values from zlib archive presented in archiveData.

","parent_name":"ZlibHeader"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry8fileNameGSqSS_":{"name":"fileName","abstract":"

Name of the file or directory.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry11fileCommentGSqSS_":{"name":"fileComment","abstract":"

Comment associated with the entry.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry14fileAttributesVs6UInt32":{"name":"fileAttributes","abstract":"

File or directory attributes related to the file system of archive’s creator.

","parent_name":"ZipEntry"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"

One of many Linux systems. (It seems like modern macOS systems also fall into this category).

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"

Older Macintosh (Mac OS, OS X) systems.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"

File system used in Microsoft™®© Windows™®©.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"

File system was unknown to the archiver.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"

File system was one of the rare systems..

","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in gzip archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"

Type of file system on which gzip archive was created.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

The most recent modification time of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"

Type of file system on which compression took place.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16originalFileNameGSqSS_":{"name":"originalFileName","abstract":"

Name of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"

Comment inside the archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"

A structure which provides information about gzip archive.

"},"Structs/ZipEntry.html":{"name":"ZipEntry","abstract":"

Represents either a file or directory entry inside ZIP archive.

"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

A structure which provides information about zlib archive.

"},"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Abstract decompress function.

","parent_name":"DecompressionAlgorithm"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Abstract unarchive function.

","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"

Abstract archive class which supports unarchiving.

"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"

Abstract decompression algorithm class which supports decompression.

"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Either magic number in header or footer was not equal to predefined value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError16WrongArchiveInfoFMS0_S0_":{"name":"WrongArchiveInfo","abstract":"

One of special fields of archive had an incorrect value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18FieldReservedValueFMS0_S0_":{"name":"FieldReservedValue","abstract":"

One of special fields of archive had a reserved value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongInfoCRCFMS0_S0_":{"name":"WrongInfoCRC","abstract":"

Checksum of one of special fields of archive was incorrect.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongFilterIDFMS0_S0_":{"name":"WrongFilterID","abstract":"

ID of filter(s) used in archvie was unsupported.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15CheckTypeSHA256FMS0_S0_":{"name":"CheckTypeSHA256","abstract":"

Type of checksum of archive was SHA-256.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongDataSizeFMS0_S0_":{"name":"WrongDataSize","abstract":"

Either size of decompressed data was not equal to specified one in block header or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongCheckFMS0_FV10Foundation4DataS0_":{"name":"WrongCheck","abstract":"

Computed checksum of uncompressed data didn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongPaddingFMS0_S0_":{"name":"WrongPadding","abstract":"

Unsupported padding of a structure in the archive.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21MultiByteIntegerErrorFMS0_S0_":{"name":"MultiByteIntegerError","abstract":"

Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.

","parent_name":"XZError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Magic number was not 0x425a.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was not type ‘h’ (not Huffman).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockSizeFMS0_S0_":{"name":"WrongBlockSize","abstract":"

Unknown block size (not from ‘0’ to ‘9’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (was neither ‘pi’ nor ‘sqrt(pi)’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15RandomizedBlockFMS0_S0_":{"name":"RandomizedBlock","abstract":"

Block is randomized.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18WrongHuffmanGroupsFMS0_S0_":{"name":"WrongHuffmanGroups","abstract":"

Wrong number of Huffman tables/groups (should be between 2 and 6).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13WrongSelectorFMS0_S0_":{"name":"WrongSelector","abstract":"

Selector was greater than total number of Huffman tables/groups.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongHuffmanLengthCodeFMS0_S0_":{"name":"WrongHuffmanLengthCode","abstract":"

Wrong code of Huffman length (should be between 0 and 20).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"BZip2Error"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29WrongUncompressedBlockLengthsFMS0_S0_":{"name":"WrongUncompressedBlockLengths","abstract":"

Uncompressed block’ length and nlength bytes were not compatible.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (not from 0 to 2).

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11WrongSymbolFMS0_S0_":{"name":"WrongSymbol","abstract":"

Decoded symbol was found in Huffman tree but is unknown.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"DeflateError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20WrongCompressionInfoFMS0_S0_":{"name":"WrongCompressionInfo","abstract":"

Compression info was greater than 7 which is uncompatible number 8 compression method.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11WrongFcheckFMS0_S0_":{"name":"WrongFcheck","abstract":"

First two bytes were inconsistent with each other.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21WrongCompressionLevelFMS0_S0_":{"name":"WrongCompressionLevel","abstract":"

Compression level was other than 0, 1, 2, 3.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12WrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"WrongAdler32","abstract":"

Computed Adler-32 sum of uncompressed data didn’t match the value stored in the archive.","parent_name":"ZlibError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Properties byte was greater than 225.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21RangeDecoderInitErrorFMS0_S0_":{"name":"RangeDecoderInitError","abstract":"

Unable to initialize RanderDecorer.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24ExceededUncompressedSizeFMS0_S0_":{"name":"ExceededUncompressedSize","abstract":"

The number of uncompressed bytes hit limit in the middle of decoding.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13WindowIsEmptyFMS0_S0_":{"name":"WindowIsEmpty","abstract":"

Unable to perfrom repeat-distance decoding because there is nothing to repeat.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23RangeDecoderFinishErrorFMS0_S0_":{"name":"RangeDecoderFinishError","abstract":"

End of stream marker is reached, but range decoder is in incorrect state.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16RepeatWillExceedFMS0_S0_":{"name":"RepeatWillExceed","abstract":"

The number of bytes to repeat is greater than the amount bytes that is left to decode.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17NotEnoughToRepeatFMS0_S0_":{"name":"NotEnoughToRepeat","abstract":"

The amount of already decoded bytes is smaller than repeat length.

","parent_name":"LZMAError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27NotFoundCentralDirectoryEndFMS0_S0_":{"name":"NotFoundCentralDirectoryEnd","abstract":"

End of Central Directoty record was not found.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14WrongSignatureFMS0_S0_":{"name":"WrongSignature","abstract":"

Wrong signature of one of ZIP container’s structures.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9WrongSizeFMS0_S0_":{"name":"WrongSize","abstract":"

Wrong either compressed or uncompressed size of a ZIP container’s entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12WrongVersionFMS0_S0_":{"name":"WrongVersion","abstract":"

Wrong number of version needed to extract ZIP container.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24MultiVolumesNotSupportedFMS0_S0_":{"name":"MultiVolumesNotSupported","abstract":"

Archive either spanned or consists of several volumes. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22EncryptionNotSupportedFMS0_S0_":{"name":"EncryptionNotSupported","abstract":"

Entry or record is encrypted. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20PatchingNotSupportedFMS0_S0_":{"name":"PatchingNotSupported","abstract":"

Entry contains patched data. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23CompressionNotSupportedFMS0_S0_":{"name":"CompressionNotSupported","abstract":"

Wrong compression method of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16WrongLocalHeaderFMS0_S0_":{"name":"WrongLocalHeader","abstract":"

Wrong local header of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10WrongCRC32FMS0_S0_":{"name":"WrongCRC32","abstract":"

Wrong computed CRC32 of an entry.

","parent_name":"ZipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

First two bytes of archive were not 31 and 139.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongFlagsFMS0_S0_":{"name":"WrongFlags","abstract":"

Reserved flags bits were not equal to 0.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14WrongHeaderCRCFMS0_S0_":{"name":"WrongHeaderCRC","abstract":"

Computed CRC of header didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8WrongCRCFMS0_FV10Foundation4DataS0_":{"name":"WrongCRC","abstract":"

Computed CRC of uncompressed data didn’t match the value stored in the archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongISizeFMS0_S0_":{"name":"WrongISize","abstract":"

Computed isize didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Reserved bits of LZMA2 properties byte were not equal to zero.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19WrongDictionarySizeFMS0_S0_":{"name":"WrongDictionarySize","abstract":"

Dictionary size was too big.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16WrongControlByteFMS0_S0_":{"name":"WrongControlByte","abstract":"

Unknown conrol byte value of LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongResetFMS0_S0_":{"name":"WrongReset","abstract":"

Unknown reset instruction encounetered in LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongSizesFMS0_S0_":{"name":"WrongSizes","abstract":"

Either size of decompressed data was not equal to specified one in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"

Error happened during LZMA2 decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"

Error happened during unarchiving gzip archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"

Error happened during processing ZIP archive (container)."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"

Error happened during LZMA decompression."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"

Error happened during unarchiving Zlib archive."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"

Error happened during deflate decompression."},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"

Error happened during bzip2 decompression."},"Enums/XZError.html":{"name":"XZError","abstract":"

Error happened during unarchiving XZ archive."},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives xz archive stored in archiveData.

","parent_name":"XZArchive"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with BZip2 algortihm.

","parent_name":"BZip2"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"

Compresses data with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives Zlib archive stored in archiveData.

","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into Zlib archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"ZlibArchive"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA algortihm.

","parent_name":"LZMA"},"Classes/ZipContainer.html#/s:vC13SWCompression12ZipContainer7entriesGSaVS_8ZipEntry_":{"name":"entries","abstract":"

All file and directory entries found in ZIP archive (in its Central Directory).

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainercFzT13containerDataV10Foundation4Data_S0_":{"name":"init(containerData:)","abstract":"

Tries to open ZIP archive and parse its Central Directory.","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainer4dataFzT3forVS_8ZipEntry_V10Foundation4Data":{"name":"data(for:)","abstract":"

Returns data associated with provided ZipEntry.

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaT9entryNameSS9entryDataS2___":{"name":"open(containerData:)","abstract":"

Processes ZIP archive (container) and returns an array of tuples (String, Data).","parent_name":"ZipContainer"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives gzip archive stored in archiveData.

","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into GZip archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"GzipArchive"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

","parent_name":"LZMA2"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"

Provides function to decompress data, which were compressed with LZMA2

"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"

Provides unarchive function for GZip archives.

"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"

Provides function to open ZIP archives (containers).

"},"Classes/LZMA.html":{"name":"LZMA","abstract":"

Provides function to decompress data, which were compressed with LZMA

"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"

Provides unarchive function for Zlib archives.

"},"Classes/Deflate.html":{"name":"Deflate","abstract":"

Provides function to decompress data, which were compressed with DEFLATE.

"},"Classes/BZip2.html":{"name":"BZip2","abstract":"

Provides function to decompress data, which were compressed using BZip2.

"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"

Provides unarchive function for XZ archives.

"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally."},"Enums.html":{"name":"Enums","abstract":"The following enums are available globally."},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally."},"Structs.html":{"name":"Structs","abstract":"The following structs are available globally."}} \ No newline at end of file +{"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"

Fastest algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"

Fast algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"

Default algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"

Slowest algorithm but with maximum compression.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"

Levels of compression which can be used to create zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"

Level of compression in the archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"

Size of ‘window’: moving interval of data which was used to make the archive

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values from zlib archive presented in archiveData.

","parent_name":"ZlibHeader"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry8fileNameGSqSS_":{"name":"fileName","abstract":"

Name of the file or directory.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry11fileCommentGSqSS_":{"name":"fileComment","abstract":"

Comment associated with the entry.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry14fileAttributesVs6UInt32":{"name":"fileAttributes","abstract":"

File or directory attributes related to the file system of archive’s creator.

","parent_name":"ZipEntry"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"

One of many Linux systems. (It seems like modern macOS systems also fall into this category).

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"

Older Macintosh (Mac OS, OS X) systems.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"

File system used in Microsoft™®© Windows™®©.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"

File system was unknown to the archiver.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"

File system was one of the rare systems..

","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in gzip archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"

Type of file system on which gzip archive was created.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

The most recent modification time of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"

Type of file system on which compression took place.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16originalFileNameGSqSS_":{"name":"originalFileName","abstract":"

Name of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"

Comment inside the archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"

A structure which provides information about gzip archive.

"},"Structs/ZipEntry.html":{"name":"ZipEntry","abstract":"

Represents either a file or directory entry inside ZIP archive.

"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

A structure which provides information about zlib archive.

"},"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Abstract decompress function.

","parent_name":"DecompressionAlgorithm"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Abstract unarchive function.

","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"

Abstract archive class which supports unarchiving.

"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"

Abstract decompression algorithm class which supports decompression.

"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Either magic number in header or footer was not equal to predefined value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError16WrongArchiveInfoFMS0_S0_":{"name":"WrongArchiveInfo","abstract":"

One of special fields of archive had an incorrect value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18FieldReservedValueFMS0_S0_":{"name":"FieldReservedValue","abstract":"

One of special fields of archive had a reserved value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongInfoCRCFMS0_S0_":{"name":"WrongInfoCRC","abstract":"

Checksum of one of special fields of archive was incorrect.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongFilterIDFMS0_S0_":{"name":"WrongFilterID","abstract":"

ID of filter(s) used in archvie was unsupported.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15CheckTypeSHA256FMS0_S0_":{"name":"CheckTypeSHA256","abstract":"

Type of checksum of archive was SHA-256.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongDataSizeFMS0_S0_":{"name":"WrongDataSize","abstract":"

Either size of decompressed data was not equal to specified one in block header or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongCheckFMS0_FV10Foundation4DataS0_":{"name":"WrongCheck","abstract":"

Computed checksum of uncompressed data didn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongPaddingFMS0_S0_":{"name":"WrongPadding","abstract":"

Unsupported padding of a structure in the archive.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21MultiByteIntegerErrorFMS0_S0_":{"name":"MultiByteIntegerError","abstract":"

Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.

","parent_name":"XZError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Magic number was not 0x425a.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was not type ‘h’ (not Huffman).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockSizeFMS0_S0_":{"name":"WrongBlockSize","abstract":"

Unknown block size (not from ‘0’ to ‘9’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (was neither ‘pi’ nor ‘sqrt(pi)’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15RandomizedBlockFMS0_S0_":{"name":"RandomizedBlock","abstract":"

Block is randomized.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18WrongHuffmanGroupsFMS0_S0_":{"name":"WrongHuffmanGroups","abstract":"

Wrong number of Huffman tables/groups (should be between 2 and 6).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13WrongSelectorFMS0_S0_":{"name":"WrongSelector","abstract":"

Selector was greater than total number of Huffman tables/groups.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongHuffmanLengthCodeFMS0_S0_":{"name":"WrongHuffmanLengthCode","abstract":"

Wrong code of Huffman length (should be between 0 and 20).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"BZip2Error"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29WrongUncompressedBlockLengthsFMS0_S0_":{"name":"WrongUncompressedBlockLengths","abstract":"

Uncompressed block’ length and nlength bytes were not compatible.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (not from 0 to 2).

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11WrongSymbolFMS0_S0_":{"name":"WrongSymbol","abstract":"

Decoded symbol was found in Huffman tree but is unknown.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"DeflateError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20WrongCompressionInfoFMS0_S0_":{"name":"WrongCompressionInfo","abstract":"

Compression info was greater than 7 which is uncompatible number 8 compression method.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11WrongFcheckFMS0_S0_":{"name":"WrongFcheck","abstract":"

First two bytes were inconsistent with each other.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21WrongCompressionLevelFMS0_S0_":{"name":"WrongCompressionLevel","abstract":"

Compression level was other than 0, 1, 2, 3.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12WrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"WrongAdler32","abstract":"

Computed Adler-32 sum of uncompressed data didn’t match the value stored in the archive.","parent_name":"ZlibError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Properties byte was greater than 225.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21RangeDecoderInitErrorFMS0_S0_":{"name":"RangeDecoderInitError","abstract":"

Unable to initialize RanderDecorer.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24ExceededUncompressedSizeFMS0_S0_":{"name":"ExceededUncompressedSize","abstract":"

The number of uncompressed bytes hit limit in the middle of decoding.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13WindowIsEmptyFMS0_S0_":{"name":"WindowIsEmpty","abstract":"

Unable to perfrom repeat-distance decoding because there is nothing to repeat.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23RangeDecoderFinishErrorFMS0_S0_":{"name":"RangeDecoderFinishError","abstract":"

End of stream marker is reached, but range decoder is in incorrect state.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16RepeatWillExceedFMS0_S0_":{"name":"RepeatWillExceed","abstract":"

The number of bytes to repeat is greater than the amount bytes that is left to decode.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17NotEnoughToRepeatFMS0_S0_":{"name":"NotEnoughToRepeat","abstract":"

The amount of already decoded bytes is smaller than repeat length.

","parent_name":"LZMAError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27NotFoundCentralDirectoryEndFMS0_S0_":{"name":"NotFoundCentralDirectoryEnd","abstract":"

End of Central Directoty record was not found.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14WrongSignatureFMS0_S0_":{"name":"WrongSignature","abstract":"

Wrong signature of one of ZIP container’s structures.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9WrongSizeFMS0_S0_":{"name":"WrongSize","abstract":"

Wrong either compressed or uncompressed size of a ZIP container’s entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12WrongVersionFMS0_S0_":{"name":"WrongVersion","abstract":"

Wrong number of version needed to extract ZIP container.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24MultiVolumesNotSupportedFMS0_S0_":{"name":"MultiVolumesNotSupported","abstract":"

Archive either spanned or consists of several volumes. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22EncryptionNotSupportedFMS0_S0_":{"name":"EncryptionNotSupported","abstract":"

Entry or record is encrypted. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20PatchingNotSupportedFMS0_S0_":{"name":"PatchingNotSupported","abstract":"

Entry contains patched data. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23CompressionNotSupportedFMS0_S0_":{"name":"CompressionNotSupported","abstract":"

Wrong compression method of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16WrongLocalHeaderFMS0_S0_":{"name":"WrongLocalHeader","abstract":"

Wrong local header of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10WrongCRC32FMS0_S0_":{"name":"WrongCRC32","abstract":"

Wrong computed CRC32 of an entry.

","parent_name":"ZipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

First two bytes of archive were not 31 and 139.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongFlagsFMS0_S0_":{"name":"WrongFlags","abstract":"

Reserved flags bits were not equal to 0.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14WrongHeaderCRCFMS0_S0_":{"name":"WrongHeaderCRC","abstract":"

Computed CRC of header didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8WrongCRCFMS0_FV10Foundation4DataS0_":{"name":"WrongCRC","abstract":"

Computed CRC of uncompressed data didn’t match the value stored in the archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongISizeFMS0_S0_":{"name":"WrongISize","abstract":"

Computed isize didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Reserved bits of LZMA2 properties byte were not equal to zero.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19WrongDictionarySizeFMS0_S0_":{"name":"WrongDictionarySize","abstract":"

Dictionary size was too big.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16WrongControlByteFMS0_S0_":{"name":"WrongControlByte","abstract":"

Unknown conrol byte value of LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongResetFMS0_S0_":{"name":"WrongReset","abstract":"

Unknown reset instruction encounetered in LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongSizesFMS0_S0_":{"name":"WrongSizes","abstract":"

Either size of decompressed data was not equal to specified one in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"

Error happened during LZMA2 decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"

Error happened during unarchiving gzip archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"

Error happened during processing ZIP archive (container)."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"

Error happened during LZMA decompression."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"

Error happened during unarchiving Zlib archive."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"

Error happened during deflate decompression."},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"

Error happened during bzip2 decompression."},"Enums/XZError.html":{"name":"XZError","abstract":"

Error happened during unarchiving XZ archive."},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives xz archive stored in archiveData.

","parent_name":"XZArchive"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with BZip2 algortihm.

","parent_name":"BZip2"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"

Compresses data with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives Zlib archive stored in archiveData.

","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into Zlib archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"ZlibArchive"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA algortihm.

","parent_name":"LZMA"},"Classes/ZipContainer.html#/s:vC13SWCompression12ZipContainer7entriesGSaVS_8ZipEntry_":{"name":"entries","abstract":"

All file and directory entries found in ZIP archive (in its Central Directory).

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainercFzT13containerDataV10Foundation4Data_S0_":{"name":"init(containerData:)","abstract":"

Tries to open ZIP archive and parse its Central Directory.","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainer4dataFzT3forVS_8ZipEntry_V10Foundation4Data":{"name":"data(for:)","abstract":"

Returns data associated with provided ZipEntry.

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaT9entryNameSS9entryDataS2___":{"name":"open(containerData:)","abstract":"

Processes ZIP archive (container) and returns an array of tuples (String, Data).","parent_name":"ZipContainer"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives gzip archive stored in archiveData.

","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into GZip archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"GzipArchive"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

","parent_name":"LZMA2"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"

Provides function to decompress data, which were compressed with LZMA2

"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"

Provides unarchive function for GZip archives.

"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"

Provides function to open ZIP archives (containers).

"},"Classes/LZMA.html":{"name":"LZMA","abstract":"

Provides function to decompress data, which were compressed with LZMA

"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"

Provides unarchive function for Zlib archives.

"},"Classes/Deflate.html":{"name":"Deflate","abstract":"

Provides function to decompress data, which were compressed with DEFLATE.

"},"Classes/BZip2.html":{"name":"BZip2","abstract":"

Provides function to decompress data, which were compressed using BZip2.

"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"

Provides unarchive function for XZ archives.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enums","abstract":"

The following enums are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structs","abstract":"

The following structs are available globally.

"}} \ No newline at end of file diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/undocumented.json b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/undocumented.json deleted file mode 100644 index 1862018e..00000000 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/undocumented.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "warnings": [ - - ], - "source_directory": "/Users/timofeysolomko/Developer/SWCompression" -} \ No newline at end of file diff --git a/docs/docsets/SWCompression.tgz b/docs/docsets/SWCompression.tgz index 84bc15c114de3131720da21e94dc14b1da0f130f..c022b2edf78d7dd16feb00cd268a9fe9acaa1133 100644 GIT binary patch delta 98242 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

X5}KDtlA7I5sX7 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%0DHQw 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

a)_Gbs{E*pwbSrMFsCo`EpC;MlW~9ww4`SqF{sZ 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

-

SWCompression

+

SWCompression

-

GitHub license CocoaPods Swift 3 +

GitHub license +CocoaPods +Swift 3 Build Status codecov

CocoaPods @@ -162,7 +164,7 @@

A framework which contains implementations of (de)compression algorithms.

Developed with Swift.

-

Why have you made this framework?

+

Why have you made this framework?

There are a couple of reasons for this.

@@ -176,7 +178,7 @@ that framework has a bit complicated API and somewhat questionable choice of sup And yes, it is also in Objective-C.

And here comes SWCompression: no Objective-C, pure Swift.

-

Features

+

Features

  • Containers: @@ -208,10 +210,10 @@ And yes, it is also in Objective-C.

By the way, it seems like GZip, Deflate and Zlib implementations are specification compliant.

-

Installation

+

Installation

SWCompression can be integrated into your project either using CocoaPods, Carthage or Swift Package Manager.

-
CocoaPods
+
CocoaPods

Add to your Podfile pod 'SWCompression'.

@@ -234,14 +236,14 @@ Available subspecs:

To complete installation, run pod install.

Note: Actually, there is one more subspec (SWCompression/Common) but it does not contain any end-user functions. It is included in every other subspec and should not be specified directly in Podfile.

-
Carthage
+
Carthage

Add to your Cartfile github "tsolomko/SWCompression".

Then run carthage update.

Finally, drag and drop SWCompression.framework from Carthage/Build folder into the Embedded Binaries section on your targets’ General tab.

-
Swift Package Manager
+
Swift Package Manager

Add to you package dependecies .Package(url: "https://github.com/tsolomko/SWCompression.git"), for example like this:

import PackageDescription
@@ -255,8 +257,8 @@ Available subspecs:

More info about SPM you can find at Swift Package Manager’s Documentation.

-

Usage

-

Basics

+

Usage

+

Basics

If you’d like to decompress deflated data just use:

let data = try! Data(contentsOf: URL(fileURLWithPath: "path/to/file"),
@@ -275,11 +277,11 @@ So, in case of GZip archive you should use:

One final note: every unarchive/decompress function can throw an error and you are responsible for handling them.

-

Documentation

+

Documentation

Every function or class of public API of SWCompression is documented. This documentation can be found at its own website.

-

Handling Errors

+

Handling Errors

If you look at list of available error types and their cases, you may be frightened by their number. @@ -297,11 +299,11 @@ For example:

<handle all other errors here> }
-

Sophisticated example

+

Sophisticated example

There is a small program, swcomp, which uses SWCompression for unarchiving several types of archives.

-

Why is it so slow?

+

Why is it so slow?

Version 2.0 came with a great performance improvement. Just look at the test results in ‘Tests/Test Result’. @@ -316,14 +318,14 @@ You can once again check test results if you want to convince yourself that this so some difference in speed is expected.

To sum up, it is highly recommended to build SWCompression with ‘Release’ configuration and use the latest version (at least 2.0).

-

Future plans

+

Future plans

  • Tar unarchiving.
  • BZip2 compression.
  • Something else…
-

References

+

References

  • pyflate
  • @@ -346,7 +348,7 @@ so some difference in speed is expected.

diff --git a/docs/search.json b/docs/search.json index cc901253..0ffc137c 100644 --- a/docs/search.json +++ b/docs/search.json @@ -1 +1 @@ -{"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"

Fastest algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"

Fast algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"

Default algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"

Slowest algorithm but with maximum compression.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"

Levels of compression which can be used to create zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"

Level of compression in the archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"

Size of ‘window’: moving interval of data which was used to make the archive

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values from zlib archive presented in archiveData.

","parent_name":"ZlibHeader"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry8fileNameGSqSS_":{"name":"fileName","abstract":"

Name of the file or directory.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry11fileCommentGSqSS_":{"name":"fileComment","abstract":"

Comment associated with the entry.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry14fileAttributesVs6UInt32":{"name":"fileAttributes","abstract":"

File or directory attributes related to the file system of archive’s creator.

","parent_name":"ZipEntry"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"

One of many Linux systems. (It seems like modern macOS systems also fall into this category).

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"

Older Macintosh (Mac OS, OS X) systems.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"

File system used in Microsoft™®© Windows™®©.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"

File system was unknown to the archiver.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"

File system was one of the rare systems..

","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in gzip archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"

Type of file system on which gzip archive was created.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

The most recent modification time of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"

Type of file system on which compression took place.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16originalFileNameGSqSS_":{"name":"originalFileName","abstract":"

Name of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"

Comment inside the archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"

A structure which provides information about gzip archive.

"},"Structs/ZipEntry.html":{"name":"ZipEntry","abstract":"

Represents either a file or directory entry inside ZIP archive.

"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

A structure which provides information about zlib archive.

"},"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Abstract decompress function.

","parent_name":"DecompressionAlgorithm"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Abstract unarchive function.

","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"

Abstract archive class which supports unarchiving.

"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"

Abstract decompression algorithm class which supports decompression.

"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Either magic number in header or footer was not equal to predefined value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError16WrongArchiveInfoFMS0_S0_":{"name":"WrongArchiveInfo","abstract":"

One of special fields of archive had an incorrect value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18FieldReservedValueFMS0_S0_":{"name":"FieldReservedValue","abstract":"

One of special fields of archive had a reserved value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongInfoCRCFMS0_S0_":{"name":"WrongInfoCRC","abstract":"

Checksum of one of special fields of archive was incorrect.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongFilterIDFMS0_S0_":{"name":"WrongFilterID","abstract":"

ID of filter(s) used in archvie was unsupported.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15CheckTypeSHA256FMS0_S0_":{"name":"CheckTypeSHA256","abstract":"

Type of checksum of archive was SHA-256.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongDataSizeFMS0_S0_":{"name":"WrongDataSize","abstract":"

Either size of decompressed data was not equal to specified one in block header or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongCheckFMS0_FV10Foundation4DataS0_":{"name":"WrongCheck","abstract":"

Computed checksum of uncompressed data didn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongPaddingFMS0_S0_":{"name":"WrongPadding","abstract":"

Unsupported padding of a structure in the archive.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21MultiByteIntegerErrorFMS0_S0_":{"name":"MultiByteIntegerError","abstract":"

Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.

","parent_name":"XZError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Magic number was not 0x425a.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was not type ‘h’ (not Huffman).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockSizeFMS0_S0_":{"name":"WrongBlockSize","abstract":"

Unknown block size (not from ‘0’ to ‘9’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (was neither ‘pi’ nor ‘sqrt(pi)’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15RandomizedBlockFMS0_S0_":{"name":"RandomizedBlock","abstract":"

Block is randomized.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18WrongHuffmanGroupsFMS0_S0_":{"name":"WrongHuffmanGroups","abstract":"

Wrong number of Huffman tables/groups (should be between 2 and 6).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13WrongSelectorFMS0_S0_":{"name":"WrongSelector","abstract":"

Selector was greater than total number of Huffman tables/groups.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongHuffmanLengthCodeFMS0_S0_":{"name":"WrongHuffmanLengthCode","abstract":"

Wrong code of Huffman length (should be between 0 and 20).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"BZip2Error"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29WrongUncompressedBlockLengthsFMS0_S0_":{"name":"WrongUncompressedBlockLengths","abstract":"

Uncompressed block’ length and nlength bytes were not compatible.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (not from 0 to 2).

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11WrongSymbolFMS0_S0_":{"name":"WrongSymbol","abstract":"

Decoded symbol was found in Huffman tree but is unknown.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"DeflateError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20WrongCompressionInfoFMS0_S0_":{"name":"WrongCompressionInfo","abstract":"

Compression info was greater than 7 which is uncompatible number 8 compression method.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11WrongFcheckFMS0_S0_":{"name":"WrongFcheck","abstract":"

First two bytes were inconsistent with each other.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21WrongCompressionLevelFMS0_S0_":{"name":"WrongCompressionLevel","abstract":"

Compression level was other than 0, 1, 2, 3.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12WrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"WrongAdler32","abstract":"

Computed Adler-32 sum of uncompressed data didn’t match the value stored in the archive.","parent_name":"ZlibError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Properties byte was greater than 225.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21RangeDecoderInitErrorFMS0_S0_":{"name":"RangeDecoderInitError","abstract":"

Unable to initialize RanderDecorer.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24ExceededUncompressedSizeFMS0_S0_":{"name":"ExceededUncompressedSize","abstract":"

The number of uncompressed bytes hit limit in the middle of decoding.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13WindowIsEmptyFMS0_S0_":{"name":"WindowIsEmpty","abstract":"

Unable to perfrom repeat-distance decoding because there is nothing to repeat.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23RangeDecoderFinishErrorFMS0_S0_":{"name":"RangeDecoderFinishError","abstract":"

End of stream marker is reached, but range decoder is in incorrect state.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16RepeatWillExceedFMS0_S0_":{"name":"RepeatWillExceed","abstract":"

The number of bytes to repeat is greater than the amount bytes that is left to decode.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17NotEnoughToRepeatFMS0_S0_":{"name":"NotEnoughToRepeat","abstract":"

The amount of already decoded bytes is smaller than repeat length.

","parent_name":"LZMAError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27NotFoundCentralDirectoryEndFMS0_S0_":{"name":"NotFoundCentralDirectoryEnd","abstract":"

End of Central Directoty record was not found.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14WrongSignatureFMS0_S0_":{"name":"WrongSignature","abstract":"

Wrong signature of one of ZIP container’s structures.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9WrongSizeFMS0_S0_":{"name":"WrongSize","abstract":"

Wrong either compressed or uncompressed size of a ZIP container’s entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12WrongVersionFMS0_S0_":{"name":"WrongVersion","abstract":"

Wrong number of version needed to extract ZIP container.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24MultiVolumesNotSupportedFMS0_S0_":{"name":"MultiVolumesNotSupported","abstract":"

Archive either spanned or consists of several volumes. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22EncryptionNotSupportedFMS0_S0_":{"name":"EncryptionNotSupported","abstract":"

Entry or record is encrypted. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20PatchingNotSupportedFMS0_S0_":{"name":"PatchingNotSupported","abstract":"

Entry contains patched data. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23CompressionNotSupportedFMS0_S0_":{"name":"CompressionNotSupported","abstract":"

Wrong compression method of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16WrongLocalHeaderFMS0_S0_":{"name":"WrongLocalHeader","abstract":"

Wrong local header of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10WrongCRC32FMS0_S0_":{"name":"WrongCRC32","abstract":"

Wrong computed CRC32 of an entry.

","parent_name":"ZipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

First two bytes of archive were not 31 and 139.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongFlagsFMS0_S0_":{"name":"WrongFlags","abstract":"

Reserved flags bits were not equal to 0.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14WrongHeaderCRCFMS0_S0_":{"name":"WrongHeaderCRC","abstract":"

Computed CRC of header didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8WrongCRCFMS0_FV10Foundation4DataS0_":{"name":"WrongCRC","abstract":"

Computed CRC of uncompressed data didn’t match the value stored in the archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongISizeFMS0_S0_":{"name":"WrongISize","abstract":"

Computed isize didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Reserved bits of LZMA2 properties byte were not equal to zero.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19WrongDictionarySizeFMS0_S0_":{"name":"WrongDictionarySize","abstract":"

Dictionary size was too big.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16WrongControlByteFMS0_S0_":{"name":"WrongControlByte","abstract":"

Unknown conrol byte value of LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongResetFMS0_S0_":{"name":"WrongReset","abstract":"

Unknown reset instruction encounetered in LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongSizesFMS0_S0_":{"name":"WrongSizes","abstract":"

Either size of decompressed data was not equal to specified one in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"

Error happened during LZMA2 decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"

Error happened during unarchiving gzip archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"

Error happened during processing ZIP archive (container)."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"

Error happened during LZMA decompression."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"

Error happened during unarchiving Zlib archive."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"

Error happened during deflate decompression."},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"

Error happened during bzip2 decompression."},"Enums/XZError.html":{"name":"XZError","abstract":"

Error happened during unarchiving XZ archive."},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives xz archive stored in archiveData.

","parent_name":"XZArchive"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with BZip2 algortihm.

","parent_name":"BZip2"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"

Compresses data with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives Zlib archive stored in archiveData.

","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into Zlib archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"ZlibArchive"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA algortihm.

","parent_name":"LZMA"},"Classes/ZipContainer.html#/s:vC13SWCompression12ZipContainer7entriesGSaVS_8ZipEntry_":{"name":"entries","abstract":"

All file and directory entries found in ZIP archive (in its Central Directory).

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainercFzT13containerDataV10Foundation4Data_S0_":{"name":"init(containerData:)","abstract":"

Tries to open ZIP archive and parse its Central Directory.","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainer4dataFzT3forVS_8ZipEntry_V10Foundation4Data":{"name":"data(for:)","abstract":"

Returns data associated with provided ZipEntry.

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaT9entryNameSS9entryDataS2___":{"name":"open(containerData:)","abstract":"

Processes ZIP archive (container) and returns an array of tuples (String, Data).","parent_name":"ZipContainer"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives gzip archive stored in archiveData.

","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into GZip archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"GzipArchive"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

","parent_name":"LZMA2"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"

Provides function to decompress data, which were compressed with LZMA2

"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"

Provides unarchive function for GZip archives.

"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"

Provides function to open ZIP archives (containers).

"},"Classes/LZMA.html":{"name":"LZMA","abstract":"

Provides function to decompress data, which were compressed with LZMA

"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"

Provides unarchive function for Zlib archives.

"},"Classes/Deflate.html":{"name":"Deflate","abstract":"

Provides function to decompress data, which were compressed with DEFLATE.

"},"Classes/BZip2.html":{"name":"BZip2","abstract":"

Provides function to decompress data, which were compressed using BZip2.

"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"

Provides unarchive function for XZ archives.

"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally."},"Enums.html":{"name":"Enums","abstract":"The following enums are available globally."},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally."},"Structs.html":{"name":"Structs","abstract":"The following structs are available globally."}} \ No newline at end of file +{"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16fastestAlgorithmFMS1_S1_":{"name":"fastestAlgorithm","abstract":"

Fastest algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13fastAlgorithmFMS1_S1_":{"name":"fastAlgorithm","abstract":"

Fast algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel16defaultAlgorithmFMS1_S1_":{"name":"defaultAlgorithm","abstract":"

Default algorithm.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionLevel.html#/s:FOV13SWCompression10ZlibHeader16CompressionLevel13slowAlgorithmFMS1_S1_":{"name":"slowAlgorithm","abstract":"

Slowest algorithm but with maximum compression.

","parent_name":"CompressionLevel"},"Structs/ZlibHeader/CompressionMethod.html#/s:FOV13SWCompression10ZlibHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/ZlibHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader/CompressionLevel.html":{"name":"CompressionLevel","abstract":"

Levels of compression which can be used to create zlib archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader16compressionLevelOS0_16CompressionLevel":{"name":"compressionLevel","abstract":"

Level of compression in the archive.

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:vV13SWCompression10ZlibHeader10windowSizeSi":{"name":"windowSize","abstract":"

Size of ‘window’: moving interval of data which was used to make the archive

","parent_name":"ZlibHeader"},"Structs/ZlibHeader.html#/s:FV13SWCompression10ZlibHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values from zlib archive presented in archiveData.

","parent_name":"ZlibHeader"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry8fileNameGSqSS_":{"name":"fileName","abstract":"

Name of the file or directory.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry11fileCommentGSqSS_":{"name":"fileComment","abstract":"

Comment associated with the entry.

","parent_name":"ZipEntry"},"Structs/ZipEntry.html#/s:vV13SWCompression8ZipEntry14fileAttributesVs6UInt32":{"name":"fileAttributes","abstract":"

File or directory attributes related to the file system of archive’s creator.

","parent_name":"ZipEntry"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4unixFMS1_S1_":{"name":"unix","abstract":"

One of many Linux systems. (It seems like modern macOS systems also fall into this category).

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType9macintoshFMS1_S1_":{"name":"macintosh","abstract":"

Older Macintosh (Mac OS, OS X) systems.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType4ntfsFMS1_S1_":{"name":"ntfs","abstract":"

File system used in Microsoft™®© Windows™®©.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType7unknownFMS1_S1_":{"name":"unknown","abstract":"

File system was unknown to the archiver.

","parent_name":"FileSystemType"},"Structs/GzipHeader/FileSystemType.html#/s:FOV13SWCompression10GzipHeader14FileSystemType5otherFMS1_S1_":{"name":"other","abstract":"

File system was one of the rare systems..

","parent_name":"FileSystemType"},"Structs/GzipHeader/CompressionMethod.html#/s:FOV13SWCompression10GzipHeader17CompressionMethod7deflateFMS1_S1_":{"name":"deflate","abstract":"

The only one supported compression method (Deflate).

","parent_name":"CompressionMethod"},"Structs/GzipHeader/CompressionMethod.html":{"name":"CompressionMethod","abstract":"

Supported compression methods in gzip archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader/FileSystemType.html":{"name":"FileSystemType","abstract":"

Type of file system on which gzip archive was created.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader17compressionMethodOS0_17CompressionMethod":{"name":"compressionMethod","abstract":"

Compression method of archive. Always equals to .deflate.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

The most recent modification time of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader6osTypeOS0_14FileSystemType":{"name":"osType","abstract":"

Type of file system on which compression took place.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader16originalFileNameGSqSS_":{"name":"originalFileName","abstract":"

Name of the original file.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:vV13SWCompression10GzipHeader7commentGSqSS_":{"name":"comment","abstract":"

Comment inside the archive.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html#/s:FV13SWCompression10GzipHeadercFzT11archiveDataV10Foundation4Data_S0_":{"name":"init(archiveData:)","abstract":"

Initializes the structure with the values of first ‘member’ in gzip archive presented in archiveData.

","parent_name":"GzipHeader"},"Structs/GzipHeader.html":{"name":"GzipHeader","abstract":"

A structure which provides information about gzip archive.

"},"Structs/ZipEntry.html":{"name":"ZipEntry","abstract":"

Represents either a file or directory entry inside ZIP archive.

"},"Structs/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

A structure which provides information about zlib archive.

"},"Protocols/DecompressionAlgorithm.html#/s:ZFP13SWCompression22DecompressionAlgorithm10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Abstract decompress function.

","parent_name":"DecompressionAlgorithm"},"Protocols/Archive.html#/s:ZFP13SWCompression7Archive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Abstract unarchive function.

","parent_name":"Archive"},"Protocols/Archive.html":{"name":"Archive","abstract":"

Abstract archive class which supports unarchiving.

"},"Protocols/DecompressionAlgorithm.html":{"name":"DecompressionAlgorithm","abstract":"

Abstract decompression algorithm class which supports decompression.

"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Either magic number in header or footer was not equal to predefined value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError16WrongArchiveInfoFMS0_S0_":{"name":"WrongArchiveInfo","abstract":"

One of special fields of archive had an incorrect value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError18FieldReservedValueFMS0_S0_":{"name":"FieldReservedValue","abstract":"

One of special fields of archive had a reserved value.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongInfoCRCFMS0_S0_":{"name":"WrongInfoCRC","abstract":"

Checksum of one of special fields of archive was incorrect.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongFilterIDFMS0_S0_":{"name":"WrongFilterID","abstract":"

ID of filter(s) used in archvie was unsupported.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError15CheckTypeSHA256FMS0_S0_":{"name":"CheckTypeSHA256","abstract":"

Type of checksum of archive was SHA-256.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError13WrongDataSizeFMS0_S0_":{"name":"WrongDataSize","abstract":"

Either size of decompressed data was not equal to specified one in block header or","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError10WrongCheckFMS0_FV10Foundation4DataS0_":{"name":"WrongCheck","abstract":"

Computed checksum of uncompressed data didn’t match the value stored in the archive.","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError12WrongPaddingFMS0_S0_":{"name":"WrongPadding","abstract":"

Unsupported padding of a structure in the archive.

","parent_name":"XZError"},"Enums/XZError.html#/s:FO13SWCompression7XZError21MultiByteIntegerErrorFMS0_S0_":{"name":"MultiByteIntegerError","abstract":"

Either null byte encountered or exceeded maximum amount bytes during reading multi byte number.

","parent_name":"XZError"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

Magic number was not 0x425a.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was not type ‘h’ (not Huffman).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockSizeFMS0_S0_":{"name":"WrongBlockSize","abstract":"

Unknown block size (not from ‘0’ to ‘9’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (was neither ‘pi’ nor ‘sqrt(pi)’).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error15RandomizedBlockFMS0_S0_":{"name":"RandomizedBlock","abstract":"

Block is randomized.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error18WrongHuffmanGroupsFMS0_S0_":{"name":"WrongHuffmanGroups","abstract":"

Wrong number of Huffman tables/groups (should be between 2 and 6).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error13WrongSelectorFMS0_S0_":{"name":"WrongSelector","abstract":"

Selector was greater than total number of Huffman tables/groups.

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error22WrongHuffmanLengthCodeFMS0_S0_":{"name":"WrongHuffmanLengthCode","abstract":"

Wrong code of Huffman length (should be between 0 and 20).

","parent_name":"BZip2Error"},"Enums/BZip2Error.html#/s:FO13SWCompression10BZip2Error14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"BZip2Error"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError29WrongUncompressedBlockLengthsFMS0_S0_":{"name":"WrongUncompressedBlockLengths","abstract":"

Uncompressed block’ length and nlength bytes were not compatible.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14WrongBlockTypeFMS0_S0_":{"name":"WrongBlockType","abstract":"

Unknown block type (not from 0 to 2).

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError11WrongSymbolFMS0_S0_":{"name":"WrongSymbol","abstract":"

Decoded symbol was found in Huffman tree but is unknown.

","parent_name":"DeflateError"},"Enums/DeflateError.html#/s:FO13SWCompression12DeflateError14SymbolNotFoundFMS0_S0_":{"name":"SymbolNotFound","abstract":"

Symbol was not found in Huffman tree.

","parent_name":"DeflateError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError20WrongCompressionInfoFMS0_S0_":{"name":"WrongCompressionInfo","abstract":"

Compression info was greater than 7 which is uncompatible number 8 compression method.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError11WrongFcheckFMS0_S0_":{"name":"WrongFcheck","abstract":"

First two bytes were inconsistent with each other.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError21WrongCompressionLevelFMS0_S0_":{"name":"WrongCompressionLevel","abstract":"

Compression level was other than 0, 1, 2, 3.

","parent_name":"ZlibError"},"Enums/ZlibError.html#/s:FO13SWCompression9ZlibError12WrongAdler32FMS0_FV10Foundation4DataS0_":{"name":"WrongAdler32","abstract":"

Computed Adler-32 sum of uncompressed data didn’t match the value stored in the archive.","parent_name":"ZlibError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Properties byte was greater than 225.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError21RangeDecoderInitErrorFMS0_S0_":{"name":"RangeDecoderInitError","abstract":"

Unable to initialize RanderDecorer.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError24ExceededUncompressedSizeFMS0_S0_":{"name":"ExceededUncompressedSize","abstract":"

The number of uncompressed bytes hit limit in the middle of decoding.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError13WindowIsEmptyFMS0_S0_":{"name":"WindowIsEmpty","abstract":"

Unable to perfrom repeat-distance decoding because there is nothing to repeat.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError23RangeDecoderFinishErrorFMS0_S0_":{"name":"RangeDecoderFinishError","abstract":"

End of stream marker is reached, but range decoder is in incorrect state.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError16RepeatWillExceedFMS0_S0_":{"name":"RepeatWillExceed","abstract":"

The number of bytes to repeat is greater than the amount bytes that is left to decode.

","parent_name":"LZMAError"},"Enums/LZMAError.html#/s:FO13SWCompression9LZMAError17NotEnoughToRepeatFMS0_S0_":{"name":"NotEnoughToRepeat","abstract":"

The amount of already decoded bytes is smaller than repeat length.

","parent_name":"LZMAError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError27NotFoundCentralDirectoryEndFMS0_S0_":{"name":"NotFoundCentralDirectoryEnd","abstract":"

End of Central Directoty record was not found.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14WrongSignatureFMS0_S0_":{"name":"WrongSignature","abstract":"

Wrong signature of one of ZIP container’s structures.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError9WrongSizeFMS0_S0_":{"name":"WrongSize","abstract":"

Wrong either compressed or uncompressed size of a ZIP container’s entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError12WrongVersionFMS0_S0_":{"name":"WrongVersion","abstract":"

Wrong number of version needed to extract ZIP container.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError24MultiVolumesNotSupportedFMS0_S0_":{"name":"MultiVolumesNotSupported","abstract":"

Archive either spanned or consists of several volumes. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError22EncryptionNotSupportedFMS0_S0_":{"name":"EncryptionNotSupported","abstract":"

Entry or record is encrypted. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError20PatchingNotSupportedFMS0_S0_":{"name":"PatchingNotSupported","abstract":"

Entry contains patched data. This feature is not supported.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError23CompressionNotSupportedFMS0_S0_":{"name":"CompressionNotSupported","abstract":"

Wrong compression method of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError16WrongLocalHeaderFMS0_S0_":{"name":"WrongLocalHeader","abstract":"

Wrong local header of an entry.

","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError10WrongCRC32FMS0_S0_":{"name":"WrongCRC32","abstract":"

Wrong computed CRC32 of an entry.

","parent_name":"ZipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongMagicFMS0_S0_":{"name":"WrongMagic","abstract":"

First two bytes of archive were not 31 and 139.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError22WrongCompressionMethodFMS0_S0_":{"name":"WrongCompressionMethod","abstract":"

Compression method was other than 8 which is the only supported one.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongFlagsFMS0_S0_":{"name":"WrongFlags","abstract":"

Reserved flags bits were not equal to 0.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError14WrongHeaderCRCFMS0_S0_":{"name":"WrongHeaderCRC","abstract":"

Computed CRC of header didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError8WrongCRCFMS0_FV10Foundation4DataS0_":{"name":"WrongCRC","abstract":"

Computed CRC of uncompressed data didn’t match the value stored in the archive.","parent_name":"GzipError"},"Enums/GzipError.html#/s:FO13SWCompression9GzipError10WrongISizeFMS0_S0_":{"name":"WrongISize","abstract":"

Computed isize didn’t match the value stored in the archive.

","parent_name":"GzipError"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error15WrongPropertiesFMS0_S0_":{"name":"WrongProperties","abstract":"

Reserved bits of LZMA2 properties byte were not equal to zero.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error19WrongDictionarySizeFMS0_S0_":{"name":"WrongDictionarySize","abstract":"

Dictionary size was too big.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error16WrongControlByteFMS0_S0_":{"name":"WrongControlByte","abstract":"

Unknown conrol byte value of LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongResetFMS0_S0_":{"name":"WrongReset","abstract":"

Unknown reset instruction encounetered in LZMA2 packet.

","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html#/s:FO13SWCompression10LZMA2Error10WrongSizesFMS0_S0_":{"name":"WrongSizes","abstract":"

Either size of decompressed data was not equal to specified one in LZMA2 packet or","parent_name":"LZMA2Error"},"Enums/LZMA2Error.html":{"name":"LZMA2Error","abstract":"

Error happened during LZMA2 decompression."},"Enums/GzipError.html":{"name":"GzipError","abstract":"

Error happened during unarchiving gzip archive."},"Enums/ZipError.html":{"name":"ZipError","abstract":"

Error happened during processing ZIP archive (container)."},"Enums/LZMAError.html":{"name":"LZMAError","abstract":"

Error happened during LZMA decompression."},"Enums/ZlibError.html":{"name":"ZlibError","abstract":"

Error happened during unarchiving Zlib archive."},"Enums/DeflateError.html":{"name":"DeflateError","abstract":"

Error happened during deflate decompression."},"Enums/BZip2Error.html":{"name":"BZip2Error","abstract":"

Error happened during bzip2 decompression."},"Enums/XZError.html":{"name":"XZError","abstract":"

Error happened during unarchiving XZ archive."},"Classes/XZArchive.html#/s:ZFC13SWCompression9XZArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives xz archive stored in archiveData.

","parent_name":"XZArchive"},"Classes/BZip2.html#/s:ZFC13SWCompression5BZip210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with BZip2 algortihm.

","parent_name":"BZip2"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/Deflate.html#/s:ZFC13SWCompression7Deflate8compressFzT4dataV10Foundation4Data_S2_":{"name":"compress(data:)","abstract":"

Compresses data with DEFLATE algortihm.

","parent_name":"Deflate"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives Zlib archive stored in archiveData.

","parent_name":"ZlibArchive"},"Classes/ZlibArchive.html#/s:ZFC13SWCompression11ZlibArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into Zlib archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"ZlibArchive"},"Classes/LZMA.html#/s:ZFC13SWCompression4LZMA10decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA algortihm.

","parent_name":"LZMA"},"Classes/ZipContainer.html#/s:vC13SWCompression12ZipContainer7entriesGSaVS_8ZipEntry_":{"name":"entries","abstract":"

All file and directory entries found in ZIP archive (in its Central Directory).

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainercFzT13containerDataV10Foundation4Data_S0_":{"name":"init(containerData:)","abstract":"

Tries to open ZIP archive and parse its Central Directory.","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:FC13SWCompression12ZipContainer4dataFzT3forVS_8ZipEntry_V10Foundation4Data":{"name":"data(for:)","abstract":"

Returns data associated with provided ZipEntry.

","parent_name":"ZipContainer"},"Classes/ZipContainer.html#/s:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaT9entryNameSS9entryDataS2___":{"name":"open(containerData:)","abstract":"

Processes ZIP archive (container) and returns an array of tuples (String, Data).","parent_name":"ZipContainer"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive9unarchiveFzT11archiveDataV10Foundation4Data_S2_":{"name":"unarchive(archiveData:)","abstract":"

Unarchives gzip archive stored in archiveData.

","parent_name":"GzipArchive"},"Classes/GzipArchive.html#/s:ZFC13SWCompression11GzipArchive7archiveFzT4dataV10Foundation4Data_S2_":{"name":"archive(data:)","abstract":"

Archives data into GZip archive. Data will be also compressed with DEFLTATE algorithm.","parent_name":"GzipArchive"},"Classes/LZMA2.html#/s:ZFC13SWCompression5LZMA210decompressFzT14compressedDataV10Foundation4Data_S2_":{"name":"decompress(compressedData:)","abstract":"

Decompresses compressedData with LZMA2 algortihm. LZMA2 is a modification of LZMA.

","parent_name":"LZMA2"},"Classes/LZMA2.html":{"name":"LZMA2","abstract":"

Provides function to decompress data, which were compressed with LZMA2

"},"Classes/GzipArchive.html":{"name":"GzipArchive","abstract":"

Provides unarchive function for GZip archives.

"},"Classes/ZipContainer.html":{"name":"ZipContainer","abstract":"

Provides function to open ZIP archives (containers).

"},"Classes/LZMA.html":{"name":"LZMA","abstract":"

Provides function to decompress data, which were compressed with LZMA

"},"Classes/ZlibArchive.html":{"name":"ZlibArchive","abstract":"

Provides unarchive function for Zlib archives.

"},"Classes/Deflate.html":{"name":"Deflate","abstract":"

Provides function to decompress data, which were compressed with DEFLATE.

"},"Classes/BZip2.html":{"name":"BZip2","abstract":"

Provides function to decompress data, which were compressed using BZip2.

"},"Classes/XZArchive.html":{"name":"XZArchive","abstract":"

Provides unarchive function for XZ archives.

"},"Classes.html":{"name":"Classes","abstract":"

The following classes are available globally.

"},"Enums.html":{"name":"Enums","abstract":"

The following enums are available globally.

"},"Protocols.html":{"name":"Protocols","abstract":"

The following protocols are available globally.

"},"Structs.html":{"name":"Structs","abstract":"

The following structs are available globally.

"}} \ No newline at end of file