From c14a36ca31d5f541bd70a0e072175c42cb289234 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 21 May 2017 20:29:56 +0300 Subject: [PATCH] Preparation for 3.0.0-test2. --- .jazzy.yaml | 4 +- CHANGELOG.md | 12 + SWCompression.podspec | 7 +- docs/Classes.html | 145 +++- docs/Classes/BZip2.html | 32 +- docs/Classes/Deflate.html | 34 +- docs/Classes/GzipArchive.html | 36 +- docs/Classes/LZMA.html | 32 +- docs/Classes/LZMA2.html | 32 +- docs/Classes/TarContainer.html | 231 ++++++ docs/Classes/TarEntry.html | 718 ++++++++++++++++++ docs/Classes/TarEntry/EntryType.html | 477 ++++++++++++ docs/Classes/XZArchive.html | 34 +- docs/Classes/ZipContainer.html | 224 +----- docs/Classes/ZipEntry.html | 395 ++++++++++ docs/Classes/ZlibArchive.html | 36 +- docs/Enums.html | 195 +++-- docs/Enums/BZip2Error.html | 172 +++-- docs/Enums/DeflateError.html | 76 +- docs/Enums/GzipError.html | 100 ++- docs/Enums/LZMA2Error.html | 88 ++- docs/Enums/LZMAError.html | 112 +-- docs/Enums/TarError.html | 372 +++++++++ docs/Enums/XZError.html | 148 ++-- docs/Enums/ZipError.html | 185 +++-- docs/Enums/ZlibError.html | 86 ++- docs/Protocols.html | 78 +- docs/Protocols/Archive.html | 30 +- docs/Protocols/Container.html | 217 ++++++ .../ContainerEntry.html} | 122 +-- docs/Protocols/DecompressionAlgorithm.html | 30 +- docs/Structs.html | 67 +- docs/Structs/GzipHeader.html | 64 +- .../Structs/GzipHeader/CompressionMethod.html | 30 +- docs/Structs/GzipHeader/FileSystemType.html | 38 +- docs/Structs/ZlibHeader.html | 41 +- docs/Structs/ZlibHeader/CompressionLevel.html | 36 +- .../Structs/ZlibHeader/CompressionMethod.html | 30 +- docs/badge.svg | 2 +- .../Contents/Resources/Documents/Classes.html | 145 +++- .../Resources/Documents/Classes/BZip2.html | 32 +- .../Resources/Documents/Classes/Deflate.html | 34 +- .../Documents/Classes/GzipArchive.html | 36 +- .../Resources/Documents/Classes/LZMA.html | 32 +- .../Resources/Documents/Classes/LZMA2.html | 32 +- .../Documents/Classes/TarContainer.html | 231 ++++++ .../Resources/Documents/Classes/TarEntry.html | 718 ++++++++++++++++++ .../Documents/Classes/TarEntry/EntryType.html | 477 ++++++++++++ .../Documents/Classes/XZArchive.html | 34 +- .../Documents/Classes/ZipContainer.html | 224 +----- .../Resources/Documents/Classes/ZipEntry.html | 395 ++++++++++ .../Documents/Classes/ZlibArchive.html | 36 +- .../Contents/Resources/Documents/Enums.html | 195 +++-- .../Resources/Documents/Enums/BZip2Error.html | 172 +++-- .../Documents/Enums/DeflateError.html | 76 +- .../Resources/Documents/Enums/GzipError.html | 100 ++- .../Resources/Documents/Enums/LZMA2Error.html | 88 ++- .../Resources/Documents/Enums/LZMAError.html | 112 +-- .../Resources/Documents/Enums/TarError.html | 372 +++++++++ .../Resources/Documents/Enums/XZError.html | 148 ++-- .../Resources/Documents/Enums/ZipError.html | 185 +++-- .../Resources/Documents/Enums/ZlibError.html | 86 ++- .../Resources/Documents/Protocols.html | 78 +- .../Documents/Protocols/Archive.html | 30 +- .../Documents/Protocols/Container.html | 217 ++++++ .../ContainerEntry.html} | 122 +-- .../Protocols/DecompressionAlgorithm.html | 30 +- .../Contents/Resources/Documents/Structs.html | 67 +- .../Documents/Structs/GzipHeader.html | 64 +- .../Structs/GzipHeader/CompressionMethod.html | 30 +- .../Structs/GzipHeader/FileSystemType.html | 38 +- .../Documents/Structs/ZlibHeader.html | 41 +- .../Structs/ZlibHeader/CompressionLevel.html | 36 +- .../Structs/ZlibHeader/CompressionMethod.html | 30 +- .../Contents/Resources/Documents/index.html | 40 +- .../Contents/Resources/Documents/search.json | 2 +- .../Contents/Resources/docSet.dsidx | Bin 45056 -> 57344 bytes docs/docsets/SWCompression.tgz | Bin 99272 -> 104350 bytes docs/index.html | 40 +- docs/search.json | 2 +- docs/undocumented.json | 288 ++++++- 81 files changed, 8056 insertions(+), 1827 deletions(-) create mode 100644 docs/Classes/TarContainer.html create mode 100644 docs/Classes/TarEntry.html create mode 100644 docs/Classes/TarEntry/EntryType.html create mode 100644 docs/Classes/ZipEntry.html create mode 100644 docs/Enums/TarError.html create mode 100644 docs/Protocols/Container.html rename docs/{Structs/ZipEntry.html => Protocols/ContainerEntry.html} (71%) create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html create mode 100644 docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html rename docs/docsets/SWCompression.docset/Contents/Resources/Documents/{Structs/ZipEntry.html => Protocols/ContainerEntry.html} (71%) diff --git a/.jazzy.yaml b/.jazzy.yaml index a37058ae..f48e98ac 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -3,9 +3,9 @@ clean: true exclude: Tests/ author: Timofey Solomko module: SWCompression -module_version: 2.4.2 +module_version: 3.0.0-test2 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.2 +github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v3.0.0-test2 theme: fullwidth diff --git a/CHANGELOG.md b/CHANGELOG.md index ca4e3787..d621c8e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,18 @@ # Changelog v3.0.0 ---------------- +#### test2 +- Added support for TAR containers. + - Various standards are supported (pre-POSIX, POSIX-1988, pax). + - Added subspec for TAR features. +- Added Container protocol. + - Reworked ZipContainer to conform to new protocol. +- All Errors cases renamed to conform Swift naming convetions (lowerCamelCase). +- Removed LZMAOutWindow. +- Test results combined into single document. +- Reduced tests sizes. +- Included 2.4.1 and 2.4.2 changes. + #### test1 - BZip2 decompression now checks CRC32. - GZipHeader.modificationTime is now Optional. diff --git a/SWCompression.podspec b/SWCompression.podspec index 316a813b..707a68c2 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" - s.version = "3.0.0-test1" + s.version = "3.0.0-test2" s.summary = "Framework with implementations in Swift of different (de)compression algorithms" s.description = <<-DESC @@ -74,4 +74,9 @@ Pod::Spec.new do |s| sp.pod_target_xcconfig = { 'OTHER_SWIFT_FLAGS' => '-DSWCOMP_ZIP_POD_BUILD' } end + s.subspec 'TAR' do |sp| + sp.dependency 'SWCompression/Common' + sp.source_files = 'Sources/TarContainer.swift' + end + end diff --git a/docs/Classes.html b/docs/Classes.html index a23bc05d..7fa3b6d8 100644 --- a/docs/Classes.html +++ b/docs/Classes.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -67,12 +67,24 @@

+ + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,7 +204,7 @@
- Show on GitHub + Show on GitHub
@@ -221,7 +239,7 @@
- Show on GitHub + Show on GitHub
@@ -230,6 +248,37 @@
@@ -291,7 +340,7 @@ @@ -326,7 +375,7 @@ @@ -361,7 +410,7 @@ @@ -396,7 +445,73 @@ + + + + + +
+
    +
  • +
    + + + + TarEntry + +
    +
    +
    +
    +
    +
    +

    Represents either a file or directory entry inside TAR archive.

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class TarEntry: ContainerEntry
    + +
    +
    + +
    +
    +
  • +
  • +
    + + + + TarContainer + +
    +
    +
    +
    +
    +
    +

    Provides function which opens TAR archives (containers).

    + + See more +
    +
    +

    Declaration

    +
    +

    Swift

    +
    public class TarContainer: Container
    + +
    +
    +
    @@ -431,7 +546,7 @@
@@ -445,7 +560,7 @@ diff --git a/docs/Classes/BZip2.html b/docs/Classes/BZip2.html index 67a9d601..391621e7 100644 --- a/docs/Classes/BZip2.html +++ b/docs/Classes/BZip2.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with BZip2.

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

Return Value

Decompressed data.

-
@@ -239,7 +255,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 dbb7637a..48b672aa 100644 --- a/docs/Classes/Deflate.html +++ b/docs/Classes/Deflate.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with DEFLATE.

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

Return Value

Decompressed data.

-
@@ -265,7 +281,7 @@ static Huffman is used in all other cases. @@ -279,7 +295,7 @@ static Huffman is used in all other cases. diff --git a/docs/Classes/GzipArchive.html b/docs/Classes/GzipArchive.html index 789b7b12..dd78db7f 100644 --- a/docs/Classes/GzipArchive.html +++ b/docs/Classes/GzipArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -219,7 +237,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with gzip.

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

Return Value

Unarchived data.

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

Data to compress and archive.

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

Return Value

Data object with resulting archive.

- @@ -316,7 +330,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 da30ab7b..7810dc32 100644 --- a/docs/Classes/LZMA.html +++ b/docs/Classes/LZMA.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA.

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

Return Value

Decompressed data.

-
@@ -239,7 +255,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 01f74f7d..644475ed 100644 --- a/docs/Classes/LZMA2.html +++ b/docs/Classes/LZMA2.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

Data compressed with LZMA2.

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

Return Value

Decompressed data.

-
@@ -239,7 +255,7 @@ It may indicate that either the data is damaged or it might not be compressed wi diff --git a/docs/Classes/TarContainer.html b/docs/Classes/TarContainer.html new file mode 100644 index 00000000..bbf3179b --- /dev/null +++ b/docs/Classes/TarContainer.html @@ -0,0 +1,231 @@ + + + + TarContainer Class Reference + + + + + + + + + + + + + + + + +
+

+ + SWCompression Docs + + (75% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TarContainer

+
+
+
public class TarContainer: Container
+ +
+
+

Provides function which opens TAR archives (containers).

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Classes/TarEntry.html b/docs/Classes/TarEntry.html new file mode 100644 index 00000000..89fdeeba --- /dev/null +++ b/docs/Classes/TarEntry.html @@ -0,0 +1,718 @@ + + + + TarEntry Class Reference + + + + + + + + + + + + + + + + +
+

+ + SWCompression Docs + + (75% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

TarEntry

+
+
+
public class TarEntry: ContainerEntry
+ +
+
+

Represents either a file or directory entry inside TAR archive.

+ +
+
+ +
+
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Classes/TarEntry/EntryType.html b/docs/Classes/TarEntry/EntryType.html new file mode 100644 index 00000000..5a40df63 --- /dev/null +++ b/docs/Classes/TarEntry/EntryType.html @@ -0,0 +1,477 @@ + + + + EntryType Enum Reference + + + + + + + + + + + + + + + + +
+

+ + SWCompression Docs + + (75% documented) +

+ +

+

+ +
+

+ +

+ + + View on GitHub + +

+ +
+ + + +
+ +
+ +
+
+

EntryType

+

Undocumented

+ +
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+ + + + diff --git a/docs/Classes/XZArchive.html b/docs/Classes/XZArchive.html index 3515e5fb..34de8365 100644 --- a/docs/Classes/XZArchive.html +++ b/docs/Classes/XZArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -183,7 +201,7 @@

Unarchives xz archive stored in archiveData.

If data passed is not actually a xz archive, XZError will be thrown. -If filters other than LZMA2 are used in archive then XZError.WrongFilterID will be thrown.

+If filters other than LZMA2 are used in archive then XZError.wrongFilterID will be thrown.

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

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

Data compressed with xz.

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

Return Value

Unarchived data.

-
@@ -243,7 +259,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 22fe4dce..cd31f8ff 100644 --- a/docs/Classes/ZipContainer.html +++ b/docs/Classes/ZipContainer.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

@@ -68,12 +68,24 @@

+ + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -154,11 +172,11 @@

ZipContainer

-
public class ZipContainer
+
public class ZipContainer: Container
-

Provides function to open ZIP archives (containers).

+

Provides function which opens ZIP archives (containers).

@@ -170,177 +188,9 @@
  • - - - entries - -
    -
    -
    -
    -
    -
    -

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

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var entries: [ZipEntry]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(containerData:) - -
    -
    -
    -
    -
    -
    -

    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. -It is likely that directories will be encountered earlier than files stored in those directories, -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. -One can check this by looking at the size of entry’s data (it should be 0 for directory) AND -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. -It may indicate that either the container is damaged or it might not be ZIP container or compressed with Deflate at all.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(containerData data: Data) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - containerData - - -
    -

    Data of ZIP container.

    - -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - data(for:) - -
    -
    -
    -
    -
    -
    -

    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. -An error can indicate that the container is damaged.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func data(for zipEntry: ZipEntry) throws -> Data
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - zipEntry - - -
    -

    file or directory entry from current container.

    - -
    -
    -
    - -
    -
    -
  • -
  • -
    - - + - open(containerData:) + open(containerData:)
    @@ -348,7 +198,7 @@ An error can indicate that the container is damaged.

    -

    Processes ZIP archive (container) and returns an array of tuples (String, Data). +

    Processes ZIP archive (container) and returns an array of ContainerEntries (which are actually ZipEntries). First member of a tuple is entry’s name, second member is entry’s data.

    Important

    @@ -363,16 +213,12 @@ but one SHOULD NOT assume that this is the case.

    One can check this by looking at the size of entry’s data (it should be 0 for directory) AND 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. -It may indicate that either the container is damaged or it might not be ZIP container or compressed with Deflate at all.

    +

    ZipError or any other error associated with compression type, +depending on the type of inconsistency in data. +It may indicate that either the container is damaged or it might not be ZIP container at all.

    @@ -381,7 +227,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont

    Declaration

    Swift

    -
    public static func open(containerData data: Data) throws -> [(entryName: String, entryData: Data)]
    +
    public static func open(containerData: Data) throws -> [ContainerEntry]
    @@ -398,7 +244,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

    Data of ZIP container.

    -
    @@ -407,11 +252,10 @@ 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.

    - +

    Array of pairs ZipEntries as an array of ContainerEntries.

    @@ -425,7 +269,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont diff --git a/docs/Classes/ZipEntry.html b/docs/Classes/ZipEntry.html new file mode 100644 index 00000000..a0976478 --- /dev/null +++ b/docs/Classes/ZipEntry.html @@ -0,0 +1,395 @@ + + + + ZipEntry Class Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    ZipEntry

    +
    +
    +
    public class ZipEntry: ContainerEntry
    + +
    +
    +

    Represents either a file or directory entry inside ZIP archive.

    + +
    +
    + +
    +
    +
    +
      +
    • +
      + + + + name + +
      +
      +
      +
      +
      +
      +

      Name of the file or directory.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var name: String
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + comment + +
      +
      +
      +
      +
      +
      +

      Comment associated with the entry.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var comment: String?
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + attributes + +
      +
      +
      +
      +
      +
      +

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

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var attributes: UInt32
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + size + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public class ZipEntry: ContainerEntry
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + isDirectory + +
      +
      +
      +
      +
      +
      +

      True, if an entry is likely to be a directory. +Particularly, it is true if size of data is 0 and last character of entry’s name is ‘/’.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var isDirectory: Bool
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + data() + +
      +
      +
      +
      +
      +
      +

      Returns data associated with this entry.

      +
      +

      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 any other error associated with compression type, +depending on the type of inconsistency in data. +An error can indicate that the container is damaged.

      + +
      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func data() throws -> Data
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + + diff --git a/docs/Classes/ZlibArchive.html b/docs/Classes/ZlibArchive.html index 31976524..c703621d 100644 --- a/docs/Classes/ZlibArchive.html +++ b/docs/Classes/ZlibArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -219,7 +237,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with zlib.

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

    Return Value

    Unarchived data.

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

    Data to compress and archive.

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

    Return Value

    Data object with resulting archive.

    -
    @@ -314,7 +328,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 8197c768..6766e027 100644 --- a/docs/Enums.html +++ b/docs/Enums.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -177,11 +195,11 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA2 at all.

    See more @@ -195,7 +213,7 @@ It may indicate that either the data is damaged or it might not be compressed wi @@ -221,14 +239,14 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be gzip archive at all.

    See more @@ -242,7 +260,7 @@ Associated value contains already decompressed data. @@ -268,17 +286,17 @@ Associated value contains already decompressed data. It may indicate that either the data is damaged or it might not be ZIP archive (container) at all.

    See more @@ -292,7 +310,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( @@ -318,15 +336,15 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( It may indicate that either the data is damaged or it might not be compressed with LZMA at all.

    @@ -341,7 +359,7 @@ than the repeat length. @@ -367,10 +385,10 @@ than the repeat length. It may indicate that either the data is damaged or it might not be Zlib archive at all.

    @@ -386,7 +404,7 @@ Associated value contains already decompressed data. @@ -412,10 +430,10 @@ Associated value contains already decompressed data. It may indicate that either the data is damaged or it might not be compressed with DEFLATE at all.

    See more @@ -429,7 +447,7 @@ It may indicate that either the data is damaged or it might not be compressed wi @@ -455,15 +473,16 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be compressed with BZip2 at all.

    See more @@ -477,7 +496,47 @@ It may indicate that either the data is damaged or it might not be compressed wi + + + + + +
    +
      +
    • +
      + + + + TarError + +
      +
      +
      +
      +
      +
      +

      Error happened during processing TAR archive (container). +It may indicate that either the data is damaged or it might not be TAR archive (container) at all.

      + +
        +
      • error: error description.
      • +
      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      +
      @@ -503,18 +562,18 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be XZ archive at all.

        -
      • WrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
      • -
      • WrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
      • -
      • FieldReservedValue: value of one of archive’s special field +
      • wrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
      • +
      • wrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
      • +
      • fieldReservedValue: value of one of archive’s special field (in block, index, header or footer) had reserved value.
      • -
      • WrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
      • -
      • WrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
      • -
      • CheckTypeSHA256: checksum’s type was SHA-256.
      • -
      • WrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
      • -
      • WrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. +
      • wrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
      • +
      • wrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
      • +
      • checkTypeSHA256: checksum’s type was SHA-256.
      • +
      • wrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
      • +
      • wrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
      • -
      • WrongPadding: unsupported padding of one of structures in the archive.
      • -
      • MultiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
      • +
      • wrongPadding: unsupported padding of one of structures in the archive.
      • +
      • multiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
      See more @@ -528,7 +587,7 @@ Associated value contains already decompressed data.
    @@ -542,7 +601,7 @@ Associated value contains already decompressed data. diff --git a/docs/Enums/BZip2Error.html b/docs/Enums/BZip2Error.html index 66c7c342..319fa64d 100644 --- a/docs/Enums/BZip2Error.html +++ b/docs/Enums/BZip2Error.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,15 +180,16 @@ It may indicate that either the data is damaged or it might not be compressed with BZip2 at all.

    @@ -183,9 +202,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongMagic + + + wrongMagic
    @@ -200,12 +219,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -217,9 +236,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongCompressionMethod + + + wrongCompressionMethod
    @@ -234,12 +253,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -251,9 +270,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongBlockSize + + + wrongBlockSize
    @@ -268,12 +287,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockSize
    +
    case wrongBlockSize
    @@ -285,9 +304,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongBlockType + + + wrongBlockType
    @@ -302,12 +321,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockType
    +
    case wrongBlockType
    @@ -319,9 +338,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - RandomizedBlock + + + randomizedBlock
    @@ -336,12 +355,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case RandomizedBlock
    +
    case randomizedBlock
    @@ -353,9 +372,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongHuffmanGroups + + + wrongHuffmanGroups
    @@ -370,12 +389,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongHuffmanGroups
    +
    case wrongHuffmanGroups
    @@ -387,9 +406,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongSelector + + + wrongSelector
    @@ -404,12 +423,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongSelector
    +
    case wrongSelector
    @@ -421,9 +440,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongHuffmanLengthCode + + + wrongHuffmanLengthCode
    @@ -438,12 +457,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongHuffmanLengthCode
    +
    case wrongHuffmanLengthCode
    @@ -455,9 +474,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - SymbolNotFound + + + symbolNotFound
    @@ -472,12 +491,47 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case SymbolNotFound
    +
    case symbolNotFound
    + + +
  • + + +
    +
      +
    • +
      + + + + wrongCRC + +
      +
      +
      +
      +
      +
      +

      Computed CRC of uncompressed data didn’t match the value stored in the archive. +Associated value contains already decompressed data.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      case wrongCRC(Data)
      + +
      +
      +
      @@ -491,7 +545,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 61ac45e6..e7ebdcf9 100644 --- a/docs/Enums/DeflateError.html +++ b/docs/Enums/DeflateError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,10 +180,10 @@ It may indicate that either the data is damaged or it might not be compressed with DEFLATE at all.

    @@ -178,9 +196,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongUncompressedBlockLengths + + + wrongUncompressedBlockLengths
    @@ -195,12 +213,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongUncompressedBlockLengths
    +
    case wrongUncompressedBlockLengths
    @@ -212,9 +230,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongBlockType + + + wrongBlockType
    @@ -229,12 +247,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockType
    +
    case wrongBlockType
    @@ -246,9 +264,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongSymbol + + + wrongSymbol
    @@ -263,12 +281,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongSymbol
    +
    case wrongSymbol
    @@ -280,9 +298,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - SymbolNotFound + + + symbolNotFound
    @@ -297,12 +315,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case SymbolNotFound
    +
    case symbolNotFound
    @@ -316,7 +334,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 3ef9f7c0..54abc734 100644 --- a/docs/Enums/GzipError.html +++ b/docs/Enums/GzipError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,14 +180,14 @@ It may indicate that either the data is damaged or it might not be gzip archive at all.

    @@ -182,9 +200,9 @@ Associated value contains already decompressed data.
  • - - - WrongMagic + + + wrongMagic
    @@ -199,12 +217,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -216,9 +234,9 @@ Associated value contains already decompressed data.
  • - - - WrongCompressionMethod + + + wrongCompressionMethod
    @@ -233,12 +251,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -250,9 +268,9 @@ Associated value contains already decompressed data.
  • - - - WrongFlags + + + wrongFlags
    @@ -267,12 +285,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFlags
    +
    case wrongFlags
    @@ -284,9 +302,9 @@ Associated value contains already decompressed data.
  • - - - WrongHeaderCRC + + + wrongHeaderCRC
    @@ -301,12 +319,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongHeaderCRC
    +
    case wrongHeaderCRC
    @@ -318,9 +336,9 @@ Associated value contains already decompressed data.
  • - - - WrongCRC + + + wrongCRC
    @@ -336,12 +354,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongCRC(Data)
    +
    case wrongCRC(Data)
    @@ -353,9 +371,9 @@ Associated value contains already decompressed data.

  • - - - WrongISize + + + wrongISize
    @@ -370,12 +388,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongISize
    +
    case wrongISize
    @@ -389,7 +407,7 @@ Associated value contains already decompressed data.

    diff --git a/docs/Enums/LZMA2Error.html b/docs/Enums/LZMA2Error.html index 065a19f3..efead898 100644 --- a/docs/Enums/LZMA2Error.html +++ b/docs/Enums/LZMA2Error.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,11 +180,11 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA2 at all.

    @@ -179,9 +197,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongProperties + + + wrongProperties
    @@ -196,12 +214,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongProperties
    +
    case wrongProperties
    @@ -213,9 +231,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongDictionarySize + + + wrongDictionarySize
    @@ -230,12 +248,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongDictionarySize
    +
    case wrongDictionarySize
    @@ -247,9 +265,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongControlByte + + + wrongControlByte
    @@ -264,12 +282,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongControlByte
    +
    case wrongControlByte
    @@ -281,9 +299,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongReset + + + wrongReset
    @@ -298,12 +316,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongReset
    +
    case wrongReset
    @@ -315,9 +333,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongSizes + + + wrongSizes
    @@ -333,12 +351,12 @@ amount of compressed data read was different from the one stored in LZMA2 packet

    Declaration

    Swift

    -
    case WrongSizes
    +
    case wrongSizes
    @@ -352,7 +370,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 98354d8c..3aed164a 100644 --- a/docs/Enums/LZMAError.html +++ b/docs/Enums/LZMAError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,15 +180,15 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA at all.

    @@ -184,9 +202,9 @@ than the repeat length.
  • - - - WrongProperties + + + wrongProperties
    @@ -201,12 +219,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case WrongProperties
    +
    case wrongProperties
    @@ -218,9 +236,9 @@ than the repeat length.
  • - - - RangeDecoderInitError + + + rangeDecoderInitError
    @@ -235,12 +253,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RangeDecoderInitError
    +
    case rangeDecoderInitError
    @@ -252,9 +270,9 @@ than the repeat length.
  • - - - ExceededUncompressedSize + + + exceededUncompressedSize
    @@ -269,12 +287,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case ExceededUncompressedSize
    +
    case exceededUncompressedSize
    @@ -286,9 +304,9 @@ than the repeat length.
  • - - - WindowIsEmpty + + + windowIsEmpty
    @@ -303,12 +321,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case WindowIsEmpty
    +
    case windowIsEmpty
    @@ -320,9 +338,9 @@ than the repeat length.
  • - - - RangeDecoderFinishError + + + rangeDecoderFinishError
    @@ -337,12 +355,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RangeDecoderFinishError
    +
    case rangeDecoderFinishError
    @@ -354,9 +372,9 @@ than the repeat length.
  • - - - RepeatWillExceed + + + repeatWillExceed
    @@ -371,12 +389,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RepeatWillExceed
    +
    case repeatWillExceed
    @@ -388,9 +406,9 @@ than the repeat length.
  • - - - NotEnoughToRepeat + + + notEnoughToRepeat
    @@ -405,12 +423,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case NotEnoughToRepeat
    +
    case notEnoughToRepeat
    @@ -424,7 +442,7 @@ than the repeat length. diff --git a/docs/Enums/TarError.html b/docs/Enums/TarError.html new file mode 100644 index 00000000..ed839fb6 --- /dev/null +++ b/docs/Enums/TarError.html @@ -0,0 +1,372 @@ + + + + TarError Enum Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    TarError

    +
    +
    +
    public enum TarError: Error
    + +
    +
    +

    Error happened during processing TAR archive (container). +It may indicate that either the data is damaged or it might not be TAR archive (container) at all.

    + +
      +
    • error: error description.
    • +
    + +
    +
    + +
    +
    +
    + +
    +
    +
      +
    • +
      + + + + fieldIsNotNumber + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      + +
      +
      +
    • +
    +
    +
    + +
    +
    +
      +
    • +
      + + + + wrongUstarVersion + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      + +
      +
      +
    • +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + diff --git a/docs/Enums/XZError.html b/docs/Enums/XZError.html index 93be1260..13fff32d 100644 --- a/docs/Enums/XZError.html +++ b/docs/Enums/XZError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,18 +180,18 @@ It may indicate that either the data is damaged or it might not be XZ archive at all.

    @@ -186,9 +204,9 @@ Associated value contains already decompressed data.
  • - - - WrongMagic + + + wrongMagic
    @@ -203,12 +221,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -220,9 +238,9 @@ Associated value contains already decompressed data.
  • - - - WrongArchiveInfo + + + wrongArchiveInfo
    @@ -237,12 +255,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongArchiveInfo
    +
    case wrongArchiveInfo
    @@ -254,9 +272,9 @@ Associated value contains already decompressed data.
  • - - - FieldReservedValue + + + fieldReservedValue
    @@ -271,12 +289,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case FieldReservedValue
    +
    case fieldReservedValue
    @@ -288,9 +306,9 @@ Associated value contains already decompressed data.
  • - - - WrongInfoCRC + + + wrongInfoCRC
    @@ -305,12 +323,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongInfoCRC
    +
    case wrongInfoCRC
    @@ -322,9 +340,9 @@ Associated value contains already decompressed data.
  • - - - WrongFilterID + + + wrongFilterID
    @@ -339,12 +357,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFilterID
    +
    case wrongFilterID
    @@ -356,9 +374,9 @@ Associated value contains already decompressed data.
  • - - - CheckTypeSHA256 + + + checkTypeSHA256
    @@ -373,12 +391,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case CheckTypeSHA256
    +
    case checkTypeSHA256
    @@ -390,9 +408,9 @@ Associated value contains already decompressed data.
  • - - - WrongDataSize + + + wrongDataSize
    @@ -408,12 +426,12 @@ amount of compressed data read was different from the one stored in block header

    Declaration

    Swift

    -
    case WrongDataSize
    +
    case wrongDataSize
    @@ -425,9 +443,9 @@ amount of compressed data read was different from the one stored in block header
  • - - - WrongCheck + + + wrongCheck
    @@ -443,12 +461,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongCheck(Data)
    +
    case wrongCheck(Data)
    @@ -460,9 +478,9 @@ Associated value contains already decompressed data.

  • - - - WrongPadding + + + wrongPadding
    @@ -477,12 +495,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongPadding
    +
    case wrongPadding
    @@ -494,9 +512,9 @@ Associated value contains already decompressed data.

  • - - - MultiByteIntegerError + + + multiByteIntegerError
    @@ -511,12 +529,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case MultiByteIntegerError
    +
    case multiByteIntegerError
    @@ -530,7 +548,7 @@ Associated value contains already decompressed data.

    diff --git a/docs/Enums/ZipError.html b/docs/Enums/ZipError.html index 40111133..047dfc95 100644 --- a/docs/Enums/ZipError.html +++ b/docs/Enums/ZipError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,17 +180,17 @@ It may indicate that either the data is damaged or it might not be ZIP archive (container) at all.

    @@ -185,9 +203,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - NotFoundCentralDirectoryEnd + + + notFoundCentralDirectoryEnd
    @@ -202,12 +220,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case NotFoundCentralDirectoryEnd
    +
    case notFoundCentralDirectoryEnd
    @@ -219,9 +237,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongSignature + + + wrongSignature
    @@ -236,12 +254,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongSignature
    +
    case wrongSignature
    @@ -253,9 +271,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongSize + + + wrongSize
    @@ -270,12 +288,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongSize
    +
    case wrongSize
    @@ -287,9 +305,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongVersion + + + wrongVersion
    @@ -304,12 +322,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongVersion
    +
    case wrongVersion
    @@ -321,9 +339,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - MultiVolumesNotSupported + + + multiVolumesNotSupported
    @@ -338,12 +356,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case MultiVolumesNotSupported
    +
    case multiVolumesNotSupported
    @@ -355,9 +373,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - EncryptionNotSupported + + + encryptionNotSupported
    @@ -372,12 +390,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case EncryptionNotSupported
    +
    case encryptionNotSupported
    @@ -389,9 +407,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - PatchingNotSupported + + + patchingNotSupported
    @@ -406,12 +424,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case PatchingNotSupported
    +
    case patchingNotSupported
    @@ -423,9 +441,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - CompressionNotSupported + + + compressionNotSupported
    @@ -440,12 +458,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case CompressionNotSupported
    +
    case compressionNotSupported
    @@ -457,9 +475,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongLocalHeader + + + wrongLocalHeader
    @@ -474,12 +492,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongLocalHeader
    +
    case wrongLocalHeader
    @@ -491,9 +509,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongCRC32 + + + wrongCRC32
    @@ -501,19 +519,54 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
    -

    Wrong computed CRC32 of an entry.

    +

    Computed CRC32 of entry’s data didn’t match the value stored in the container. +Associated value contains extracted data.

    Declaration

    Swift

    -
    case WrongCRC32
    +
    case wrongCRC32(Data)
    +
    +
    +
  • + + +
    +
      +
    • +
      + + + + wrongTextField + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum ZipError: Error
      + +
      +
      +
      @@ -527,7 +580,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 75630825..665a6523 100644 --- a/docs/Enums/ZlibError.html +++ b/docs/Enums/ZlibError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,10 +180,10 @@ It may indicate that either the data is damaged or it might not be Zlib archive at all.

    @@ -180,9 +198,9 @@ Associated value contains already decompressed data.
  • - - - WrongCompressionMethod + + + wrongCompressionMethod
    @@ -197,12 +215,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -214,9 +232,9 @@ Associated value contains already decompressed data.
  • - - - WrongCompressionInfo + + + wrongCompressionInfo
    @@ -231,12 +249,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionInfo
    +
    case wrongCompressionInfo
    @@ -248,9 +266,9 @@ Associated value contains already decompressed data.
  • - - - WrongFcheck + + + wrongFcheck
    @@ -265,12 +283,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFcheck
    +
    case wrongFcheck
    @@ -282,9 +300,9 @@ Associated value contains already decompressed data.
  • - - - WrongCompressionLevel + + + wrongCompressionLevel
    @@ -299,12 +317,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionLevel
    +
    case wrongCompressionLevel
    @@ -316,9 +334,9 @@ Associated value contains already decompressed data.
  • - - - WrongAdler32 + + + wrongAdler32
    @@ -334,12 +352,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongAdler32(Data)
    +
    case wrongAdler32(Data)
    @@ -353,7 +371,7 @@ Associated value contains already decompressed data.

    diff --git a/docs/Protocols.html b/docs/Protocols.html index 6ffccfd9..6375a356 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

  • + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,7 +204,7 @@ @@ -217,7 +235,53 @@ + + + +
  • +
    + + + + Container + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    + +
    +
    +
  • +
  • +
    + + + + ContainerEntry + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    @@ -231,7 +295,7 @@ diff --git a/docs/Protocols/Archive.html b/docs/Protocols/Archive.html index 46110cdf..04d2e675 100644 --- a/docs/Protocols/Archive.html +++ b/docs/Protocols/Archive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/Protocols/Container.html b/docs/Protocols/Container.html new file mode 100644 index 00000000..51bedd79 --- /dev/null +++ b/docs/Protocols/Container.html @@ -0,0 +1,217 @@ + + + + Container Protocol Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + + +
    + + + + diff --git a/docs/Structs/ZipEntry.html b/docs/Protocols/ContainerEntry.html similarity index 71% rename from docs/Structs/ZipEntry.html rename to docs/Protocols/ContainerEntry.html index 6a4eb919..83d16939 100644 --- a/docs/Structs/ZipEntry.html +++ b/docs/Protocols/ContainerEntry.html @@ -1,7 +1,7 @@ - ZipEntry Struct Reference + ContainerEntry Protocol Reference @@ -14,16 +14,16 @@ - + - +

    SWCompression Docs - (100% documented) + (75% documented)

    @@ -44,7 +44,7 @@

    @@ -68,12 +68,24 @@ + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -151,14 +169,8 @@
    -

    ZipEntry

    -
    -
    -
    public struct ZipEntry
    - -
    -
    -

    Represents either a file or directory entry inside ZIP archive.

    +

    ContainerEntry

    +

    Undocumented

    @@ -170,9 +182,9 @@
  • - - - fileName + + + name
    @@ -180,19 +192,11 @@
    -

    Name of the file or directory.

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileName: String?
    - -
    -
    @@ -200,9 +204,9 @@
  • - - - fileComment + + + size
    @@ -210,19 +214,11 @@
    -

    Comment associated with the entry.

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileComment: String?
    - -
    -
    @@ -230,9 +226,9 @@
  • @@ -240,19 +236,33 @@
    -

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

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileAttributes: UInt32
    - -
    -
    +
    +
    +
  • +
  • +
    + + + + data() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    @@ -266,7 +276,7 @@
  • diff --git a/docs/Protocols/DecompressionAlgorithm.html b/docs/Protocols/DecompressionAlgorithm.html index 2f0fcecf..d9edaa85 100644 --- a/docs/Protocols/DecompressionAlgorithm.html +++ b/docs/Protocols/DecompressionAlgorithm.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/Structs.html b/docs/Structs.html index 9cdd6eaa..755e680d 100644 --- a/docs/Structs.html +++ b/docs/Structs.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,42 +204,7 @@ - - - - - -
    -
      -
    • -
      - - - - ZipEntry - -
      -
      -
      -
      -
      -
      -

      Represents either a file or directory entry inside ZIP archive.

      - - See more -
      -
      -

      Declaration

      -
      -

      Swift

      -
      public struct ZipEntry
      - -
      -
      -
      @@ -256,7 +239,7 @@
    @@ -270,7 +253,7 @@ diff --git a/docs/Structs/GzipHeader.html b/docs/Structs/GzipHeader.html index 35889f32..80379478 100644 --- a/docs/Structs/GzipHeader.html +++ b/docs/Structs/GzipHeader.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -193,7 +211,7 @@ @@ -224,7 +242,7 @@ @@ -254,28 +272,17 @@ - - -
    - -
    • @@ -283,19 +290,19 @@
      -

      The most recent modification time of the original file.

      +

      The most recent modification time of the original file. If set to 0 (default value == unset), then nil.

      Declaration

      Swift

      -
      public let modificationTime: Date
      +
      public let modificationTime: Date?
      @@ -325,7 +332,7 @@
    @@ -355,7 +362,7 @@ @@ -385,7 +392,7 @@ @@ -435,7 +442,6 @@ it might not be compressed with gzip at all.

    Data compressed with gzip.

    -
    @@ -443,7 +449,7 @@ it might not be compressed with gzip at all.

    @@ -457,7 +463,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 3016c2c0..a75c1923 100644 --- a/docs/Structs/GzipHeader/CompressionMethod.html +++ b/docs/Structs/GzipHeader/CompressionMethod.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/Structs/GzipHeader/FileSystemType.html b/docs/Structs/GzipHeader/FileSystemType.html index 5f731f1b..e8814fed 100644 --- a/docs/Structs/GzipHeader/FileSystemType.html +++ b/docs/Structs/GzipHeader/FileSystemType.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -226,7 +244,7 @@ @@ -260,7 +278,7 @@ @@ -294,7 +312,7 @@ @@ -328,7 +346,7 @@ @@ -342,7 +360,7 @@ diff --git a/docs/Structs/ZlibHeader.html b/docs/Structs/ZlibHeader.html index 27ae0edc..61a5bf3f 100644 --- a/docs/Structs/ZlibHeader.html +++ b/docs/Structs/ZlibHeader.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -193,7 +211,7 @@ @@ -224,7 +242,7 @@ @@ -254,7 +272,7 @@ @@ -284,7 +302,7 @@ @@ -314,7 +332,7 @@ @@ -364,7 +382,6 @@ it might not be compressed with zlib at all.

    Data compressed with zlib.

    -
    @@ -372,7 +389,7 @@ it might not be compressed with zlib at all.

    @@ -386,7 +403,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 8c6e8fbc..f0e28da0 100644 --- a/docs/Structs/ZlibHeader/CompressionLevel.html +++ b/docs/Structs/ZlibHeader/CompressionLevel.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -226,7 +244,7 @@ @@ -260,7 +278,7 @@ @@ -294,7 +312,7 @@ @@ -308,7 +326,7 @@ diff --git a/docs/Structs/ZlibHeader/CompressionMethod.html b/docs/Structs/ZlibHeader/CompressionMethod.html index 8a2bb3d7..c640d261 100644 --- a/docs/Structs/ZlibHeader/CompressionMethod.html +++ b/docs/Structs/ZlibHeader/CompressionMethod.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/badge.svg b/docs/badge.svg index 2606d804..0d836268 100644 --- a/docs/badge.svg +++ b/docs/badge.svg @@ -1 +1 @@ -documentationdocumentation100%100% \ No newline at end of file +documentationdocumentation75%75% \ No newline at end of file diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html index a23bc05d..7fa3b6d8 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,7 +204,7 @@ @@ -221,7 +239,7 @@ @@ -230,6 +248,37 @@
      +
    • +
      + + + + ZipEntry + +
      +
      +
      +
      +
      +
      +

      Represents either a file or directory entry inside ZIP archive.

      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public class ZipEntry: ContainerEntry
      + +
      +
      + +
      +
      +
    • @@ -243,7 +292,7 @@
      -

      Provides function to open ZIP archives (containers).

      +

      Provides function which opens ZIP archives (containers).

      See more
      @@ -251,12 +300,12 @@

      Declaration

      Swift

      -
      public class ZipContainer
      +
      public class ZipContainer: Container
    @@ -291,7 +340,7 @@ @@ -326,7 +375,7 @@ @@ -361,7 +410,7 @@ @@ -396,7 +445,73 @@ + + + + + +
    +
      +
    • +
      + + + + TarEntry + +
      +
      +
      +
      +
      +
      +

      Represents either a file or directory entry inside TAR archive.

      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public class TarEntry: ContainerEntry
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + TarContainer + +
      +
      +
      +
      +
      +
      +

      Provides function which opens TAR archives (containers).

      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public class TarContainer: Container
      + +
      +
      +
      @@ -431,7 +546,7 @@
    @@ -445,7 +560,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 67a9d601..391621e7 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with BZip2.

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

    Return Value

    Decompressed data.

    -
    @@ -239,7 +255,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 dbb7637a..48b672aa 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with DEFLATE.

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

    Return Value

    Decompressed data.

    -
    @@ -265,7 +281,7 @@ static Huffman is used in all other cases. @@ -279,7 +295,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 789b7b12..dd78db7f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -219,7 +237,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with gzip.

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

    Return Value

    Unarchived data.

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

    Data to compress and archive.

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

    Return Value

    Data object with resulting archive.

    - @@ -316,7 +330,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 da30ab7b..7810dc32 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with LZMA.

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

    Return Value

    Decompressed data.

    -
    @@ -239,7 +255,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 01f74f7d..644475ed 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -212,7 +230,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with LZMA2.

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

    Return Value

    Decompressed data.

    -
    @@ -239,7 +255,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/TarContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html new file mode 100644 index 00000000..bbf3179b --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html @@ -0,0 +1,231 @@ + + + + TarContainer Class Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    TarContainer

    +
    +
    +
    public class TarContainer: Container
    + +
    +
    +

    Provides function which opens TAR archives (containers).

    + +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html new file mode 100644 index 00000000..89fdeeba --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry.html @@ -0,0 +1,718 @@ + + + + TarEntry Class Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    TarEntry

    +
    +
    +
    public class TarEntry: ContainerEntry
    + +
    +
    +

    Represents either a file or directory entry inside TAR archive.

    + +
    +
    + +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html new file mode 100644 index 00000000..5a40df63 --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarEntry/EntryType.html @@ -0,0 +1,477 @@ + + + + EntryType Enum Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    EntryType

    +

    Undocumented

    + +
    +
    + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    + + + + 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 3515e5fb..34de8365 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -183,7 +201,7 @@

    Unarchives xz archive stored in archiveData.

    If data passed is not actually a xz archive, XZError will be thrown. -If filters other than LZMA2 are used in archive then XZError.WrongFilterID will be thrown.

    +If filters other than LZMA2 are used in archive then XZError.wrongFilterID will be thrown.

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

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

    Data compressed with xz.

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

    Return Value

    Unarchived data.

    -
    @@ -243,7 +259,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 22fe4dce..cd31f8ff 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -154,11 +172,11 @@

    ZipContainer

    -
    public class ZipContainer
    +
    public class ZipContainer: Container
    -

    Provides function to open ZIP archives (containers).

    +

    Provides function which opens ZIP archives (containers).

    @@ -170,177 +188,9 @@
  • - - - entries - -
    -
    -
    -
    -
    -
    -

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

    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public private(set) var entries: [ZipEntry]
    - -
    -
    - -
    -
    -
  • -
  • -
    - - - - init(containerData:) - -
    -
    -
    -
    -
    -
    -

    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. -It is likely that directories will be encountered earlier than files stored in those directories, -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. -One can check this by looking at the size of entry’s data (it should be 0 for directory) AND -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. -It may indicate that either the container is damaged or it might not be ZIP container or compressed with Deflate at all.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public init(containerData data: Data) throws
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - containerData - - -
    -

    Data of ZIP container.

    - -
    -
    -
    - -
    -
    -
  • -
  • -
    - - - - data(for:) - -
    -
    -
    -
    -
    -
    -

    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. -An error can indicate that the container is damaged.

    - -
    - -
    -
    -

    Declaration

    -
    -

    Swift

    -
    public func data(for zipEntry: ZipEntry) throws -> Data
    - -
    -
    -
    -

    Parameters

    - - - - - - - -
    - - zipEntry - - -
    -

    file or directory entry from current container.

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

    -

    Processes ZIP archive (container) and returns an array of tuples (String, Data). +

    Processes ZIP archive (container) and returns an array of ContainerEntries (which are actually ZipEntries). First member of a tuple is entry’s name, second member is entry’s data.

    Important

    @@ -363,16 +213,12 @@ but one SHOULD NOT assume that this is the case.

    One can check this by looking at the size of entry’s data (it should be 0 for directory) AND 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. -It may indicate that either the container is damaged or it might not be ZIP container or compressed with Deflate at all.

    +

    ZipError or any other error associated with compression type, +depending on the type of inconsistency in data. +It may indicate that either the container is damaged or it might not be ZIP container at all.

    @@ -381,7 +227,7 @@ It may indicate that either the container is damaged or it might not be ZIP cont

    Declaration

    Swift

    -
    public static func open(containerData data: Data) throws -> [(entryName: String, entryData: Data)]
    +
    public static func open(containerData: Data) throws -> [ContainerEntry]
    @@ -398,7 +244,6 @@ It may indicate that either the container is damaged or it might not be ZIP cont

    Data of ZIP container.

    -
    @@ -407,11 +252,10 @@ 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.

    - +

    Array of pairs ZipEntries as an array of ContainerEntries.

    @@ -425,7 +269,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/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html new file mode 100644 index 00000000..a0976478 --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipEntry.html @@ -0,0 +1,395 @@ + + + + ZipEntry Class Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    ZipEntry

    +
    +
    +
    public class ZipEntry: ContainerEntry
    + +
    +
    +

    Represents either a file or directory entry inside ZIP archive.

    + +
    +
    + +
    +
    +
    +
      +
    • +
      + + + + name + +
      +
      +
      +
      +
      +
      +

      Name of the file or directory.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var name: String
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + comment + +
      +
      +
      +
      +
      +
      +

      Comment associated with the entry.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var comment: String?
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + attributes + +
      +
      +
      +
      +
      +
      +

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

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var attributes: UInt32
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + size + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public class ZipEntry: ContainerEntry
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + isDirectory + +
      +
      +
      +
      +
      +
      +

      True, if an entry is likely to be a directory. +Particularly, it is true if size of data is 0 and last character of entry’s name is ‘/’.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public var isDirectory: Bool
      + +
      +
      + +
      +
      +
    • +
    • +
      + + + + data() + +
      +
      +
      +
      +
      +
      +

      Returns data associated with this entry.

      +
      +

      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 any other error associated with compression type, +depending on the type of inconsistency in data. +An error can indicate that the container is damaged.

      + +
      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public func data() throws -> Data
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + +
    +
    + + + + 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 31976524..c703621d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -219,7 +237,6 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Data compressed with zlib.

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

    Return Value

    Unarchived data.

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

    Data to compress and archive.

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

    Return Value

    Data object with resulting archive.

    -
    @@ -314,7 +328,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 8197c768..6766e027 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -177,11 +195,11 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA2 at all.

      -
    • WrongProperties: reserved bits of LZMA2 properties byte weren’t zero.
    • -
    • WrongDictionarySize: dictionary size was greater than 2^32.
    • -
    • WrongControlByte: unsupported value of LZMA2 packet’s control byte.
    • -
    • WrongReset: unsupported ‘reset’ value of LZMA2 packet’s.
    • -
    • WrongSizes: size of compressed or decompressed data wasn’t the same as specified in LZMA2 packet.
    • +
    • wrongProperties: reserved bits of LZMA2 properties byte weren’t zero.
    • +
    • wrongDictionarySize: dictionary size was greater than 2^32.
    • +
    • wrongControlByte: unsupported value of LZMA2 packet’s control byte.
    • +
    • wrongReset: unsupported ‘reset’ value of LZMA2 packet’s.
    • +
    • wrongSizes: size of compressed or decompressed data wasn’t the same as specified in LZMA2 packet.
    See more @@ -195,7 +213,7 @@ It may indicate that either the data is damaged or it might not be compressed wi @@ -221,14 +239,14 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be gzip archive at all.

      -
    • WrongMagic: first two bytes of archive were not 31 and 139.
    • -
    • WrongCompressionMethod: unsupported compression method (not 8 aka Deflate).
    • -
    • WrongFlags: unsupported flags (reserved flags weren’t 0).
    • -
    • WrongHeaderCRC: computed Cyclic Redundancy Check of archive’s header +
    • wrongMagic: first two bytes of archive were not 31 and 139.
    • +
    • wrongCompressionMethod: unsupported compression method (not 8 aka Deflate).
    • +
    • wrongFlags: unsupported flags (reserved flags weren’t 0).
    • +
    • wrongHeaderCRC: computed Cyclic Redundancy Check of archive’s header didn’t match the archive’s value.
    • -
    • WrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value. +
    • wrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
    • -
    • WrongISize: size of uncompressed data modulo 2^32 didn’t match the archive’s value.
    • +
    • wrongISize: size of uncompressed data modulo 2^32 didn’t match the archive’s value.
    See more @@ -242,7 +260,7 @@ Associated value contains already decompressed data. @@ -268,17 +286,17 @@ Associated value contains already decompressed data. It may indicate that either the data is damaged or it might not be ZIP archive (container) at all.

      -
    • NotFoundCentralDirectoryEnd: end of Central Directoty record wasn’t found.
    • -
    • WrongSignature: unsupported signature of one of ZIP container’s structures.
    • -
    • WrongSize: incorrect compressed or uncompressed size of a ZIP container’s entry’s data.
    • -
    • WrongVersion: unsupported number of version needed to extract ZIP container +
    • notFoundCentralDirectoryEnd: end of Central Directoty record wasn’t found.
    • +
    • wrongSignature: unsupported signature of one of ZIP container’s structures.
    • +
    • wrongSize: incorrect compressed or uncompressed size of a ZIP container’s entry’s data.
    • +
    • wrongVersion: unsupported number of version needed to extract ZIP container (unsupported features are required to open this file).
    • -
    • MultiVolumesNotSupported: unsupported feature: multi-volumed or spanned container.
    • -
    • EncryptionNotSupported: unsupported feature: encryption.
    • -
    • PatchingNotSupported: unsupported feature: patched data.
    • -
    • CompressionNotSupported: unsupported feature: specified compression method.
    • -
    • WrongLocalHeader: local header of an entry wasn’t consistent with Central Directory record.
    • -
    • WrongCRC32: computed checksum of entry’s data wasn’t the same as the one stored in container.
    • +
    • multiVolumesNotSupported: unsupported feature: multi-volumed or spanned container.
    • +
    • encryptionNotSupported: unsupported feature: encryption.
    • +
    • patchingNotSupported: unsupported feature: patched data.
    • +
    • compressionNotSupported: unsupported feature: specified compression method.
    • +
    • wrongLocalHeader: local header of an entry wasn’t consistent with Central Directory record.
    • +
    • wrongCRC32: computed checksum of entry’s data wasn’t the same as the one stored in container.
    See more @@ -292,7 +310,7 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( @@ -318,15 +336,15 @@ It may indicate that either the data is damaged or it might not be ZIP archive ( It may indicate that either the data is damaged or it might not be compressed with LZMA at all.

      -
    • WrongProperties: unsupported LZMA properties (greater than 225).
    • -
    • RangeDecoderInitError: unable to initialize RangedDecoder.
    • -
    • ExceededUncompressedSize: the number of uncompressed bytes reached amount specified by archive +
    • wrongProperties: unsupported LZMA properties (greater than 225).
    • +
    • rangeDecoderInitError: unable to initialize RangedDecoder.
    • +
    • exceededUncompressedSize: the number of uncompressed bytes reached amount specified by archive while decoding wasn’t finished.
    • -
    • WindowIsEmpty: unable to repeat bytes because there is nothing to repeat.
    • -
    • RangeDecoderFinishError: range decoder was in a bad state when finish marker was reached.
    • -
    • RepeatWillExceed: unable to repeat bytes because the number of bytes to repeat is greater +
    • windowIsEmpty: unable to repeat bytes because there is nothing to repeat.
    • +
    • rangeDecoderFinishError: range decoder was in a bad state when finish marker was reached.
    • +
    • repeatWillExceed: unable to repeat bytes because the number of bytes to repeat is greater than the amount bytes that is left to decode.
    • -
    • NotEnoughToRepeat: unable to repeat bytes because the amount of already decoded bytes is smaller +
    • notEnoughToRepeat: unable to repeat bytes because the amount of already decoded bytes is smaller than the repeat length.
    @@ -341,7 +359,7 @@ than the repeat length. @@ -367,10 +385,10 @@ than the repeat length. It may indicate that either the data is damaged or it might not be Zlib archive at all.

      -
    • WrongCompressionMethod: unsupported compression method (not 8).
    • -
    • WrongCompressionInfo: unsupported compression info (greater than 7).
    • -
    • WrongFcheck: first two bytes were inconsistent with each other.
    • -
    • WrongCompressionLevel: unsupported compression level (not 0, 1, 2 or 3).
    • +
    • wrongCompressionMethod: unsupported compression method (not 8).
    • +
    • wrongCompressionInfo: unsupported compression info (greater than 7).
    • +
    • wrongFcheck: first two bytes were inconsistent with each other.
    • +
    • wrongCompressionLevel: unsupported compression level (not 0, 1, 2 or 3).
    • WrongAdler32: computed Adler-32 checksum of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
    @@ -386,7 +404,7 @@ Associated value contains already decompressed data. @@ -412,10 +430,10 @@ Associated value contains already decompressed data. It may indicate that either the data is damaged or it might not be compressed with DEFLATE at all.

      -
    • WrongUncompressedBlockLengths: length and nlength bytes of uncompressed block were not compatible.
    • -
    • WrongBlockType: unsupported block type (not 0, 1 or 2).
    • -
    • WrongSymbol: unsupported Huffman tree’s symbol.
    • -
    • SymbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongUncompressedBlockLengths: length and nlength bytes of uncompressed block were not compatible.
    • +
    • wrongBlockType: unsupported block type (not 0, 1 or 2).
    • +
    • wrongSymbol: unsupported Huffman tree’s symbol.
    • +
    • symbolNotFound: symbol from input data was not found in Huffman tree.
    See more @@ -429,7 +447,7 @@ It may indicate that either the data is damaged or it might not be compressed wi @@ -455,15 +473,16 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be compressed with BZip2 at all.

      -
    • WrongMagic: unsupported magic number (not 0x425a).
    • -
    • WrongCompressionMethod: unsupported compression method (not type ‘h’).
    • -
    • WrongBlockSize: unsupported block size (not ‘0’ — ‘9’).
    • -
    • WrongBlockType: unsupported block type (not ‘pi’ or ‘sqrt(pi)’).
    • -
    • RandomizedBlock: block is randomized; this is not supported.
    • -
    • WrongHuffmanGroups: unsupported number of Huffman tables/groups (not between 2 and 6).
    • -
    • WrongSelector: unsupported selector (greater than total number of Huffman groups).
    • -
    • WrongHuffmanLengthCode: unsupported code for Huffman length (not between 0 and 20).
    • -
    • SymbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongMagic: unsupported magic number (not 0x425a).
    • +
    • wrongCompressionMethod: unsupported compression method (not type ‘h’).
    • +
    • wrongBlockSize: unsupported block size (not ‘0’ — ‘9’).
    • +
    • wrongBlockType: unsupported block type (not ‘pi’ or ‘sqrt(pi)’).
    • +
    • randomizedBlock: block is randomized; this is not supported.
    • +
    • wrongHuffmanGroups: unsupported number of Huffman tables/groups (not between 2 and 6).
    • +
    • wrongSelector: unsupported selector (greater than total number of Huffman groups).
    • +
    • wrongHuffmanLengthCode: unsupported code for Huffman length (not between 0 and 20).
    • +
    • symbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value.
    See more @@ -477,7 +496,47 @@ It may indicate that either the data is damaged or it might not be compressed wi + + + + + +
    +
      +
    • +
      + + + + TarError + +
      +
      +
      +
      +
      +
      +

      Error happened during processing TAR archive (container). +It may indicate that either the data is damaged or it might not be TAR archive (container) at all.

      + +
        +
      • error: error description.
      • +
      + + See more +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      +
      @@ -503,18 +562,18 @@ It may indicate that either the data is damaged or it might not be compressed wi It may indicate that either the data is damaged or it might not be XZ archive at all.

        -
      • WrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
      • -
      • WrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
      • -
      • FieldReservedValue: value of one of archive’s special field +
      • wrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
      • +
      • wrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
      • +
      • fieldReservedValue: value of one of archive’s special field (in block, index, header or footer) had reserved value.
      • -
      • WrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
      • -
      • WrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
      • -
      • CheckTypeSHA256: checksum’s type was SHA-256.
      • -
      • WrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
      • -
      • WrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. +
      • wrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
      • +
      • wrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
      • +
      • checkTypeSHA256: checksum’s type was SHA-256.
      • +
      • wrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
      • +
      • wrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
      • -
      • WrongPadding: unsupported padding of one of structures in the archive.
      • -
      • MultiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
      • +
      • wrongPadding: unsupported padding of one of structures in the archive.
      • +
      • multiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
      See more @@ -528,7 +587,7 @@ Associated value contains already decompressed data.
    @@ -542,7 +601,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 66c7c342..319fa64d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,15 +180,16 @@ It may indicate that either the data is damaged or it might not be compressed with BZip2 at all.

      -
    • WrongMagic: unsupported magic number (not 0x425a).
    • -
    • WrongCompressionMethod: unsupported compression method (not type ‘h’).
    • -
    • WrongBlockSize: unsupported block size (not ‘0’ — ‘9’).
    • -
    • WrongBlockType: unsupported block type (not ‘pi’ or ‘sqrt(pi)’).
    • -
    • RandomizedBlock: block is randomized; this is not supported.
    • -
    • WrongHuffmanGroups: unsupported number of Huffman tables/groups (not between 2 and 6).
    • -
    • WrongSelector: unsupported selector (greater than total number of Huffman groups).
    • -
    • WrongHuffmanLengthCode: unsupported code for Huffman length (not between 0 and 20).
    • -
    • SymbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongMagic: unsupported magic number (not 0x425a).
    • +
    • wrongCompressionMethod: unsupported compression method (not type ‘h’).
    • +
    • wrongBlockSize: unsupported block size (not ‘0’ — ‘9’).
    • +
    • wrongBlockType: unsupported block type (not ‘pi’ or ‘sqrt(pi)’).
    • +
    • randomizedBlock: block is randomized; this is not supported.
    • +
    • wrongHuffmanGroups: unsupported number of Huffman tables/groups (not between 2 and 6).
    • +
    • wrongSelector: unsupported selector (greater than total number of Huffman groups).
    • +
    • wrongHuffmanLengthCode: unsupported code for Huffman length (not between 0 and 20).
    • +
    • symbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value.
    @@ -183,9 +202,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongMagic + + + wrongMagic
    @@ -200,12 +219,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -217,9 +236,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -234,12 +253,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -251,9 +270,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -268,12 +287,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockSize
    +
    case wrongBlockSize
    @@ -285,9 +304,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -302,12 +321,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockType
    +
    case wrongBlockType
    @@ -319,9 +338,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -336,12 +355,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case RandomizedBlock
    +
    case randomizedBlock
    @@ -353,9 +372,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -370,12 +389,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongHuffmanGroups
    +
    case wrongHuffmanGroups
    @@ -387,9 +406,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -404,12 +423,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongSelector
    +
    case wrongSelector
    @@ -421,9 +440,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -438,12 +457,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongHuffmanLengthCode
    +
    case wrongHuffmanLengthCode
    @@ -455,9 +474,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -472,12 +491,47 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case SymbolNotFound
    +
    case symbolNotFound
    + + +
  • + + +
    +
      +
    • +
      + + + + wrongCRC + +
      +
      +
      +
      +
      +
      +

      Computed CRC of uncompressed data didn’t match the value stored in the archive. +Associated value contains already decompressed data.

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      case wrongCRC(Data)
      + +
      +
      +
      @@ -491,7 +545,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 61ac45e6..e7ebdcf9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,10 +180,10 @@ It may indicate that either the data is damaged or it might not be compressed with DEFLATE at all.

      -
    • WrongUncompressedBlockLengths: length and nlength bytes of uncompressed block were not compatible.
    • -
    • WrongBlockType: unsupported block type (not 0, 1 or 2).
    • -
    • WrongSymbol: unsupported Huffman tree’s symbol.
    • -
    • SymbolNotFound: symbol from input data was not found in Huffman tree.
    • +
    • wrongUncompressedBlockLengths: length and nlength bytes of uncompressed block were not compatible.
    • +
    • wrongBlockType: unsupported block type (not 0, 1 or 2).
    • +
    • wrongSymbol: unsupported Huffman tree’s symbol.
    • +
    • symbolNotFound: symbol from input data was not found in Huffman tree.
    @@ -178,9 +196,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -195,12 +213,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongUncompressedBlockLengths
    +
    case wrongUncompressedBlockLengths
    @@ -212,9 +230,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -229,12 +247,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongBlockType
    +
    case wrongBlockType
    @@ -246,9 +264,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongSymbol + + + wrongSymbol
    @@ -263,12 +281,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongSymbol
    +
    case wrongSymbol
    @@ -280,9 +298,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -297,12 +315,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case SymbolNotFound
    +
    case symbolNotFound
    @@ -316,7 +334,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 3ef9f7c0..54abc734 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,14 +180,14 @@ It may indicate that either the data is damaged or it might not be gzip archive at all.

      -
    • WrongMagic: first two bytes of archive were not 31 and 139.
    • -
    • WrongCompressionMethod: unsupported compression method (not 8 aka Deflate).
    • -
    • WrongFlags: unsupported flags (reserved flags weren’t 0).
    • -
    • WrongHeaderCRC: computed Cyclic Redundancy Check of archive’s header +
    • wrongMagic: first two bytes of archive were not 31 and 139.
    • +
    • wrongCompressionMethod: unsupported compression method (not 8 aka Deflate).
    • +
    • wrongFlags: unsupported flags (reserved flags weren’t 0).
    • +
    • wrongHeaderCRC: computed Cyclic Redundancy Check of archive’s header didn’t match the archive’s value.
    • -
    • WrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value. +
    • wrongCRC: computed Cyclic Redundancy Check of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
    • -
    • WrongISize: size of uncompressed data modulo 2^32 didn’t match the archive’s value.
    • +
    • wrongISize: size of uncompressed data modulo 2^32 didn’t match the archive’s value.
    @@ -182,9 +200,9 @@ Associated value contains already decompressed data.
  • - - - WrongMagic + + + wrongMagic
    @@ -199,12 +217,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -216,9 +234,9 @@ Associated value contains already decompressed data.
  • @@ -233,12 +251,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -250,9 +268,9 @@ Associated value contains already decompressed data.
  • - - - WrongFlags + + + wrongFlags
    @@ -267,12 +285,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFlags
    +
    case wrongFlags
    @@ -284,9 +302,9 @@ Associated value contains already decompressed data.
  • @@ -301,12 +319,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongHeaderCRC
    +
    case wrongHeaderCRC
    @@ -318,9 +336,9 @@ Associated value contains already decompressed data.
  • - - - WrongCRC + + + wrongCRC
    @@ -336,12 +354,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongCRC(Data)
    +
    case wrongCRC(Data)
    @@ -353,9 +371,9 @@ Associated value contains already decompressed data.

  • - - - WrongISize + + + wrongISize
    @@ -370,12 +388,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongISize
    +
    case wrongISize
    @@ -389,7 +407,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 065a19f3..efead898 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,11 +180,11 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA2 at all.

      -
    • WrongProperties: reserved bits of LZMA2 properties byte weren’t zero.
    • -
    • WrongDictionarySize: dictionary size was greater than 2^32.
    • -
    • WrongControlByte: unsupported value of LZMA2 packet’s control byte.
    • -
    • WrongReset: unsupported ‘reset’ value of LZMA2 packet’s.
    • -
    • WrongSizes: size of compressed or decompressed data wasn’t the same as specified in LZMA2 packet.
    • +
    • wrongProperties: reserved bits of LZMA2 properties byte weren’t zero.
    • +
    • wrongDictionarySize: dictionary size was greater than 2^32.
    • +
    • wrongControlByte: unsupported value of LZMA2 packet’s control byte.
    • +
    • wrongReset: unsupported ‘reset’ value of LZMA2 packet’s.
    • +
    • wrongSizes: size of compressed or decompressed data wasn’t the same as specified in LZMA2 packet.
    @@ -179,9 +197,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -196,12 +214,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongProperties
    +
    case wrongProperties
    @@ -213,9 +231,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -230,12 +248,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongDictionarySize
    +
    case wrongDictionarySize
    @@ -247,9 +265,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • @@ -264,12 +282,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongControlByte
    +
    case wrongControlByte
    @@ -281,9 +299,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongReset + + + wrongReset
    @@ -298,12 +316,12 @@ It may indicate that either the data is damaged or it might not be compressed wi

    Declaration

    Swift

    -
    case WrongReset
    +
    case wrongReset
    @@ -315,9 +333,9 @@ It may indicate that either the data is damaged or it might not be compressed wi
  • - - - WrongSizes + + + wrongSizes
    @@ -333,12 +351,12 @@ amount of compressed data read was different from the one stored in LZMA2 packet

    Declaration

    Swift

    -
    case WrongSizes
    +
    case wrongSizes
    @@ -352,7 +370,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 98354d8c..3aed164a 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,15 +180,15 @@ It may indicate that either the data is damaged or it might not be compressed with LZMA at all.

      -
    • WrongProperties: unsupported LZMA properties (greater than 225).
    • -
    • RangeDecoderInitError: unable to initialize RangedDecoder.
    • -
    • ExceededUncompressedSize: the number of uncompressed bytes reached amount specified by archive +
    • wrongProperties: unsupported LZMA properties (greater than 225).
    • +
    • rangeDecoderInitError: unable to initialize RangedDecoder.
    • +
    • exceededUncompressedSize: the number of uncompressed bytes reached amount specified by archive while decoding wasn’t finished.
    • -
    • WindowIsEmpty: unable to repeat bytes because there is nothing to repeat.
    • -
    • RangeDecoderFinishError: range decoder was in a bad state when finish marker was reached.
    • -
    • RepeatWillExceed: unable to repeat bytes because the number of bytes to repeat is greater +
    • windowIsEmpty: unable to repeat bytes because there is nothing to repeat.
    • +
    • rangeDecoderFinishError: range decoder was in a bad state when finish marker was reached.
    • +
    • repeatWillExceed: unable to repeat bytes because the number of bytes to repeat is greater than the amount bytes that is left to decode.
    • -
    • NotEnoughToRepeat: unable to repeat bytes because the amount of already decoded bytes is smaller +
    • notEnoughToRepeat: unable to repeat bytes because the amount of already decoded bytes is smaller than the repeat length.
    @@ -184,9 +202,9 @@ than the repeat length.
  • @@ -201,12 +219,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case WrongProperties
    +
    case wrongProperties
    @@ -218,9 +236,9 @@ than the repeat length.
  • @@ -235,12 +253,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RangeDecoderInitError
    +
    case rangeDecoderInitError
    @@ -252,9 +270,9 @@ than the repeat length.
  • @@ -269,12 +287,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case ExceededUncompressedSize
    +
    case exceededUncompressedSize
    @@ -286,9 +304,9 @@ than the repeat length.
  • @@ -303,12 +321,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case WindowIsEmpty
    +
    case windowIsEmpty
    @@ -320,9 +338,9 @@ than the repeat length.
  • @@ -337,12 +355,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RangeDecoderFinishError
    +
    case rangeDecoderFinishError
    @@ -354,9 +372,9 @@ than the repeat length.
  • @@ -371,12 +389,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case RepeatWillExceed
    +
    case repeatWillExceed
    @@ -388,9 +406,9 @@ than the repeat length.
  • @@ -405,12 +423,12 @@ than the repeat length.
  • Declaration

    Swift

    -
    case NotEnoughToRepeat
    +
    case notEnoughToRepeat
    @@ -424,7 +442,7 @@ than the repeat length. diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html new file mode 100644 index 00000000..ed839fb6 --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html @@ -0,0 +1,372 @@ + + + + TarError Enum Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + +
    + +
    +
    +

    TarError

    +
    +
    +
    public enum TarError: Error
    + +
    +
    +

    Error happened during processing TAR archive (container). +It may indicate that either the data is damaged or it might not be TAR archive (container) at all.

    + +
      +
    • error: error description.
    • +
    + +
    +
    + +
    +
    +
    + +
    +
    +
      +
    • +
      + + + + fieldIsNotNumber + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      + +
      +
      +
    • +
    +
    +
    + +
    +
    +
      +
    • +
      + + + + wrongUstarVersion + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum TarError: Error
      + +
      +
      + +
      +
      +
    • +
    +
    +
    + +
    +
    +
    + +
    +
    + + + + 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 93be1260..13fff32d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,18 +180,18 @@ It may indicate that either the data is damaged or it might not be XZ archive at all.

      -
    • WrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
    • -
    • WrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
    • -
    • FieldReservedValue: value of one of archive’s special field +
    • wrongMagic: ‘magic’ bytes in archive’s header or footer weren’t equal to predefined value.
    • +
    • wrongArchiveInfo: incorrect value of one of archive’s special field (in block, index, header or footer).
    • +
    • fieldReservedValue: value of one of archive’s special field (in block, index, header or footer) had reserved value.
    • -
    • WrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
    • -
    • WrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
    • -
    • CheckTypeSHA256: checksum’s type was SHA-256.
    • -
    • WrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
    • -
    • WrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. +
    • wrongInfoCRC: incorrect value of one of archive’s special field (in block, index, header or footer).
    • +
    • wrongFilterID: unsupported value of filter ID (not LZMA2’s 0x21).
    • +
    • checkTypeSHA256: checksum’s type was SHA-256.
    • +
    • wrongDataSize: size of compressed or decompressed data wasn’t the same as specified in block.
    • +
    • wrongCheck: computed checksum of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
    • -
    • WrongPadding: unsupported padding of one of structures in the archive.
    • -
    • MultiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
    • +
    • wrongPadding: unsupported padding of one of structures in the archive.
    • +
    • multiByteIntegerError: error happened during reading of one of so called ‘multi-byte’ numbers.
    @@ -186,9 +204,9 @@ Associated value contains already decompressed data.
  • - - - WrongMagic + + + wrongMagic
    @@ -203,12 +221,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongMagic
    +
    case wrongMagic
    @@ -220,9 +238,9 @@ Associated value contains already decompressed data.
  • @@ -237,12 +255,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongArchiveInfo
    +
    case wrongArchiveInfo
    @@ -254,9 +272,9 @@ Associated value contains already decompressed data.
  • @@ -271,12 +289,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case FieldReservedValue
    +
    case fieldReservedValue
    @@ -288,9 +306,9 @@ Associated value contains already decompressed data.
  • @@ -305,12 +323,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongInfoCRC
    +
    case wrongInfoCRC
    @@ -322,9 +340,9 @@ Associated value contains already decompressed data.
  • @@ -339,12 +357,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFilterID
    +
    case wrongFilterID
    @@ -356,9 +374,9 @@ Associated value contains already decompressed data.
  • @@ -373,12 +391,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case CheckTypeSHA256
    +
    case checkTypeSHA256
    @@ -390,9 +408,9 @@ Associated value contains already decompressed data.
  • @@ -408,12 +426,12 @@ amount of compressed data read was different from the one stored in block header

    Declaration

    Swift

    -
    case WrongDataSize
    +
    case wrongDataSize
    @@ -425,9 +443,9 @@ amount of compressed data read was different from the one stored in block header
  • - - - WrongCheck + + + wrongCheck
    @@ -443,12 +461,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongCheck(Data)
    +
    case wrongCheck(Data)
    @@ -460,9 +478,9 @@ Associated value contains already decompressed data.

  • @@ -477,12 +495,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongPadding
    +
    case wrongPadding
    @@ -494,9 +512,9 @@ Associated value contains already decompressed data.

  • @@ -511,12 +529,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case MultiByteIntegerError
    +
    case multiByteIntegerError
    @@ -530,7 +548,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 40111133..047dfc95 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,17 +180,17 @@ It may indicate that either the data is damaged or it might not be ZIP archive (container) at all.

      -
    • NotFoundCentralDirectoryEnd: end of Central Directoty record wasn’t found.
    • -
    • WrongSignature: unsupported signature of one of ZIP container’s structures.
    • -
    • WrongSize: incorrect compressed or uncompressed size of a ZIP container’s entry’s data.
    • -
    • WrongVersion: unsupported number of version needed to extract ZIP container +
    • notFoundCentralDirectoryEnd: end of Central Directoty record wasn’t found.
    • +
    • wrongSignature: unsupported signature of one of ZIP container’s structures.
    • +
    • wrongSize: incorrect compressed or uncompressed size of a ZIP container’s entry’s data.
    • +
    • wrongVersion: unsupported number of version needed to extract ZIP container (unsupported features are required to open this file).
    • -
    • MultiVolumesNotSupported: unsupported feature: multi-volumed or spanned container.
    • -
    • EncryptionNotSupported: unsupported feature: encryption.
    • -
    • PatchingNotSupported: unsupported feature: patched data.
    • -
    • CompressionNotSupported: unsupported feature: specified compression method.
    • -
    • WrongLocalHeader: local header of an entry wasn’t consistent with Central Directory record.
    • -
    • WrongCRC32: computed checksum of entry’s data wasn’t the same as the one stored in container.
    • +
    • multiVolumesNotSupported: unsupported feature: multi-volumed or spanned container.
    • +
    • encryptionNotSupported: unsupported feature: encryption.
    • +
    • patchingNotSupported: unsupported feature: patched data.
    • +
    • compressionNotSupported: unsupported feature: specified compression method.
    • +
    • wrongLocalHeader: local header of an entry wasn’t consistent with Central Directory record.
    • +
    • wrongCRC32: computed checksum of entry’s data wasn’t the same as the one stored in container.
    @@ -185,9 +203,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -202,12 +220,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case NotFoundCentralDirectoryEnd
    +
    case notFoundCentralDirectoryEnd
    @@ -219,9 +237,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -236,12 +254,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongSignature
    +
    case wrongSignature
    @@ -253,9 +271,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongSize + + + wrongSize
    @@ -270,12 +288,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongSize
    +
    case wrongSize
    @@ -287,9 +305,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -304,12 +322,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongVersion
    +
    case wrongVersion
    @@ -321,9 +339,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -338,12 +356,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case MultiVolumesNotSupported
    +
    case multiVolumesNotSupported
    @@ -355,9 +373,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -372,12 +390,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case EncryptionNotSupported
    +
    case encryptionNotSupported
    @@ -389,9 +407,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -406,12 +424,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case PatchingNotSupported
    +
    case patchingNotSupported
    @@ -423,9 +441,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -440,12 +458,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case CompressionNotSupported
    +
    case compressionNotSupported
    @@ -457,9 +475,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • @@ -474,12 +492,12 @@ It may indicate that either the data is damaged or it might not be ZIP archive (

    Declaration

    Swift

    -
    case WrongLocalHeader
    +
    case wrongLocalHeader
    @@ -491,9 +509,9 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
  • - - - WrongCRC32 + + + wrongCRC32
    @@ -501,19 +519,54 @@ It may indicate that either the data is damaged or it might not be ZIP archive (
    -

    Wrong computed CRC32 of an entry.

    +

    Computed CRC32 of entry’s data didn’t match the value stored in the container. +Associated value contains extracted data.

    Declaration

    Swift

    -
    case WrongCRC32
    +
    case wrongCRC32(Data)
    +
    +
    +
  • + + +
    +
      +
    • +
      + + + + wrongTextField + +
      +
      +
      +
      +
      +
      +

      Undocumented

      + +
      +
      +

      Declaration

      +
      +

      Swift

      +
      public enum ZipError: Error
      + +
      +
      +
      @@ -527,7 +580,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 75630825..665a6523 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -162,10 +180,10 @@ It may indicate that either the data is damaged or it might not be Zlib archive at all.

      -
    • WrongCompressionMethod: unsupported compression method (not 8).
    • -
    • WrongCompressionInfo: unsupported compression info (greater than 7).
    • -
    • WrongFcheck: first two bytes were inconsistent with each other.
    • -
    • WrongCompressionLevel: unsupported compression level (not 0, 1, 2 or 3).
    • +
    • wrongCompressionMethod: unsupported compression method (not 8).
    • +
    • wrongCompressionInfo: unsupported compression info (greater than 7).
    • +
    • wrongFcheck: first two bytes were inconsistent with each other.
    • +
    • wrongCompressionLevel: unsupported compression level (not 0, 1, 2 or 3).
    • WrongAdler32: computed Adler-32 checksum of uncompressed data didn’t match the archive’s value. Associated value contains already decompressed data.
    @@ -180,9 +198,9 @@ Associated value contains already decompressed data.
  • @@ -197,12 +215,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionMethod
    +
    case wrongCompressionMethod
    @@ -214,9 +232,9 @@ Associated value contains already decompressed data.
  • @@ -231,12 +249,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionInfo
    +
    case wrongCompressionInfo
    @@ -248,9 +266,9 @@ Associated value contains already decompressed data.
  • - - - WrongFcheck + + + wrongFcheck
    @@ -265,12 +283,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongFcheck
    +
    case wrongFcheck
    @@ -282,9 +300,9 @@ Associated value contains already decompressed data.
  • @@ -299,12 +317,12 @@ Associated value contains already decompressed data.
  • Declaration

    Swift

    -
    case WrongCompressionLevel
    +
    case wrongCompressionLevel
    @@ -316,9 +334,9 @@ Associated value contains already decompressed data.
  • @@ -334,12 +352,12 @@ Associated value contains already decompressed data.

    Declaration

    Swift

    -
    case WrongAdler32(Data)
    +
    case wrongAdler32(Data)
    @@ -353,7 +371,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 6ffccfd9..6375a356 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

  • + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,7 +204,7 @@ @@ -217,7 +235,53 @@ + + + +
  • +
    + + + + Container + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    + +
    +
    +
  • +
  • +
    + + + + ContainerEntry + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + + See more +
    +
    @@ -231,7 +295,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 46110cdf..04d2e675 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

  • + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html new file mode 100644 index 00000000..51bedd79 --- /dev/null +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html @@ -0,0 +1,217 @@ + + + + Container Protocol Reference + + + + + + + + + + + + + + + + +
    +

    + + SWCompression Docs + + (75% documented) +

    + +

    +

    + +
    +

    + +

    + + + View on GitHub + +

    + +
    + + + +
    + + +
    + + + + diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html similarity index 71% rename from docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html rename to docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html index 6a4eb919..83d16939 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html @@ -1,7 +1,7 @@ - ZipEntry Struct Reference + ContainerEntry Protocol Reference @@ -14,16 +14,16 @@ - + - +

    SWCompression Docs - (100% documented) + (75% documented)

    @@ -44,7 +44,7 @@

    @@ -68,12 +68,24 @@ + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -151,14 +169,8 @@
    -

    ZipEntry

    -
    -
    -
    public struct ZipEntry
    - -
    -
    -

    Represents either a file or directory entry inside ZIP archive.

    +

    ContainerEntry

    +

    Undocumented

    @@ -170,9 +182,9 @@
  • - - - fileName + + + name
    @@ -180,19 +192,11 @@
    -

    Name of the file or directory.

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileName: String?
    - -
    -
    @@ -200,9 +204,9 @@
  • - - - fileComment + + + size
    @@ -210,19 +214,11 @@
    -

    Comment associated with the entry.

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileComment: String?
    - -
    -
    @@ -230,9 +226,9 @@
  • @@ -240,19 +236,33 @@
    -

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

    +

    Undocumented

    -
    -

    Declaration

    -
    -

    Swift

    -
    public var fileAttributes: UInt32
    - -
    -
    +
    +
    +
  • +
  • +
    + + + + data() + +
    +
    +
    +
    +
    +
    +

    Undocumented

    + +
    +
    @@ -266,7 +276,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 2f0fcecf..d9edaa85 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html index 9cdd6eaa..755e680d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -186,42 +204,7 @@ - - - - - -
    -
      -
    • -
      - - - - ZipEntry - -
      -
      -
      -
      -
      -
      -

      Represents either a file or directory entry inside ZIP archive.

      - - See more -
      -
      -

      Declaration

      -
      -

      Swift

      -
      public struct ZipEntry
      - -
      -
      -
      @@ -256,7 +239,7 @@
    @@ -270,7 +253,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 35889f32..80379478 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -193,7 +211,7 @@ @@ -224,7 +242,7 @@ @@ -254,28 +272,17 @@ - - -
    - -
    • @@ -283,19 +290,19 @@
      -

      The most recent modification time of the original file.

      +

      The most recent modification time of the original file. If set to 0 (default value == unset), then nil.

      Declaration

      Swift

      -
      public let modificationTime: Date
      +
      public let modificationTime: Date?
      @@ -325,7 +332,7 @@
    @@ -355,7 +362,7 @@ @@ -385,7 +392,7 @@ @@ -435,7 +442,6 @@ it might not be compressed with gzip at all.

    Data compressed with gzip.

    -
    @@ -443,7 +449,7 @@ it might not be compressed with gzip at all.

    @@ -457,7 +463,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 3016c2c0..a75c1923 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 @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,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 5f731f1b..e8814fed 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 @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -226,7 +244,7 @@ @@ -260,7 +278,7 @@ @@ -294,7 +312,7 @@ @@ -328,7 +346,7 @@ @@ -342,7 +360,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 27ae0edc..61a5bf3f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -193,7 +211,7 @@ @@ -224,7 +242,7 @@ @@ -254,7 +272,7 @@ @@ -284,7 +302,7 @@ @@ -314,7 +332,7 @@ @@ -364,7 +382,6 @@ it might not be compressed with zlib at all.

    Data compressed with zlib.

    -
    @@ -372,7 +389,7 @@ it might not be compressed with zlib at all.

    @@ -386,7 +403,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 8c6e8fbc..f0e28da0 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 @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -226,7 +244,7 @@ @@ -260,7 +278,7 @@ @@ -294,7 +312,7 @@ @@ -308,7 +326,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 8a2bb3d7..c640d261 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 @@ -23,7 +23,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -68,12 +68,24 @@

    + + + + @@ -97,6 +109,9 @@ + @@ -114,6 +129,12 @@ + + @@ -131,9 +152,6 @@ - @@ -192,7 +210,7 @@ @@ -206,7 +224,7 @@ diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html index 5061fe7f..2d2a68f9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html @@ -22,7 +22,7 @@ SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -153,8 +171,11 @@

    SWCompression

    -

    GitHub license CocoaPods Swift 3 -Build Status codecov

    +

    GitHub license +CocoaPods +Swift 3 +Build Status +codecov

    CocoaPods Carthage compatible

    @@ -304,7 +325,7 @@ which uses SWCompression for unarchiving several types of archives.

    Why is it so slow?

    Version 2.0 came with a great performance improvement. -Just look at the test results in ‘Tests/Test Result’. +Just look at the Tests Results. So if it’s slow the first thing you should do is to make sure you are using version >= 2.0.

    Is it still slow? @@ -336,6 +357,9 @@ so some difference in speed is expected.

  • .ZIP Application Note
  • ISO/IEC 21320-1
  • List of defined ZIP extra fields
  • +
  • Wikipedia article about TAR
  • +
  • Pax specification
  • +
  • Basic TAR specification
  • @@ -346,7 +370,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 0ffc137c..0812255e 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/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:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"

    The most recent modification time of the original file. If set to 0 (default value == unset), then nil.

    ","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/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

    A structure which provides information about zlib archive.

    "},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Undocumented

    ","parent_name":"Container"},"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.

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

    Undocumented

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

    Undocumented

    "},"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/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"

    Undocumented

    ","parent_name":"TarError"},"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/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"

    Computed CRC of uncompressed data didn’t match the value stored in the archive.","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_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"

    Computed CRC32 of entry’s data didn’t match the value stored in the container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"

    Undocumented

    ","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/TarError.html":{"name":"TarError","abstract":"

    Error happened during processing TAR archive (container)."},"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/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Undocumented

    ","parent_name":"TarContainer"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"

    Undocumented

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

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"

    Name of the file or directory.

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"

    Returns data associated with this entry.

    ","parent_name":"TarEntry"},"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:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Processes ZIP archive (container) and returns an array of ContainerEntries (which are actually ZipEntries).","parent_name":"ZipContainer"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"

    Name of the file or directory.

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"

    Comment associated with the entry.

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"

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

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    True, if an entry is likely to be a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"

    Returns data associated with this entry.

    ","parent_name":"ZipEntry"},"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/ZipEntry.html":{"name":"ZipEntry","abstract":"

    Represents either a file or directory entry inside ZIP archive.

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

    Provides function which opens 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/TarEntry.html":{"name":"TarEntry","abstract":"

    Represents either a file or directory entry inside TAR archive.

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

    Provides function which opens TAR archives (containers).

    "},"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/docSet.dsidx b/docs/docsets/SWCompression.docset/Contents/Resources/docSet.dsidx index 6b4f444e44b7b1926dd3621aec6ed3c551fc6028..cf8d3093cd7738dff4afa3b90ce7c6e41e259d2c 100644 GIT binary patch literal 57344 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 literal 45056 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 LQ5A?Z|B?R#ZC>pz diff --git a/docs/docsets/SWCompression.tgz b/docs/docsets/SWCompression.tgz index eb74fb5ad91831c2ed41d8ca5e7a90806609c28b..efa019ccead5ffc8df054633a30178e7252952d7 100644 GIT binary patch literal 104350 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

    m^44b(bcby0W#PyX`)oBhXVK(hd)?K{p{ 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

    =sj$`~@>|aJCeDv}v+5)FsU!7C6Im-nHI#)L<9c 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 S4iApcK(1Ug-eeV*$^HZUw($A@ literal 99272 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 z�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 +h0Y8gO~Z&;vu?~==R@JmEu3B$a# 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 SWCompression Docs - (100% documented) + (75% documented)

    @@ -67,12 +67,24 @@

    + + + + @@ -96,6 +108,9 @@ + @@ -113,6 +128,12 @@ + + @@ -130,9 +151,6 @@ - @@ -153,8 +171,11 @@

    SWCompression

    -

    GitHub license CocoaPods Swift 3 -Build Status codecov

    +

    GitHub license +CocoaPods +Swift 3 +Build Status +codecov

    CocoaPods Carthage compatible

    @@ -304,7 +325,7 @@ which uses SWCompression for unarchiving several types of archives.

    Why is it so slow?

    Version 2.0 came with a great performance improvement. -Just look at the test results in ‘Tests/Test Result’. +Just look at the Tests Results. So if it’s slow the first thing you should do is to make sure you are using version >= 2.0.

    Is it still slow? @@ -336,6 +357,9 @@ so some difference in speed is expected.

  • .ZIP Application Note
  • ISO/IEC 21320-1
  • List of defined ZIP extra fields
  • +
  • Wikipedia article about TAR
  • +
  • Pax specification
  • +
  • Basic TAR specification
  • @@ -346,7 +370,7 @@ so some difference in speed is expected.

    diff --git a/docs/search.json b/docs/search.json index 0ffc137c..0812255e 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/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:vV13SWCompression10GzipHeader16modificationTimeGSqV10Foundation4Date_":{"name":"modificationTime","abstract":"

    The most recent modification time of the original file. If set to 0 (default value == unset), then nil.

    ","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/ZlibHeader.html":{"name":"ZlibHeader","abstract":"

    A structure which provides information about zlib archive.

    "},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4nameSS":{"name":"name","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:vP13SWCompression14ContainerEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/ContainerEntry.html#/s:FP13SWCompression14ContainerEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"

    Undocumented

    ","parent_name":"ContainerEntry"},"Protocols/Container.html#/s:ZFP13SWCompression9Container4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Undocumented

    ","parent_name":"Container"},"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.

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

    Undocumented

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

    Undocumented

    "},"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/TarError.html#/s:FO13SWCompression8TarError20tooSmallFileIsPassedFMS0_S0_":{"name":"tooSmallFileIsPassed","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError16fieldIsNotNumberFMS0_S0_":{"name":"fieldIsNotNumber","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongHeaderChecksumFMS0_S0_":{"name":"wrongHeaderChecksum","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError17wrongUstarVersionFMS0_S0_":{"name":"wrongUstarVersion","abstract":"

    Undocumented

    ","parent_name":"TarError"},"Enums/TarError.html#/s:FO13SWCompression8TarError19wrongPaxHeaderEntryFMS0_S0_":{"name":"wrongPaxHeaderEntry","abstract":"

    Undocumented

    ","parent_name":"TarError"},"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/BZip2Error.html#/s:FO13SWCompression10BZip2Error8wrongCRCFMS0_FV10Foundation4DataS0_":{"name":"wrongCRC","abstract":"

    Computed CRC of uncompressed data didn’t match the value stored in the archive.","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_FV10Foundation4DataS0_":{"name":"wrongCRC32","abstract":"

    Computed CRC32 of entry’s data didn’t match the value stored in the container.","parent_name":"ZipError"},"Enums/ZipError.html#/s:FO13SWCompression8ZipError14wrongTextFieldFMS0_S0_":{"name":"wrongTextField","abstract":"

    Undocumented

    ","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/TarError.html":{"name":"TarError","abstract":"

    Error happened during processing TAR archive (container)."},"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/TarContainer.html#/s:ZFC13SWCompression12TarContainer4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Undocumented

    ","parent_name":"TarContainer"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType6normalFMS1_S1_":{"name":"normal","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType8hardLinkFMS1_S1_":{"name":"hardLink","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12symbolicLinkFMS1_S1_":{"name":"symbolicLink","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType16characterSpecialFMS1_S1_":{"name":"characterSpecial","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType12blockSpecialFMS1_S1_":{"name":"blockSpecial","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType9directoryFMS1_S1_":{"name":"directory","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType4fifoFMS1_S1_":{"name":"fifo","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType10contiguousFMS1_S1_":{"name":"contiguous","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType20globalExtendedHeaderFMS1_S1_":{"name":"globalExtendedHeader","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType19localExtendedHeaderFMS1_S1_":{"name":"localExtendedHeader","abstract":"

    Undocumented

    ","parent_name":"EntryType"},"Classes/TarEntry/EntryType.html#/s:FOC13SWCompression8TarEntry9EntryType23vendorUnknownOrReservedFMS1_S1_":{"name":"vendorUnknownOrReserved","abstract":"

    Undocumented

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

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4nameSS":{"name":"name","abstract":"

    Name of the file or directory.

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4modeGSqSi_":{"name":"mode","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7ownerIDGSqSi_":{"name":"ownerID","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7groupIDGSqSi_":{"name":"groupID","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry16modificationTimeV10Foundation4Date":{"name":"modificationTime","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry4typeOS0_9EntryType":{"name":"type","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry13ownerUserNameGSqSS_":{"name":"ownerUserName","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry14ownerGroupNameGSqSS_":{"name":"ownerGroupName","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry10accessTimeGSqV10Foundation4Date_":{"name":"accessTime","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7charsetGSqSS_":{"name":"charset","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry7commentGSqSS_":{"name":"comment","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry8linkPathGSqSS_":{"name":"linkPath","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:vC13SWCompression8TarEntry28unknownExtendedHeaderEntriesGVs10DictionarySSSS_":{"name":"unknownExtendedHeaderEntries","abstract":"

    Undocumented

    ","parent_name":"TarEntry"},"Classes/TarEntry.html#/s:FC13SWCompression8TarEntry4dataFT_V10Foundation4Data":{"name":"data()","abstract":"

    Returns data associated with this entry.

    ","parent_name":"TarEntry"},"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:ZFC13SWCompression12ZipContainer4openFzT13containerDataV10Foundation4Data_GSaPS_14ContainerEntry__":{"name":"open(containerData:)","abstract":"

    Processes ZIP archive (container) and returns an array of ContainerEntries (which are actually ZipEntries).","parent_name":"ZipContainer"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4nameSS":{"name":"name","abstract":"

    Name of the file or directory.

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry7commentGSqSS_":{"name":"comment","abstract":"

    Comment associated with the entry.

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry10attributesVs6UInt32":{"name":"attributes","abstract":"

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

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry4sizeSi":{"name":"size","abstract":"

    Undocumented

    ","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:vC13SWCompression8ZipEntry11isDirectorySb":{"name":"isDirectory","abstract":"

    True, if an entry is likely to be a directory.","parent_name":"ZipEntry"},"Classes/ZipEntry.html#/s:FC13SWCompression8ZipEntry4dataFzT_V10Foundation4Data":{"name":"data()","abstract":"

    Returns data associated with this entry.

    ","parent_name":"ZipEntry"},"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/ZipEntry.html":{"name":"ZipEntry","abstract":"

    Represents either a file or directory entry inside ZIP archive.

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

    Provides function which opens 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/TarEntry.html":{"name":"TarEntry","abstract":"

    Represents either a file or directory entry inside TAR archive.

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

    Provides function which opens TAR archives (containers).

    "},"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/undocumented.json b/docs/undocumented.json index 1862018e..3ffe176b 100644 --- a/docs/undocumented.json +++ b/docs/undocumented.json @@ -1,6 +1,292 @@ { "warnings": [ - + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 27, + "symbol": "Container", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 29, + "symbol": "Container.open(containerData:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 33, + "symbol": "ContainerEntry", + "symbol_kind": "source.lang.swift.decl.protocol", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 35, + "symbol": "ContainerEntry.name", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 36, + "symbol": "ContainerEntry.size", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 37, + "symbol": "ContainerEntry.isDirectory", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/Protocols.swift", + "line": 39, + "symbol": "ContainerEntry.data()", + "symbol_kind": "source.lang.swift.decl.function.method.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 18, + "symbol": "TarError.tooSmallFileIsPassed", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 19, + "symbol": "TarError.fieldIsNotNumber", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 20, + "symbol": "TarError.wrongHeaderChecksum", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 21, + "symbol": "TarError.wrongUstarVersion", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 22, + "symbol": "TarError.wrongPaxHeaderEntry", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 28, + "symbol": "TarEntry.EntryType", + "symbol_kind": "source.lang.swift.decl.enum", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 29, + "symbol": "TarEntry.EntryType.normal", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 30, + "symbol": "TarEntry.EntryType.hardLink", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 31, + "symbol": "TarEntry.EntryType.symbolicLink", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 32, + "symbol": "TarEntry.EntryType.characterSpecial", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 33, + "symbol": "TarEntry.EntryType.blockSpecial", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 34, + "symbol": "TarEntry.EntryType.directory", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 35, + "symbol": "TarEntry.EntryType.fifo", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 36, + "symbol": "TarEntry.EntryType.contiguous", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 37, + "symbol": "TarEntry.EntryType.globalExtendedHeader", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 38, + "symbol": "TarEntry.EntryType.localExtendedHeader", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 39, + "symbol": "TarEntry.EntryType.vendorUnknownOrReserved", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 47, + "symbol": "TarEntry.isDirectory", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 51, + "symbol": "TarEntry.mode", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 52, + "symbol": "TarEntry.ownerID", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 53, + "symbol": "TarEntry.groupID", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 54, + "symbol": "TarEntry.size", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 55, + "symbol": "TarEntry.modificationTime", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 56, + "symbol": "TarEntry.type", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 58, + "symbol": "TarEntry.ownerUserName", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 59, + "symbol": "TarEntry.ownerGroupName", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 69, + "symbol": "TarEntry.accessTime", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 70, + "symbol": "TarEntry.charset", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 71, + "symbol": "TarEntry.comment", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 72, + "symbol": "TarEntry.linkPath", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 73, + "symbol": "TarEntry.unknownExtendedHeaderEntries", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/TarContainer.swift", + "line": 293, + "symbol": "TarContainer.open(containerData:)", + "symbol_kind": "source.lang.swift.decl.function.method.static", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/ZipContainer.swift", + "line": 51, + "symbol": "ZipError.wrongTextField", + "symbol_kind": "source.lang.swift.decl.enumelement", + "warning": "undocumented" + }, + { + "file": "/Users/timofeysolomko/Developer/SWCompression/Sources/ZipContainer.swift", + "line": 75, + "symbol": "ZipEntry.size", + "symbol_kind": "source.lang.swift.decl.var.instance", + "warning": "undocumented" + } ], "source_directory": "/Users/timofeysolomko/Developer/SWCompression" } \ No newline at end of file