From 9da406fc53fb79f1a1dd191a14aa2b0ac1443030 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 12:47:46 +0300 Subject: [PATCH 01/38] Small improvement to EncHuffTree.code function --- Sources/Common/BitWriter.swift | 7 ++++--- Sources/Common/EncodingHuffmanTree.swift | 9 +-------- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Sources/Common/BitWriter.swift b/Sources/Common/BitWriter.swift index cb86148b..dfea59e0 100644 --- a/Sources/Common/BitWriter.swift +++ b/Sources/Common/BitWriter.swift @@ -75,11 +75,12 @@ class BitWriter { } } - func write(number: Int, bitsCount: Int) { - var mask = bitOrder == .straight ? 1 << (bitsCount - 1) : 1 + func write(number: Int, bitsCount: Int, bitOrder: BitReader.BitOrder? = nil) { + let bitOrderToUse = (bitOrder ?? self.bitOrder) + var mask = bitOrderToUse == .straight ? 1 << (bitsCount - 1) : 1 for _ in 0.. 0 ? 1 : 0) - switch bitOrder { + switch bitOrderToUse { case .straight: mask >>= 1 case .reversed: diff --git a/Sources/Common/EncodingHuffmanTree.swift b/Sources/Common/EncodingHuffmanTree.swift index c37b06e9..7323a83d 100644 --- a/Sources/Common/EncodingHuffmanTree.swift +++ b/Sources/Common/EncodingHuffmanTree.swift @@ -61,14 +61,7 @@ class EncodingHuffmanTree { guard codingIndex[0] > -1 else { fatalError("Symbol is not found.") } - var treeCode = codingIndex[0] - let bits = codingIndex[1] - - for _ in 0..>= 1 - } + self.bitWriter.write(number: codingIndex[0], bitsCount: codingIndex[1], bitOrder: .reversed) } func bitSize(for stats: [Int]) -> Int { From 3c405e4fa4ed8a51a45e15bde5b7c7214b77fc5c Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 18:43:15 +0300 Subject: [PATCH 02/38] Make testType properties private to protect from potential mistakes --- Tests/7zTests.swift | 2 +- Tests/BZip2CompressionTests.swift | 2 +- Tests/BZip2Tests.swift | 2 +- Tests/GzipTests.swift | 2 +- Tests/LzmaTests.swift | 2 +- Tests/TarTests.swift | 2 +- Tests/XzTests.swift | 2 +- Tests/ZipTests.swift | 2 +- Tests/ZlibTests.swift | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Tests/7zTests.swift b/Tests/7zTests.swift index 0ffdae33..ed9f4d14 100644 --- a/Tests/7zTests.swift +++ b/Tests/7zTests.swift @@ -8,7 +8,7 @@ import SWCompression class SevenZipTests: XCTestCase { - static let testType: String = "7z" + private static let testType: String = "7z" func test1() throws { guard let testURL = Constants.url(forTest: "test1", withType: SevenZipTests.testType) else { diff --git a/Tests/BZip2CompressionTests.swift b/Tests/BZip2CompressionTests.swift index 7040be8b..9f680ce3 100644 --- a/Tests/BZip2CompressionTests.swift +++ b/Tests/BZip2CompressionTests.swift @@ -8,7 +8,7 @@ import SWCompression class BZip2CompressionTests: XCTestCase { - static let testType: String = "bz2" + private static let testType: String = "bz2" func answerTest(_ answerName: String) throws { guard let answerURL = Constants.url(forAnswer: answerName) else { diff --git a/Tests/BZip2Tests.swift b/Tests/BZip2Tests.swift index 52f194d7..ebd6c072 100644 --- a/Tests/BZip2Tests.swift +++ b/Tests/BZip2Tests.swift @@ -8,7 +8,7 @@ import SWCompression class BZip2Tests: XCTestCase { - static let testType: String = "bz2" + private static let testType: String = "bz2" func perform(test testName: String) throws { guard let testURL = Constants.url(forTest: testName, withType: BZip2Tests.testType) else { diff --git a/Tests/GzipTests.swift b/Tests/GzipTests.swift index ebbe17b5..92b422b1 100644 --- a/Tests/GzipTests.swift +++ b/Tests/GzipTests.swift @@ -8,7 +8,7 @@ import SWCompression class GzipTests: XCTestCase { - static let testType: String = "gz" + private static let testType: String = "gz" func header(test testName: String, mtime: Int) throws { guard let testURL = Constants.url(forTest: testName, withType: GzipTests.testType) else { diff --git a/Tests/LzmaTests.swift b/Tests/LzmaTests.swift index a98b0222..71f4f299 100644 --- a/Tests/LzmaTests.swift +++ b/Tests/LzmaTests.swift @@ -8,7 +8,7 @@ import SWCompression class LzmaTests: XCTestCase { - static let testType: String = "lzma" + private static let testType: String = "lzma" func perform(test testName: String) throws { guard let testURL = Constants.url(forTest: testName, withType: LzmaTests.testType) else { diff --git a/Tests/TarTests.swift b/Tests/TarTests.swift index e715419c..0b0cee2e 100644 --- a/Tests/TarTests.swift +++ b/Tests/TarTests.swift @@ -8,7 +8,7 @@ import SWCompression class TarTests: XCTestCase { - static let testType: String = "tar" + private static let testType: String = "tar" func test() throws { guard let testURL = Constants.url(forTest: "test", withType: TarTests.testType) else { diff --git a/Tests/XzTests.swift b/Tests/XzTests.swift index bf9a599a..e096bcf6 100644 --- a/Tests/XzTests.swift +++ b/Tests/XzTests.swift @@ -8,7 +8,7 @@ import SWCompression class XZTests: XCTestCase { - static let testType: String = "xz" + private static let testType: String = "xz" func perform(test testName: String) throws { guard let testURL = Constants.url(forTest: testName, withType: XZTests.testType) else { diff --git a/Tests/ZipTests.swift b/Tests/ZipTests.swift index a5b91a6a..335fa56d 100644 --- a/Tests/ZipTests.swift +++ b/Tests/ZipTests.swift @@ -8,7 +8,7 @@ import SWCompression class ZipTests: XCTestCase { - static let testType: String = "zip" + private static let testType: String = "zip" func testBigContainer() throws { guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: ZipTests.testType) else { diff --git a/Tests/ZlibTests.swift b/Tests/ZlibTests.swift index 04ab62ec..c9b94358 100644 --- a/Tests/ZlibTests.swift +++ b/Tests/ZlibTests.swift @@ -8,7 +8,7 @@ import SWCompression class ZlibTests: XCTestCase { - static let testType: String = "zlib" + private static let testType: String = "zlib" func testZlib() throws { let testName = "test" From c8d8b0833ac5f01d7843d38ee9a1a51f8ef2702a Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 18:44:10 +0300 Subject: [PATCH 03/38] Extract some common code for acquiring data --- Tests/7zTests.swift | 138 +++++++++++------------------- Tests/BZip2CompressionTests.swift | 6 +- Tests/BZip2Tests.swift | 12 +-- Tests/Constants.swift | 28 +++++- Tests/DeflateTests.swift | 5 +- Tests/GzipTests.swift | 48 ++++------- Tests/LzmaTests.swift | 12 +-- Tests/TarTests.swift | 66 +++++--------- Tests/XzTests.swift | 32 +++---- Tests/ZipTests.swift | 72 ++++++---------- Tests/ZlibTests.swift | 24 ++---- 11 files changed, 168 insertions(+), 275 deletions(-) diff --git a/Tests/7zTests.swift b/Tests/7zTests.swift index ed9f4d14..7988151e 100644 --- a/Tests/7zTests.swift +++ b/Tests/7zTests.swift @@ -11,21 +11,18 @@ class SevenZipTests: XCTestCase { private static let testType: String = "7z" func test1() throws { - guard let testURL = Constants.url(forTest: "test1", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test1", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) - guard let answerURL = Constants.url(forAnswer: "test1") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test1") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test1.answer") XCTAssertNotEqual(entries[0].info.type, .directory) @@ -34,49 +31,42 @@ class SevenZipTests: XCTestCase { } func test2() throws { - guard let testURL = Constants.url(forTest: "test2", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test2", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 2) - guard let answer1URL = Constants.url(forAnswer: "test1") else { - XCTFail("Unable to get answer's URL.") + guard let answer1Data = Constants.data(forAnswer: "test1") else { + XCTFail("Unable to get answer data.") return } - var answerData = try Data(contentsOf: answer1URL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].info.name, "test1.answer") XCTAssertNotEqual(entries[0].info.type, .directory) - XCTAssertEqual(entries[0].info.size, answerData.count) - XCTAssertEqual(entries[0].data, answerData) + XCTAssertEqual(entries[0].info.size, answer1Data.count) + XCTAssertEqual(entries[0].data, answer1Data) - guard let answer4URL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answer4Data = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - answerData = try Data(contentsOf: answer4URL, options: .mappedIfSafe) - XCTAssertEqual(entries[1].info.name, "test4.answer") XCTAssertNotEqual(entries[1].info.type, .directory) - XCTAssertEqual(entries[1].info.size, answerData.count) - XCTAssertEqual(entries[1].data, answerData) + XCTAssertEqual(entries[1].info.size, answer4Data.count) + XCTAssertEqual(entries[1].data, answer4Data) } func test3() throws { - guard let testURL = Constants.url(forTest: "test3", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test3", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS _ = try SevenZipContainer.open(container: testData) #else @@ -85,13 +75,11 @@ class SevenZipTests: XCTestCase { } func testAntiFile() throws { - guard let testURL = Constants.url(forTest: "test_anti_file", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_anti_file", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS let entries = try SevenZipContainer.open(container: testData) @@ -117,13 +105,11 @@ class SevenZipTests: XCTestCase { func testMultiBlocks() throws { // Container was created with "solid" options set to "off" (-ms=off). - guard let testURL = Constants.url(forTest: "test_multi_blocks", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_multi_blocks", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS let entries = try SevenZipContainer.open(container: testData) @@ -137,13 +123,11 @@ class SevenZipTests: XCTestCase { func testAllTimestamps() throws { // Container was created with "-mtc=on" and "-mta=on" options. - guard let testURL = Constants.url(forTest: "test_all_timestamps", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_all_timestamps", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS let entries = try SevenZipContainer.open(container: testData) @@ -171,14 +155,11 @@ class SevenZipTests: XCTestCase { func testComplicatedCodingScheme() throws { // Container was created with these options: "-mf=BCJ -m0=Copy -m1=Deflate -m2=Delta -m3=LZMA -m4=LZMA2" - guard let testURL = Constants.url(forTest: "test_complicated_coding_scheme", - withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_complicated_coding_scheme", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - // In these test case the most important thing is that information about entries must be read correctly. _ = try SevenZipContainer.info(container: testData) @@ -193,13 +174,11 @@ class SevenZipTests: XCTestCase { func testEncryptedHeader() throws { // Container was created with "-mhe=on". - guard let testURL = Constants.url(forTest: "test_encrypted_header", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_encrypted_header", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - XCTAssertThrowsError(try SevenZipContainer.info(container: testData)) { error in XCTAssertEqual(error as? SevenZipError, SevenZipError.encryptionNotSupported) } @@ -210,13 +189,11 @@ class SevenZipTests: XCTestCase { func testSingleThread() throws { // Container was created with disabled multithreading options. // We check this just in case. - guard let testURL = Constants.url(forTest: "test_single_thread", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_single_thread", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS let entries = try SevenZipContainer.open(container: testData) @@ -229,13 +206,11 @@ class SevenZipTests: XCTestCase { } func testBigContainer() throws { - guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "SWCompressionSourceCode", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS _ = try SevenZipContainer.open(container: testData) #else @@ -245,83 +220,73 @@ class SevenZipTests: XCTestCase { func test7zBZip2() throws { // File in container compressed with BZip2. - guard let testURL = Constants.url(forTest: "test_7z_bzip2", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_7z_bzip2", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test4.answer") XCTAssertNotEqual(entries[0].info.type, .directory) - guard let answerURL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].data, answerData) } func test7zDeflate() throws { // File in container compressed with Deflate. - guard let testURL = Constants.url(forTest: "test_7z_deflate", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_7z_deflate", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test4.answer") XCTAssertNotEqual(entries[0].info.type, .directory) - guard let answerURL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].data, answerData) } func test7zCopy() throws { // File in container is explicitly uncompressed. - guard let testURL = Constants.url(forTest: "test_7z_copy", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_7z_copy", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test4.answer") XCTAssertNotEqual(entries[0].info.type, .directory) - guard let answerURL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].data, answerData) } func testWinContainer() throws { - guard let testURL = Constants.url(forTest: "test_win", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_win", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 2) @@ -338,12 +303,11 @@ class SevenZipTests: XCTestCase { } func testEmptyFile() throws { - guard let testURL = Constants.url(forTest: "test_empty_file", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_file", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -354,12 +318,11 @@ class SevenZipTests: XCTestCase { } func testEmptyDirectory() throws { - guard let testURL = Constants.url(forTest: "test_empty_dir", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_dir", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -370,12 +333,11 @@ class SevenZipTests: XCTestCase { } func testEmptyContainer() throws { - guard let testURL = Constants.url(forTest: "test_empty_cont", withType: SevenZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_cont", withType: SevenZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try SevenZipContainer.open(container: testData) XCTAssertEqual(entries.isEmpty, true) diff --git a/Tests/BZip2CompressionTests.swift b/Tests/BZip2CompressionTests.swift index 9f680ce3..462b9b05 100644 --- a/Tests/BZip2CompressionTests.swift +++ b/Tests/BZip2CompressionTests.swift @@ -11,13 +11,11 @@ class BZip2CompressionTests: XCTestCase { private static let testType: String = "bz2" func answerTest(_ answerName: String) throws { - guard let answerURL = Constants.url(forAnswer: answerName) else { - XCTFail("Unable to get asnwer's URL.") + guard let answerData = Constants.data(forAnswer: answerName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - let compressedData = BZip2.compress(data: answerData) let redecompressedData = try BZip2.decompress(data: compressedData) diff --git a/Tests/BZip2Tests.swift b/Tests/BZip2Tests.swift index ebd6c072..14460056 100644 --- a/Tests/BZip2Tests.swift +++ b/Tests/BZip2Tests.swift @@ -11,21 +11,17 @@ class BZip2Tests: XCTestCase { private static let testType: String = "bz2" func perform(test testName: String) throws { - guard let testURL = Constants.url(forTest: testName, withType: BZip2Tests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: BZip2Tests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try BZip2.decompress(data: testData) - guard let answerURL = Constants.url(forAnswer: testName) else { - XCTFail("Unable to get asnwer's URL.") + guard let answerData = Constants.data(forAnswer: testName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") #if PERF_TESTS diff --git a/Tests/Constants.swift b/Tests/Constants.swift index 7344c599..35d3cebe 100644 --- a/Tests/Constants.swift +++ b/Tests/Constants.swift @@ -12,21 +12,41 @@ struct Constants { - test2: text file with copyright free song lyrics from http://www.freesonglyrics.co.uk/lyrics13.html - test3: text file with random string from https://www.random.org/strings/ - test4: text file with string "I'm a tester" repeated several times. - - test5: empty file. + - test5: empty file. // TODO: Rename to empty_file - test6: file with size of 5MB containing nulls from /dev/null. - test7: file with size of 5MB containing random bytes from /dev/urandom. - test8: text file from lzma_specification. - test9: file with size of 10KB containing random bytes from /dev/urandom. */ - static func url(forTest name: String, withType ext: String) -> URL? { + static func data(forTest name: String, withType ext: String) -> Data? { + if let url = Constants.url(forTest: name, withType: ext) { + return try? Data(contentsOf: url, options: .mappedIfSafe) + } else { + return nil + } + } + + private static func url(forTest name: String, withType ext: String) -> URL? { return testBundle.url(forResource: name, withExtension: ext) } - static func url(forAnswer name: String) -> URL? { + static func data(forAnswer name: String) -> Data? { + if name == "empty_file" { + return Data() + } + + if let url = Constants.url(forAnswer: name) { + return try? Data(contentsOf: url, options: .mappedIfSafe) + } else { + return nil + } + } + + private static func url(forAnswer name: String) -> URL? { return testBundle.url(forResource: name, withExtension: "answer") } - static let testBundle: Bundle = Bundle(for: DeflateTests.self) + private static let testBundle: Bundle = Bundle(for: DeflateTests.self) } diff --git a/Tests/DeflateTests.swift b/Tests/DeflateTests.swift index 21c871cc..788031cc 100644 --- a/Tests/DeflateTests.swift +++ b/Tests/DeflateTests.swift @@ -9,12 +9,11 @@ import SWCompression class DeflateTests: XCTestCase { func perform(compressionTest testName: String) throws { - guard let answerURL = Constants.url(forAnswer: testName) else { - XCTFail("Unable to get test's URL.") + guard let answerData = Constants.data(forAnswer: testName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) let deflatedData = Deflate.compress(data: answerData) let reUncompData = try Deflate.decompress(data: deflatedData) diff --git a/Tests/GzipTests.swift b/Tests/GzipTests.swift index 92b422b1..abb663e4 100644 --- a/Tests/GzipTests.swift +++ b/Tests/GzipTests.swift @@ -11,12 +11,10 @@ class GzipTests: XCTestCase { private static let testType: String = "gz" func header(test testName: String, mtime: Int) throws { - guard let testURL = Constants.url(forTest: testName, withType: GzipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: GzipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let testGzipHeader = try GzipHeader(archive: testData) XCTAssertEqual(testGzipHeader.compressionMethod, .deflate, "Incorrect compression method.") @@ -28,21 +26,17 @@ class GzipTests: XCTestCase { } func unarchive(test testName: String) throws { - guard let testURL = Constants.url(forTest: testName, withType: GzipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: GzipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try? GzipArchive.unarchive(archive: testData) - guard let answerURL = Constants.url(forAnswer: testName) else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: testName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") #if PERF_TESTS @@ -54,13 +48,11 @@ class GzipTests: XCTestCase { } func archive(test testName: String) throws { - guard let answerURL = Constants.url(forAnswer: testName) else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: testName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - // Options for archiving. let mtimeDate = Date(timeIntervalSinceNow: 0.0) let mtime = Double(Int(mtimeDate.timeIntervalSince1970)) @@ -139,12 +131,10 @@ class GzipTests: XCTestCase { } func testMultiUnarchive() throws { - guard let testURL = Constants.url(forTest: "test_multi", withType: GzipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_multi", withType: GzipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let members = try GzipArchive.multiUnarchive(archive: testData) XCTAssertEqual(members.count, 4) @@ -154,24 +144,20 @@ class GzipTests: XCTestCase { XCTAssertEqual(header.fileName, "test\(i).answer") let data = members[i - 1].data - guard let answerURL = Constants.url(forAnswer: "test\(i)") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test\(i)") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(data, answerData) } } func testMultiUnarchiveRedundant() throws { - guard let testURL = Constants.url(forTest: "test1", withType: GzipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test1", withType: GzipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let members = try GzipArchive.multiUnarchive(archive: testData) XCTAssertEqual(members.count, 1) @@ -180,13 +166,11 @@ class GzipTests: XCTestCase { XCTAssertEqual(header.fileName, "test1.answer") let data = members[0].data - guard let answerURL = Constants.url(forAnswer: "test1") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test1") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(data, answerData) } diff --git a/Tests/LzmaTests.swift b/Tests/LzmaTests.swift index 71f4f299..7c74c450 100644 --- a/Tests/LzmaTests.swift +++ b/Tests/LzmaTests.swift @@ -11,21 +11,17 @@ class LzmaTests: XCTestCase { private static let testType: String = "lzma" func perform(test testName: String) throws { - guard let testURL = Constants.url(forTest: testName, withType: LzmaTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: LzmaTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try LZMA.decompress(data: testData) - guard let answerURL = Constants.url(forAnswer: "test8") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test8") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") } diff --git a/Tests/TarTests.swift b/Tests/TarTests.swift index 0b0cee2e..5aeec247 100644 --- a/Tests/TarTests.swift +++ b/Tests/TarTests.swift @@ -11,12 +11,10 @@ class TarTests: XCTestCase { private static let testType: String = "tar" func test() throws { - guard let testURL = Constants.url(forTest: "test", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let result = try TarContainer.open(container: testData) XCTAssertEqual(result.count, 1) @@ -27,25 +25,21 @@ class TarTests: XCTestCase { } func testPax() throws { - guard let testURL = Constants.url(forTest: "full_test", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "full_test", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let result = try TarContainer.open(container: testData) XCTAssertEqual(result.count, 5) for entry in result { let name = entry.info.name.components(separatedBy: ".")[0] - guard let answerURL = Constants.url(forAnswer: name) else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: name) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entry.data, answerData) XCTAssertEqual(entry.info.type, .regular) XCTAssertNotNil(entry.info.accessTime) @@ -55,20 +49,16 @@ class TarTests: XCTestCase { func testFormats() throws { let formatTestNames = ["test_gnu", "test_oldgnu", "test_pax", "test_ustar", "test_v7"] - guard let answerURL = Constants.url(forAnswer: "test1") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test1") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - for testName in formatTestNames { - guard let testURL = Constants.url(forTest: testName, withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let result = try TarContainer.open(container: testData) XCTAssertEqual(result.count, 1) @@ -83,12 +73,10 @@ class TarTests: XCTestCase { let formatTestNames = ["long_test_gnu", "long_test_oldgnu", "long_test_pax"] for testName in formatTestNames { - guard let testURL = Constants.url(forTest: testName, withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let result = try TarContainer.open(container: testData) XCTAssertEqual(result.count, 6) @@ -96,12 +84,10 @@ class TarTests: XCTestCase { } func testWinContainer() throws { - guard let testURL = Constants.url(forTest: "test_win", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_win", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try TarContainer.open(container: testData) XCTAssertEqual(entries.count, 2) @@ -118,12 +104,10 @@ class TarTests: XCTestCase { } func testEmptyFile() throws { - guard let testURL = Constants.url(forTest: "test_empty_file", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_file", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try TarContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -134,12 +118,10 @@ class TarTests: XCTestCase { } func testEmptyDirectory() throws { - guard let testURL = Constants.url(forTest: "test_empty_dir", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_dir", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try TarContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -150,25 +132,21 @@ class TarTests: XCTestCase { } func testEmptyContainer() throws { - guard let testURL = Constants.url(forTest: "test_empty_cont", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_cont", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try TarContainer.open(container: testData) XCTAssertEqual(entries.isEmpty, true) } func testBigContainer() throws { - guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: TarTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "SWCompressionSourceCode", withType: TarTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS _ = try TarContainer.open(container: testData) #else diff --git a/Tests/XzTests.swift b/Tests/XzTests.swift index e096bcf6..d032983b 100644 --- a/Tests/XzTests.swift +++ b/Tests/XzTests.swift @@ -11,21 +11,17 @@ class XZTests: XCTestCase { private static let testType: String = "xz" func perform(test testName: String) throws { - guard let testURL = Constants.url(forTest: testName, withType: XZTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: XZTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try XZArchive.unarchive(archive: testData) - guard let answerURL = Constants.url(forAnswer: testName) else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: testName) else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") #if PERF_TESTS @@ -75,23 +71,21 @@ class XZTests: XCTestCase { func testMultiStreamNoPadding() throws { // Doesn't contain any padding. - guard let testURL = Constants.url(forTest: "test_multi", withType: XZTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_multi", withType: XZTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try XZArchive.unarchive(archive: testData) let splitDecompressedData = try XZArchive.splitUnarchive(archive: testData) var answerData = Data() for i in 1...4 { - guard let answerURL = Constants.url(forAnswer: "test\(i)") else { - XCTFail("Unable to get answer's URL.") + guard let currentAnswerData = Constants.data(forAnswer: "test\(i)") else { + XCTFail("Unable to get answer data.") return } - let currentAnswerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) answerData.append(currentAnswerData) XCTAssertEqual(splitDecompressedData[i - 1], currentAnswerData) } @@ -105,23 +99,21 @@ class XZTests: XCTestCase { // Third - 8 bytes. // At the end - 4 bytes. - guard let testURL = Constants.url(forTest: "test_multi_pad", withType: XZTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_multi_pad", withType: XZTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try XZArchive.unarchive(archive: testData) let splitDecompressedData = try XZArchive.splitUnarchive(archive: testData) var answerData = Data() for i in 1...4 { - guard let answerURL = Constants.url(forAnswer: "test\(i)") else { - XCTFail("Unable to get answer's URL.") + guard let currentAnswerData = Constants.data(forAnswer: "test\(i)") else { + XCTFail("Unable to get answer data.") return } - let currentAnswerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) answerData.append(currentAnswerData) XCTAssertEqual(splitDecompressedData[i - 1], currentAnswerData) } diff --git a/Tests/ZipTests.swift b/Tests/ZipTests.swift index 335fa56d..ec55219a 100644 --- a/Tests/ZipTests.swift +++ b/Tests/ZipTests.swift @@ -11,13 +11,11 @@ class ZipTests: XCTestCase { private static let testType: String = "zip" func testBigContainer() throws { - guard let testURL = Constants.url(forTest: "SWCompressionSourceCode", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "SWCompressionSourceCode", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) - #if LONG_TESTS _ = try ZipContainer.open(container: testData) #else @@ -26,36 +24,30 @@ class ZipTests: XCTestCase { } func testZip64() throws { - guard let testURL = Constants.url(forTest: "TestZip64", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "TestZip64", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 6) } func testDataDescriptor() throws { - guard let testURL = Constants.url(forTest: "TestDataDescriptor", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "TestDataDescriptor", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 6) } func testUnicode() throws { - guard let testURL = Constants.url(forTest: "TestUnicode", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "TestUnicode", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -65,58 +57,48 @@ class ZipTests: XCTestCase { } func testZipLZMA() throws { - guard let testURL = Constants.url(forTest: "test_zip_lzma", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_zip_lzma", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test4.answer") XCTAssertEqual(entries[0].info.type, .regular) - guard let answerURL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].data, answerData) } func testZipBZip2() throws { - guard let testURL = Constants.url(forTest: "test_zip_bzip2", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_zip_bzip2", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) XCTAssertEqual(entries[0].info.name, "test4.answer") XCTAssertEqual(entries[0].info.type, .regular) - guard let answerURL = Constants.url(forAnswer: "test4") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test4") else { + XCTFail("Unable to get answer data.") return } - let answerData = try? Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(entries[0].data, answerData) } func testWinContainer() throws { - guard let testURL = Constants.url(forTest: "test_win", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_win", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 2) @@ -133,12 +115,10 @@ class ZipTests: XCTestCase { } func testEmptyFile() throws { - guard let testURL = Constants.url(forTest: "test_empty_file", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_file", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -149,12 +129,10 @@ class ZipTests: XCTestCase { } func testEmptyDirectory() throws { - guard let testURL = Constants.url(forTest: "test_empty_dir", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_dir", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.count, 1) @@ -165,12 +143,10 @@ class ZipTests: XCTestCase { } func testEmptyContainer() throws { - guard let testURL = Constants.url(forTest: "test_empty_cont", withType: ZipTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "test_empty_cont", withType: ZipTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let entries = try ZipContainer.open(container: testData) XCTAssertEqual(entries.isEmpty, true) diff --git a/Tests/ZlibTests.swift b/Tests/ZlibTests.swift index c9b94358..9317c028 100644 --- a/Tests/ZlibTests.swift +++ b/Tests/ZlibTests.swift @@ -13,12 +13,10 @@ class ZlibTests: XCTestCase { func testZlib() throws { let testName = "test" - guard let testURL = Constants.url(forTest: testName, withType: ZlibTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: testName, withType: ZlibTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let testZlibHeader = try ZlibHeader(archive: testData) XCTAssertEqual(testZlibHeader.compressionMethod, .deflate, "Incorrect compression method.") @@ -27,31 +25,25 @@ class ZlibTests: XCTestCase { } func testZlibFull() throws { - guard let testURL = Constants.url(forTest: "random_file", withType: ZlibTests.testType) else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forTest: "random_file", withType: ZlibTests.testType) else { + XCTFail("Unable to get test data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let decompressedData = try ZlibArchive.unarchive(archive: testData) - guard let answerURL = Constants.url(forAnswer: "test9") else { - XCTFail("Unable to get answer's URL.") + guard let answerData = Constants.data(forAnswer: "test9") else { + XCTFail("Unable to get answer data.") return } - let answerData = try Data(contentsOf: answerURL, options: .mappedIfSafe) - XCTAssertEqual(decompressedData, answerData, "Unarchiving was incorrect") } func testCreateZlib() throws { - guard let testURL = Constants.url(forAnswer: "test9") else { - XCTFail("Unable to get test's URL.") + guard let testData = Constants.data(forAnswer: "test9") else { + XCTFail("Unable to get answer data.") return } - - let testData = try Data(contentsOf: testURL, options: .mappedIfSafe) let archiveData = ZlibArchive.archive(data: testData) let reextractedData = try ZlibArchive.unarchive(archive: archiveData) From a603afc0eeafa45cd2349c250e69dfce69fe3b56 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 18:46:57 +0300 Subject: [PATCH 04/38] Rename some zip tests for consistency --- SWCompression.xcodeproj/project.pbxproj | 24 ++++++++++++------------ Tests/Test Files | 2 +- Tests/ZipTests.swift | 6 +++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index e6503577..f859370b 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -302,7 +302,7 @@ 069DCEA31EB64D0300ADC374 /* test8.answer in Resources */ = {isa = PBXBuildFile; fileRef = 069DCE9A1EB64D0300ADC374 /* test8.answer */; }; 069DCEA41EB64D0300ADC374 /* test9.answer in Resources */ = {isa = PBXBuildFile; fileRef = 069DCE9B1EB64D0300ADC374 /* test9.answer */; }; 069EBC371F0837B7008D5EF3 /* test_zip_lzma.zip in Resources */ = {isa = PBXBuildFile; fileRef = 069EBC361F0837B7008D5EF3 /* test_zip_lzma.zip */; }; - 069F27701EDA0D5E00736269 /* TestUnicode.zip in Resources */ = {isa = PBXBuildFile; fileRef = 069F276F1EDA0D5E00736269 /* TestUnicode.zip */; }; + 069F27701EDA0D5E00736269 /* test_unicode.zip in Resources */ = {isa = PBXBuildFile; fileRef = 069F276F1EDA0D5E00736269 /* test_unicode.zip */; }; 06A1727E1FA5C0D90048A89C /* LZMADecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1727D1FA5C0D90048A89C /* LZMADecoder.swift */; }; 06A1727F1FA5C0D90048A89C /* LZMADecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1727D1FA5C0D90048A89C /* LZMADecoder.swift */; }; 06A172801FA5C0D90048A89C /* LZMADecoder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06A1727D1FA5C0D90048A89C /* LZMADecoder.swift */; }; @@ -365,8 +365,8 @@ 06BB8F321E0C2C720079FB9E /* LZMA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */; }; 06BB8F331E0C2C720079FB9E /* LZMA2.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */; }; 06BD0D231E3D0C630054AA5C /* SWCompressionSourceCode.zip in Resources */ = {isa = PBXBuildFile; fileRef = 06BD0D201E3D0C630054AA5C /* SWCompressionSourceCode.zip */; }; - 06BD0D241E3D0C630054AA5C /* TestDataDescriptor.zip in Resources */ = {isa = PBXBuildFile; fileRef = 06BD0D211E3D0C630054AA5C /* TestDataDescriptor.zip */; }; - 06BD0D251E3D0C630054AA5C /* TestZip64.zip in Resources */ = {isa = PBXBuildFile; fileRef = 06BD0D221E3D0C630054AA5C /* TestZip64.zip */; }; + 06BD0D241E3D0C630054AA5C /* test_data_descriptor.zip in Resources */ = {isa = PBXBuildFile; fileRef = 06BD0D211E3D0C630054AA5C /* test_data_descriptor.zip */; }; + 06BD0D251E3D0C630054AA5C /* test_zip64.zip in Resources */ = {isa = PBXBuildFile; fileRef = 06BD0D221E3D0C630054AA5C /* test_zip64.zip */; }; 06BE1AD21DB410F100EE0F59 /* SWCompression.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BE1AC81DB410F100EE0F59 /* SWCompression.framework */; }; 06CC187D1DE35269003532F5 /* test.zlib in Resources */ = {isa = PBXBuildFile; fileRef = 06CC185F1DE35269003532F5 /* test.zlib */; }; 06CC187F1DE35607003532F5 /* DeflateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06CC187E1DE35607003532F5 /* DeflateTests.swift */; }; @@ -606,7 +606,7 @@ 069DCE9A1EB64D0300ADC374 /* test8.answer */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test8.answer; sourceTree = ""; }; 069DCE9B1EB64D0300ADC374 /* test9.answer */ = {isa = PBXFileReference; lastKnownFileType = file; path = test9.answer; sourceTree = ""; }; 069EBC361F0837B7008D5EF3 /* test_zip_lzma.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_zip_lzma.zip; sourceTree = ""; }; - 069F276F1EDA0D5E00736269 /* TestUnicode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = TestUnicode.zip; sourceTree = ""; }; + 069F276F1EDA0D5E00736269 /* test_unicode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_unicode.zip; sourceTree = ""; }; 06A1727D1FA5C0D90048A89C /* LZMADecoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LZMADecoder.swift; sourceTree = ""; }; 06A172821FA5D3770048A89C /* LZMA2Decoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LZMA2Decoder.swift; sourceTree = ""; }; 06A172871FA5DC460048A89C /* LZMAConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LZMAConstants.swift; sourceTree = ""; }; @@ -624,8 +624,8 @@ 06BAC5931F8CFF28002443F4 /* ZipEntryInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZipEntryInfo.swift; sourceTree = ""; }; 06BB8F2F1E0C2C720079FB9E /* LZMA2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LZMA2.swift; sourceTree = ""; }; 06BD0D201E3D0C630054AA5C /* SWCompressionSourceCode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = SWCompressionSourceCode.zip; sourceTree = ""; }; - 06BD0D211E3D0C630054AA5C /* TestDataDescriptor.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = TestDataDescriptor.zip; sourceTree = ""; }; - 06BD0D221E3D0C630054AA5C /* TestZip64.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = TestZip64.zip; sourceTree = ""; }; + 06BD0D211E3D0C630054AA5C /* test_data_descriptor.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_data_descriptor.zip; sourceTree = ""; }; + 06BD0D221E3D0C630054AA5C /* test_zip64.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; path = test_zip64.zip; sourceTree = ""; }; 06BE1AC81DB410F100EE0F59 /* SWCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 06BE1AD11DB410F100EE0F59 /* SWCompressionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SWCompressionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 06BE1AD81DB410F100EE0F59 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -925,10 +925,10 @@ 062313621F33B4280070A574 /* test_win.zip */, 0685E6231F123F0D008655AA /* test_zip_bzip2.zip */, 069EBC361F0837B7008D5EF3 /* test_zip_lzma.zip */, - 069F276F1EDA0D5E00736269 /* TestUnicode.zip */, + 069F276F1EDA0D5E00736269 /* test_unicode.zip */, 06BD0D201E3D0C630054AA5C /* SWCompressionSourceCode.zip */, - 06BD0D211E3D0C630054AA5C /* TestDataDescriptor.zip */, - 06BD0D221E3D0C630054AA5C /* TestZip64.zip */, + 06BD0D211E3D0C630054AA5C /* test_data_descriptor.zip */, + 06BD0D221E3D0C630054AA5C /* test_zip64.zip */, ); path = ZIP; sourceTree = ""; @@ -1362,7 +1362,7 @@ 0660C1321F3B3E6B002D42E4 /* test_7z_bzip2.7z in Resources */, 06D07AB01EB64EE800BC8C65 /* test5.xz in Resources */, 0623135D1F33B41B0070A574 /* test_empty_file.tar in Resources */, - 06BD0D241E3D0C630054AA5C /* TestDataDescriptor.zip in Resources */, + 06BD0D241E3D0C630054AA5C /* test_data_descriptor.zip in Resources */, 0691B9401EBE3E100037EE58 /* test.tar in Resources */, 062313681F33B4510070A574 /* test_win.7z in Resources */, 062313661F33B4280070A574 /* test_win.zip in Resources */, @@ -1375,7 +1375,7 @@ 06D07AB41EB64EE800BC8C65 /* test9.xz in Resources */, 06991C701E05A9F70030FF07 /* test9.lzma in Resources */, 06D3456A1F102E740057173F /* test_oldgnu.tar in Resources */, - 06BD0D251E3D0C630054AA5C /* TestZip64.zip in Resources */, + 06BD0D251E3D0C630054AA5C /* test_zip64.zip in Resources */, 06DD48A71F2D24EF00F45599 /* SWCompressionSourceCode.7z in Resources */, 066348D41F35E7F500F3DC7D /* test_all_timestamps.7z in Resources */, 066348CF1F35E54700F3DC7D /* test_multi_blocks.7z in Resources */, @@ -1435,7 +1435,7 @@ 06CC187D1DE35269003532F5 /* test.zlib in Resources */, 06D07A9B1EB64E7A00BC8C65 /* test3.bz2 in Resources */, 069DCE9C1EB64D0300ADC374 /* test1.answer in Resources */, - 069F27701EDA0D5E00736269 /* TestUnicode.zip in Resources */, + 069F27701EDA0D5E00736269 /* test_unicode.zip in Resources */, 069AC2181E02DE490041AC13 /* test8.lzma in Resources */, 068B36791ED0AC050016269E /* full_test.tar in Resources */, 069DCE8F1EB64B1500ADC374 /* test7.gz in Resources */, diff --git a/Tests/Test Files b/Tests/Test Files index 7e413e44..09379037 160000 --- a/Tests/Test Files +++ b/Tests/Test Files @@ -1 +1 @@ -Subproject commit 7e413e44cf3a94559f6a8e2236eeef9cefd88b0d +Subproject commit 0937903714057b05a8846b4d72c9d028f471c1b8 diff --git a/Tests/ZipTests.swift b/Tests/ZipTests.swift index ec55219a..0cbb33db 100644 --- a/Tests/ZipTests.swift +++ b/Tests/ZipTests.swift @@ -24,7 +24,7 @@ class ZipTests: XCTestCase { } func testZip64() throws { - guard let testData = Constants.data(forTest: "TestZip64", withType: ZipTests.testType) else { + guard let testData = Constants.data(forTest: "test_zip64", withType: ZipTests.testType) else { XCTFail("Unable to get test data.") return } @@ -34,7 +34,7 @@ class ZipTests: XCTestCase { } func testDataDescriptor() throws { - guard let testData = Constants.data(forTest: "TestDataDescriptor", withType: ZipTests.testType) else { + guard let testData = Constants.data(forTest: "test_data_descriptor", withType: ZipTests.testType) else { XCTFail("Unable to get test data.") return } @@ -44,7 +44,7 @@ class ZipTests: XCTestCase { } func testUnicode() throws { - guard let testData = Constants.data(forTest: "TestUnicode", withType: ZipTests.testType) else { + guard let testData = Constants.data(forTest: "test_unicode", withType: ZipTests.testType) else { XCTFail("Unable to get test data.") return } From e98b42bf7a9001fe81ff607a61426f9c551e9f24 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 18:48:17 +0300 Subject: [PATCH 05/38] Move zlib test files into subdirectory --- SWCompression.xcodeproj/project.pbxproj | 12 ++++++++++-- Tests/Test Files | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index f859370b..c08f537e 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -916,6 +916,15 @@ path = Service; sourceTree = ""; }; + 06A5918B1FC1DEFC00F59533 /* Zlib */ = { + isa = PBXGroup; + children = ( + 06CC185F1DE35269003532F5 /* test.zlib */, + 06B374CA1E0EECD500064853 /* random_file.zlib */, + ); + path = Zlib; + sourceTree = ""; + }; 06BD0D1F1E3D0C630054AA5C /* ZIP */ = { isa = PBXGroup; children = ( @@ -1081,8 +1090,7 @@ 06BD0D1F1E3D0C630054AA5C /* ZIP */, 0691B93E1EBE3E100037EE58 /* TAR */, 064F722D1F1E63D800017297 /* 7z */, - 06CC185F1DE35269003532F5 /* test.zlib */, - 06B374CA1E0EECD500064853 /* random_file.zlib */, + 06A5918B1FC1DEFC00F59533 /* Zlib */, ); path = "Test Files"; sourceTree = ""; diff --git a/Tests/Test Files b/Tests/Test Files index 09379037..f387b8fa 160000 --- a/Tests/Test Files +++ b/Tests/Test Files @@ -1 +1 @@ -Subproject commit 0937903714057b05a8846b4d72c9d028f471c1b8 +Subproject commit f387b8fa8d15831adaeab7e2c2c94d35b91a245a From 733b7a26b389fbd8e38f2a5f06eacfb15f6e1d46 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 20:05:21 +0300 Subject: [PATCH 06/38] Remove empty_file special case in getting test data --- Tests/Constants.swift | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Tests/Constants.swift b/Tests/Constants.swift index 35d3cebe..0128fd45 100644 --- a/Tests/Constants.swift +++ b/Tests/Constants.swift @@ -12,7 +12,6 @@ struct Constants { - test2: text file with copyright free song lyrics from http://www.freesonglyrics.co.uk/lyrics13.html - test3: text file with random string from https://www.random.org/strings/ - test4: text file with string "I'm a tester" repeated several times. - - test5: empty file. // TODO: Rename to empty_file - test6: file with size of 5MB containing nulls from /dev/null. - test7: file with size of 5MB containing random bytes from /dev/urandom. - test8: text file from lzma_specification. @@ -32,10 +31,6 @@ struct Constants { } static func data(forAnswer name: String) -> Data? { - if name == "empty_file" { - return Data() - } - if let url = Constants.url(forAnswer: name) { return try? Data(contentsOf: url, options: .mappedIfSafe) } else { From 8aced32379ad85d1f1f51cc4f47f969e2e281f99 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 20:05:45 +0300 Subject: [PATCH 07/38] Extract function for calculating Deflate's static huffman block size --- Sources/Deflate/Deflate+Compress.swift | 34 ++++++++++++++------------ 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/Sources/Deflate/Deflate+Compress.swift b/Sources/Deflate/Deflate+Compress.swift index 294567ab..a425ccc7 100644 --- a/Sources/Deflate/Deflate+Compress.swift +++ b/Sources/Deflate/Deflate+Compress.swift @@ -29,8 +29,25 @@ extension Deflate: CompressionAlgorithm { let uncompBlockSize = 1 + 2 + 2 + bytes.count // Header, length, n-length and data. // Static Huffman size is more complicated... + let staticHuffmanBlockSize = staticHuffmanBitSize(bldCodes.stats) + + // Since `length` of uncompressed block is 16-bit integer, + // there is a limitation on size of uncompressed block. + // Falling back to static Huffman encoding in case of big uncompressed block is a band-aid solution. + if uncompBlockSize <= staticHuffmanBlockSize && uncompBlockSize <= 65535 { + // If according to our calculations static huffman will not make output smaller than input, + // we fallback to creating uncompressed block. + // In this case dynamic Huffman encoding can be efficient. + // TODO: Implement dynamic Huffman code! + return Data(bytes: Deflate.createUncompressedBlock(bytes)) + } else { + return Data(bytes: Deflate.encodeHuffmanBlock(bldCodes.codes)) + } + } + + private static func staticHuffmanBitSize(_ stats: [Int]) -> Int { var bitsCount = 3 // Three bits for block's header. - for (symbol, symbolCount) in bldCodes.stats.enumerated() { + for (symbol, symbolCount) in stats.enumerated() { let codeSize: Int // There are extra bits for some codes. let extraBitsCount: Int @@ -55,20 +72,7 @@ extension Deflate: CompressionAlgorithm { } bitsCount += (symbolCount * (codeSize + extraBitsCount)) } - let staticHuffmanBlockSize = bitsCount % 8 == 0 ? bitsCount / 8 : bitsCount / 8 + 1 - - // Since `length` of uncompressed block is 16-bit integer, - // there is a limitation on size of uncompressed block. - // Falling back to static Huffman encoding in case of big uncompressed block is a band-aid solution. - if uncompBlockSize <= staticHuffmanBlockSize && uncompBlockSize <= 65535 { - // If according to our calculations static huffman will not make output smaller than input, - // we fallback to creating uncompressed block. - // In this case dynamic Huffman encoding can be efficient. - // TODO: Implement dynamic Huffman code! - return Data(bytes: Deflate.createUncompressedBlock(bytes)) - } else { - return Data(bytes: Deflate.encodeHuffmanBlock(bldCodes.codes)) - } + return bitsCount % 8 == 0 ? bitsCount / 8 : bitsCount / 8 + 1 } private static func createUncompressedBlock(_ bytes: [UInt8]) -> [UInt8] { From a8e8d6b67fd6f29eddcda82c3162f344e563a4b1 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 19 Nov 2017 20:07:41 +0300 Subject: [PATCH 08/38] Add new test results --- Tests/Results.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Tests/Results.md b/Tests/Results.md index eae98d94..16b2e67a 100644 --- a/Tests/Results.md +++ b/Tests/Results.md @@ -37,12 +37,14 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.000|0.000|0.054|3.268| |3.3.0|0.000|0.002|0.002|0.000|0.000|0.051|3.948| |3.4.0|0.000|0.003|0.002|0.000|0.000|0.051|4.116| +|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.096|3.618| ### BZip2 (Compression) |Version|test1|test2|test3|test4|test5|test6|test7| |---|---|---|---|---|---|---|---| |3.4.0|0.000|0.007|0.004|0.001|0.000|0.245|39.653| +|4.0.1-dev|0.000|0.007|0.004|0.001|0.000|0.453|42.732| ### Deflate (Decompression) @@ -60,6 +62,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.001|0.001|0.001|0.000|0.000|0.045|0.210| |3.3.0|0.001|0.002|0.001|0.001|0.001|0.043|0.263| |3.4.0|0.000|0.002|0.001|0.000|0.000|0.073|0.284| +|4.0.1-dev|0.000|0.002|0.001|0.000|0.000|0.146|0.388| ### Deflate (Compression) @@ -73,6 +76,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.001|0.001|0.031|2.539| |3.3.0|0.001|0.002|0.002|0.001|0.001|0.032|2.542| |3.4.0|0.000|0.001|0.001|0.000|0.000|0.024|1.451| +|4.0.1-dev|0.000|0.001|0.001|0.000|0.000|0.024|1.549| ### XZ (LZMA/LZMA2) (Decompression) @@ -88,6 +92,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.000|0.000|0.069|0.252| |3.3.0|0.000|0.002|0.002|0.000|0.000|0.070|0.249| |3.4.0|0.000|0.002|0.002|0.000|0.000|0.072|0.262| +|4.0.1-dev|0.000|0.002|0.002|0.001|0.000|0.131|0.319| ## Debug From ea8a78045e8e94758960df04edba7292be6d027d Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 00:06:17 +0300 Subject: [PATCH 09/38] Rearrange tests in xcode project so they show in the order they are executed --- SWCompression.xcodeproj/project.pbxproj | 20 ++++++++++---------- Tests/{7zTests.swift => SevenZipTests.swift} | 0 2 files changed, 10 insertions(+), 10 deletions(-) rename Tests/{7zTests.swift => SevenZipTests.swift} (100%) diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index c08f537e..4a9741b4 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -163,7 +163,7 @@ 064F722B1F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; }; 064F722C1F1E638A00017297 /* 7zError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72281F1E638A00017297 /* 7zError.swift */; }; 064F722F1F1E63D800017297 /* test1.7z in Resources */ = {isa = PBXBuildFile; fileRef = 064F722E1F1E63D800017297 /* test1.7z */; }; - 064F72311F1E63E200017297 /* 7zTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72301F1E63E200017297 /* 7zTests.swift */; }; + 064F72311F1E63E200017297 /* SevenZipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 064F72301F1E63E200017297 /* SevenZipTests.swift */; }; 0651461E1FA8E004007F83F4 /* XZStreamHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0651461D1FA8E004007F83F4 /* XZStreamHeader.swift */; }; 0651461F1FA8E004007F83F4 /* XZStreamHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0651461D1FA8E004007F83F4 /* XZStreamHeader.swift */; }; 065146201FA8E004007F83F4 /* XZStreamHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0651461D1FA8E004007F83F4 /* XZStreamHeader.swift */; }; @@ -536,7 +536,7 @@ 064F72231F1E5D4400017297 /* 7zContainer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = 7zContainer.swift; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 064F72281F1E638A00017297 /* 7zError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zError.swift; sourceTree = ""; }; 064F722E1F1E63D800017297 /* test1.7z */ = {isa = PBXFileReference; lastKnownFileType = file; path = test1.7z; sourceTree = ""; }; - 064F72301F1E63E200017297 /* 7zTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = 7zTests.swift; sourceTree = ""; }; + 064F72301F1E63E200017297 /* SevenZipTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SevenZipTests.swift; sourceTree = ""; }; 0651461D1FA8E004007F83F4 /* XZStreamHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XZStreamHeader.swift; sourceTree = ""; }; 065146221FA8E20C007F83F4 /* XZBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XZBlock.swift; sourceTree = ""; }; 0651FEC11F8E2E9100C49646 /* ContainerEntryType+Tar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ContainerEntryType+Tar.swift"; sourceTree = ""; }; @@ -986,17 +986,17 @@ isa = PBXGroup; children = ( 06CC183D1DE35269003532F5 /* Test Files */, - 069AC2111E02DDAF0041AC13 /* LzmaTests.swift */, - 06E2347F1E069ABD00F18798 /* XzTests.swift */, - 0680E1B41DDA4075005C05EB /* BZip2Tests.swift */, + 061FCE2C1DBCC6A30052F7BE /* Constants.swift */, 063D0CA11F5B17EB00D3464C /* BZip2CompressionTests.swift */, + 0680E1B41DDA4075005C05EB /* BZip2Tests.swift */, 06CC187E1DE35607003532F5 /* DeflateTests.swift */, 0680E1B21DDA3D0A005C05EB /* GzipTests.swift */, - 0680E1B01DDA2D7C005C05EB /* ZlibTests.swift */, - 0675183C1E2A883600D16354 /* ZipTests.swift */, + 069AC2111E02DDAF0041AC13 /* LzmaTests.swift */, + 064F72301F1E63E200017297 /* SevenZipTests.swift */, 0696E5C51ED0B22F00921D4D /* TarTests.swift */, - 064F72301F1E63E200017297 /* 7zTests.swift */, - 061FCE2C1DBCC6A30052F7BE /* Constants.swift */, + 06E2347F1E069ABD00F18798 /* XzTests.swift */, + 0675183C1E2A883600D16354 /* ZipTests.swift */, + 0680E1B01DDA2D7C005C05EB /* ZlibTests.swift */, 06BE1AD81DB410F100EE0F59 /* Info.plist */, ); path = Tests; @@ -1846,7 +1846,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 064F72311F1E63E200017297 /* 7zTests.swift in Sources */, + 064F72311F1E63E200017297 /* SevenZipTests.swift in Sources */, 0680E1B51DDA4076005C05EB /* BZip2Tests.swift in Sources */, 06CC187F1DE35607003532F5 /* DeflateTests.swift in Sources */, 061FCE2D1DBCC6A30052F7BE /* Constants.swift in Sources */, diff --git a/Tests/7zTests.swift b/Tests/SevenZipTests.swift similarity index 100% rename from Tests/7zTests.swift rename to Tests/SevenZipTests.swift From 0826ccc5ef4af3e0959d06ef169da1248b77e904 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 00:06:39 +0300 Subject: [PATCH 10/38] Use smaller uint dwp functions where possible --- Sources/GZip/GzipArchive.swift | 2 +- Sources/GZip/GzipHeader.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/GZip/GzipArchive.swift b/Sources/GZip/GzipArchive.swift index a9b5d6a3..43adfa33 100644 --- a/Sources/GZip/GzipArchive.swift +++ b/Sources/GZip/GzipArchive.swift @@ -82,7 +82,7 @@ public class GzipArchive: Archive { bitReader.align() let crc32 = bitReader.uint32() - let isize = bitReader.uint64(count: 4) + let isize = bitReader.uint32() guard UInt64(memberData.count) % (UInt64(1) << 32) == isize else { throw GzipError.wrongISize } return Member(header: header, data: memberData, diff --git a/Sources/GZip/GzipHeader.swift b/Sources/GZip/GzipHeader.swift index 81b475d5..b35f27e6 100644 --- a/Sources/GZip/GzipHeader.swift +++ b/Sources/GZip/GzipHeader.swift @@ -136,7 +136,7 @@ public struct GzipHeader { // Some archives may contain 2-bytes checksum if flags.contains(.fhcrc) { // Note: it is not actual CRC-16, it is just two least significant bytes of CRC-32. - let crc16 = pointerData.uint32(count: 2) + let crc16 = pointerData.uint16() guard CheckSums.crc32(headerBytes) & 0xFFFF == crc16 else { throw GzipError.wrongHeaderCRC } } } From 98fd2e4d1e0a650c4ee230c36c0bdfbd71b9ff64 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 20:55:17 +0300 Subject: [PATCH 11/38] Remove reverseBytes function and use built-in byteSwapped property instead --- Sources/Common/Extensions.swift | 9 --------- Sources/Zlib/ZlibArchive.swift | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/Sources/Common/Extensions.swift b/Sources/Common/Extensions.swift index b8a12237..47dc9f1b 100644 --- a/Sources/Common/Extensions.swift +++ b/Sources/Common/Extensions.swift @@ -41,15 +41,6 @@ extension UInt32 { return Int(bitPattern: UInt(self)) } - func reverseBytes() -> UInt32 { - var result: UInt32 = 0 - for i: UInt32 in 0..<4 { - let byte = (self & (0xFF << (i * 8))) >> (i * 8) - result += byte << (8 * (3 - i)) - } - return result - } - } extension UInt64 { diff --git a/Sources/Zlib/ZlibArchive.swift b/Sources/Zlib/ZlibArchive.swift index 386d3402..fb5cafe6 100644 --- a/Sources/Zlib/ZlibArchive.swift +++ b/Sources/Zlib/ZlibArchive.swift @@ -30,7 +30,7 @@ public class ZlibArchive: Archive { let out = try Deflate.decompress(bitReader) bitReader.align() - let adler32 = bitReader.uint32().reverseBytes() + let adler32 = bitReader.uint32().byteSwapped guard CheckSums.adler32(out) == adler32 else { throw ZlibError.wrongAdler32(out) } return out From 7c6d6d22ffa40d53cd80a5b95cc10040f6fcd58e Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 20:56:28 +0300 Subject: [PATCH 12/38] Replace UInt extensions with one extension to UnsignedInteger --- Sources/Common/Extensions.swift | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/Sources/Common/Extensions.swift b/Sources/Common/Extensions.swift index 47dc9f1b..972aa72c 100644 --- a/Sources/Common/Extensions.swift +++ b/Sources/Common/Extensions.swift @@ -19,36 +19,11 @@ extension Data { } -extension UInt8 { +extension UnsignedInteger { func toInt() -> Int { - return Int(bitPattern: UInt(self)) + return Int(truncatingIfNeeded: self) } - -} - -extension UInt16 { - - func toInt() -> Int { - return Int(bitPattern: UInt(self)) - } - -} - -extension UInt32 { - - func toInt() -> Int { - return Int(bitPattern: UInt(self)) - } - -} - -extension UInt64 { - - func toInt() -> Int { - return Int(bitPattern: UInt(self)) - } - } extension Int { From 21a32f1d5a7df868affbf54b1f0c9de044e4046b Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 20:57:11 +0300 Subject: [PATCH 13/38] Add no-args uint functions to DWP and BitReader Tests shows that these functions are faster than functions with arguments. --- Sources/Common/BitReader.swift | 15 +++++++++++++++ Sources/Common/DataWithPointer.swift | 24 +++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/Sources/Common/BitReader.swift b/Sources/Common/BitReader.swift index 92677e33..3fc484a5 100644 --- a/Sources/Common/BitReader.swift +++ b/Sources/Common/BitReader.swift @@ -172,4 +172,19 @@ class BitReader: DataWithPointer { return super.uint16(count: count) } + override func uint64() -> UInt64 { + precondition(isAligned, "BitReader is not aligned.") + return super.uint64() + } + + override func uint32() -> UInt32 { + precondition(isAligned, "BitReader is not aligned.") + return super.uint32() + } + + override func uint16() -> UInt16 { + precondition(isAligned, "BitReader is not aligned.") + return super.uint16() + } + } diff --git a/Sources/Common/DataWithPointer.swift b/Sources/Common/DataWithPointer.swift index d307c50e..9e348f87 100644 --- a/Sources/Common/DataWithPointer.swift +++ b/Sources/Common/DataWithPointer.swift @@ -43,7 +43,7 @@ class DataWithPointer { return result } - func uint64(count: UInt64 = 8) -> UInt64 { + func uint64(count: UInt64) -> UInt64 { precondition(count <= 8, "UInt64 cannot store more than 8 bytes of data!") var result: UInt64 = 0 for i: UInt64 in 0.. UInt32 { + func uint64() -> UInt64 { + let result = self.data[self.index.. UInt32 { + let result = self.data[self.index.. UInt16 { + let result = self.data[self.index.. UInt32 { precondition(count <= 4, "UInt32 cannot store more than 4 bytes of data!") var result: UInt32 = 0 for i: UInt32 in 0.. UInt16 { + func uint16(count: UInt16) -> UInt16 { precondition(count <= 2, "UInt16 cannot store more than 2 bytes of data!") var result: UInt16 = 0 for i: UInt16 in 0.. Date: Wed, 22 Nov 2017 22:08:02 +0300 Subject: [PATCH 14/38] Remove dwp functions with count argument --- Sources/Common/BitReader.swift | 15 ----------- Sources/Common/DataWithPointer.swift | 30 ---------------------- Sources/ZIP/ZipCentralDirectoryEntry.swift | 8 +++--- Sources/ZIP/ZipContainer.swift | 10 +++++--- Sources/ZIP/ZipEndOfCentralDirectory.swift | 12 ++++----- Sources/ZIP/ZipLocalHeader.swift | 4 +-- 6 files changed, 19 insertions(+), 60 deletions(-) diff --git a/Sources/Common/BitReader.swift b/Sources/Common/BitReader.swift index 3fc484a5..4b5575a1 100644 --- a/Sources/Common/BitReader.swift +++ b/Sources/Common/BitReader.swift @@ -157,21 +157,6 @@ class BitReader: DataWithPointer { return super.bytes(count: count) } - override func uint64(count: UInt64 = 8) -> UInt64 { - precondition(isAligned, "BitReader is not aligned.") - return super.uint64(count: count) - } - - override func uint32(count: UInt32 = 4) -> UInt32 { - precondition(isAligned, "BitReader is not aligned.") - return super.uint32(count: count) - } - - override func uint16(count: UInt16 = 2) -> UInt16 { - precondition(isAligned, "BitReader is not aligned.") - return super.uint16(count: count) - } - override func uint64() -> UInt64 { precondition(isAligned, "BitReader is not aligned.") return super.uint64() diff --git a/Sources/Common/DataWithPointer.swift b/Sources/Common/DataWithPointer.swift index 9e348f87..29d7498c 100644 --- a/Sources/Common/DataWithPointer.swift +++ b/Sources/Common/DataWithPointer.swift @@ -43,16 +43,6 @@ class DataWithPointer { return result } - func uint64(count: UInt64) -> UInt64 { - precondition(count <= 8, "UInt64 cannot store more than 8 bytes of data!") - var result: UInt64 = 0 - for i: UInt64 in 0.. UInt64 { let result = self.data[self.index.. UInt32 { - precondition(count <= 4, "UInt32 cannot store more than 4 bytes of data!") - var result: UInt32 = 0 - for i: UInt32 in 0.. UInt16 { - precondition(count <= 2, "UInt16 cannot store more than 2 bytes of data!") - var result: UInt16 = 0 - for i: UInt16 in 0.. Date: Wed, 22 Nov 2017 22:15:02 +0300 Subject: [PATCH 15/38] Don't convert Data to UInt8 array in Deflate compression --- Sources/Deflate/Deflate+Compress.swift | 42 +++++++++++--------------- 1 file changed, 17 insertions(+), 25 deletions(-) diff --git a/Sources/Deflate/Deflate+Compress.swift b/Sources/Deflate/Deflate+Compress.swift index a425ccc7..fc6449ec 100644 --- a/Sources/Deflate/Deflate+Compress.swift +++ b/Sources/Deflate/Deflate+Compress.swift @@ -19,14 +19,12 @@ extension Deflate: CompressionAlgorithm { then static Huffman block will be created. */ public static func compress(data: Data) -> Data { - let bytes = data.toArray(type: UInt8.self) - - let bldCodes = Deflate.lengthEncode(bytes) + let bldCodes = Deflate.lengthEncode(data) // Let's count possible sizes according to statistics. // Uncompressed block size calculation is simple: - let uncompBlockSize = 1 + 2 + 2 + bytes.count // Header, length, n-length and data. + let uncompBlockSize = 1 + 2 + 2 + data.count // Header, length, n-length and data. // Static Huffman size is more complicated... let staticHuffmanBlockSize = staticHuffmanBitSize(bldCodes.stats) @@ -39,7 +37,7 @@ extension Deflate: CompressionAlgorithm { // we fallback to creating uncompressed block. // In this case dynamic Huffman encoding can be efficient. // TODO: Implement dynamic Huffman code! - return Data(bytes: Deflate.createUncompressedBlock(bytes)) + return Deflate.createUncompressedBlock(data) } else { return Data(bytes: Deflate.encodeHuffmanBlock(bldCodes.codes)) } @@ -75,7 +73,7 @@ extension Deflate: CompressionAlgorithm { return bitsCount % 8 == 0 ? bitsCount / 8 : bitsCount / 8 + 1 } - private static func createUncompressedBlock(_ bytes: [UInt8]) -> [UInt8] { + private static func createUncompressedBlock(_ data: Data) -> Data { let bitWriter = BitWriter(bitOrder: .reversed) // Write block header. @@ -87,16 +85,12 @@ extension Deflate: CompressionAlgorithm { bitWriter.finish() // Write data's length. - bitWriter.write(number: bytes.count, bitsCount: 16) + bitWriter.write(number: data.count, bitsCount: 16) // Write data's n-length. - bitWriter.write(number: bytes.count ^ (1 << 16 - 1), bitsCount: 16) - - var out = bitWriter.buffer + bitWriter.write(number: data.count ^ (1 << 16 - 1), bitsCount: 16) - // Write actual data. - for byte in bytes { - out.append(byte) - } + var out = Data(bytes: bitWriter.buffer) + out.append(data) return out } @@ -152,22 +146,20 @@ extension Deflate: CompressionAlgorithm { case lengthDistance(UInt16, UInt16) } - private static func lengthEncode(_ rawBytes: [UInt8]) -> (codes: [BLDCode], stats: [Int]) { + private static func lengthEncode(_ data: Data) -> (codes: [BLDCode], stats: [Int]) { var buffer: [BLDCode] = [] var inputIndex = 0 - /// Keys --- three-byte crc32, values --- positions in `rawBytes`. + /// Keys --- three-byte crc32, values --- positions in `data`. var dictionary = [UInt32: Int]() var stats = Array(repeating: 0, count: 316) // Last two bytes of input will be considered separately. // This also allows to use length encoding for arrays with size less than 3. - while inputIndex < rawBytes.count - 2 { - let byte = rawBytes[inputIndex] + while inputIndex < data.count - 2 { + let byte = data[inputIndex] - let threeByteCrc = CheckSums.crc32([rawBytes[inputIndex], - rawBytes[inputIndex + 1], - rawBytes[inputIndex + 2]]) + let threeByteCrc = CheckSums.crc32(data[inputIndex.. inputIndex { @@ -214,8 +206,8 @@ extension Deflate: CompressionAlgorithm { // For last two bytes there certainly will be no match. // Moreover, `threeByteCrc` cannot be computed, so we need to put them in as `.byte`s. - while inputIndex < rawBytes.count { - let byte = rawBytes[inputIndex] + while inputIndex < data.count { + let byte = data[inputIndex] buffer.append(BLDCode.byte(byte)) stats[byte.toInt()] += 1 inputIndex += 1 From 5d3a85944a02787e84c40e838ce1c2c69f39f727 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 22:23:57 +0300 Subject: [PATCH 16/38] Mark test7 for BZip2 as long --- Tests/BZip2Tests.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Tests/BZip2Tests.swift b/Tests/BZip2Tests.swift index 14460056..48fe2d79 100644 --- a/Tests/BZip2Tests.swift +++ b/Tests/BZip2Tests.swift @@ -56,10 +56,14 @@ class BZip2Tests: XCTestCase { try self.perform(test: "test6") } + #if LONG_TESTS + func test7BZip2() throws { try self.perform(test: "test7") } + #endif + func test8BZip2() throws { try self.perform(test: "test8") } From 1fa558f1a651856355aeafc6ea5ed835346ad2ba Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 22:24:26 +0300 Subject: [PATCH 17/38] Add toArray extension function with count argument --- Sources/Common/Extensions.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Sources/Common/Extensions.swift b/Sources/Common/Extensions.swift index 972aa72c..3bb3ca07 100644 --- a/Sources/Common/Extensions.swift +++ b/Sources/Common/Extensions.swift @@ -11,12 +11,16 @@ extension Data { return self.withUnsafeBytes { $0.pointee } } - func toArray(type: T.Type) -> [T] { + func toArray(type: T.Type, count: Int) -> [T] { return self.withUnsafeBytes { - [T](UnsafeBufferPointer(start: $0, count: self.count / MemoryLayout.size)) + [T](UnsafeBufferPointer(start: $0, count: count)) } } + func toArray(type: T.Type) -> [T] { + return self.toArray(type: type, count: self.count / MemoryLayout.size) + } + } extension UnsignedInteger { From d9954f47915aff943d67ab4ed22cc7bbccd31d0e Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 22:24:45 +0300 Subject: [PATCH 18/38] Use new toArray function in DWP.bytes --- Sources/Common/DataWithPointer.swift | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Sources/Common/DataWithPointer.swift b/Sources/Common/DataWithPointer.swift index 29d7498c..14e02208 100644 --- a/Sources/Common/DataWithPointer.swift +++ b/Sources/Common/DataWithPointer.swift @@ -35,11 +35,8 @@ class DataWithPointer { } func bytes(count: Int) -> [UInt8] { - var result: [UInt8] = Array(repeating: 0, count: count) - for i in 0.. Date: Wed, 22 Nov 2017 22:25:18 +0300 Subject: [PATCH 19/38] Mark several extension functions as inline-always --- Sources/Common/Extensions.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Sources/Common/Extensions.swift b/Sources/Common/Extensions.swift index 3bb3ca07..9f2228fb 100644 --- a/Sources/Common/Extensions.swift +++ b/Sources/Common/Extensions.swift @@ -7,16 +7,19 @@ import Foundation extension Data { + @inline(__always) func to(type: T.Type) -> T { return self.withUnsafeBytes { $0.pointee } } + @inline(__always) func toArray(type: T.Type, count: Int) -> [T] { return self.withUnsafeBytes { [T](UnsafeBufferPointer(start: $0, count: count)) } } + @inline(__always) func toArray(type: T.Type) -> [T] { return self.toArray(type: type, count: self.count / MemoryLayout.size) } @@ -25,6 +28,7 @@ extension Data { extension UnsignedInteger { + @inline(__always) func toInt() -> Int { return Int(truncatingIfNeeded: self) } @@ -32,6 +36,7 @@ extension UnsignedInteger { extension Int { + @inline(__always) func toUInt8() -> UInt8 { return UInt8(truncatingIfNeeded: UInt(self)) } From 427886fa232ad9a0844e9e11a9b1555d71aef6f5 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 22:47:21 +0300 Subject: [PATCH 20/38] Update tests results --- Tests/Results.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Tests/Results.md b/Tests/Results.md index 16b2e67a..157d8007 100644 --- a/Tests/Results.md +++ b/Tests/Results.md @@ -37,14 +37,14 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.000|0.000|0.054|3.268| |3.3.0|0.000|0.002|0.002|0.000|0.000|0.051|3.948| |3.4.0|0.000|0.003|0.002|0.000|0.000|0.051|4.116| -|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.096|3.618| +|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.097|3.559| ### BZip2 (Compression) |Version|test1|test2|test3|test4|test5|test6|test7| |---|---|---|---|---|---|---|---| |3.4.0|0.000|0.007|0.004|0.001|0.000|0.245|39.653| -|4.0.1-dev|0.000|0.007|0.004|0.001|0.000|0.453|42.732| +|4.0.1-dev|0.000|0.008|0.004|0.001|0.000|0.456|42.481| ### Deflate (Decompression) @@ -62,7 +62,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.001|0.001|0.001|0.000|0.000|0.045|0.210| |3.3.0|0.001|0.002|0.001|0.001|0.001|0.043|0.263| |3.4.0|0.000|0.002|0.001|0.000|0.000|0.073|0.284| -|4.0.1-dev|0.000|0.002|0.001|0.000|0.000|0.146|0.388| +|4.0.1-dev|0.000|0.002|0.001|0.000|0.000|0.140|0.611| ### Deflate (Compression) @@ -76,7 +76,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.001|0.001|0.031|2.539| |3.3.0|0.001|0.002|0.002|0.001|0.001|0.032|2.542| |3.4.0|0.000|0.001|0.001|0.000|0.000|0.024|1.451| -|4.0.1-dev|0.000|0.001|0.001|0.000|0.000|0.024|1.549| +|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.363|3.588| ### XZ (LZMA/LZMA2) (Decompression) @@ -92,7 +92,7 @@ to complete the test in reasonable amount of time. |3.1.0|0.000|0.002|0.002|0.000|0.000|0.069|0.252| |3.3.0|0.000|0.002|0.002|0.000|0.000|0.070|0.249| |3.4.0|0.000|0.002|0.002|0.000|0.000|0.072|0.262| -|4.0.1-dev|0.000|0.002|0.002|0.001|0.000|0.131|0.319| +|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.128|0.305| ## Debug From e4447ca86fd18f1b8d92ea193dd62359520f2c36 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 22:57:25 +0300 Subject: [PATCH 21/38] Increase version --- .jazzy.yaml | 4 +-- SWCompression.podspec | 2 +- Sources/Service/Info.plist | 2 +- Sources/swcomp/main.swift | 2 +- docs/Archives.html | 10 +++--- docs/Classes/BZip2.html | 8 ++--- docs/Classes/BZip2/BlockSize.html | 18 +++++----- docs/Classes/Deflate.html | 4 +-- docs/Classes/GzipArchive.html | 8 ++--- docs/Classes/GzipArchive/Member.html | 4 +-- docs/Classes/LZMA.html | 2 +- docs/Classes/LZMA2.html | 2 +- docs/Classes/SevenZipContainer.html | 4 +-- docs/Classes/TarContainer.html | 4 +-- docs/Classes/XZArchive.html | 4 +-- docs/Classes/ZipContainer.html | 4 +-- docs/Classes/ZlibArchive.html | 4 +-- docs/Common Auxiliary Types.html | 10 +++--- docs/Compression.html | 8 ++--- docs/Containers.html | 18 +++++----- docs/Enums/BZip2Error.html | 20 +++++------ docs/Enums/CompressionMethod.html | 12 +++---- docs/Enums/ContainerEntryType.html | 20 +++++------ docs/Enums/DeflateError.html | 8 ++--- docs/Enums/FileSystemType.html | 10 +++--- docs/Enums/GzipError.html | 14 ++++---- docs/Enums/LZMA2Error.html | 8 ++--- docs/Enums/LZMAError.html | 14 ++++---- docs/Enums/SevenZipError.html | 22 ++++++------ docs/Enums/TarError.html | 8 ++--- docs/Enums/XZError.html | 18 +++++----- docs/Enums/ZipError.html | 22 ++++++------ docs/Enums/ZlibError.html | 10 +++--- docs/Errors.html | 20 +++++------ docs/Protocols.html | 12 +++---- docs/Protocols/Archive.html | 2 +- docs/Protocols/CompressionAlgorithm.html | 2 +- docs/Protocols/Container.html | 4 +-- docs/Protocols/ContainerEntry.html | 4 +-- docs/Protocols/ContainerEntryInfo.html | 14 ++++---- docs/Protocols/DecompressionAlgorithm.html | 2 +- docs/Structs/DosAttributes.html | 16 ++++----- docs/Structs/GzipHeader.html | 14 ++++---- docs/Structs/Permissions.html | 28 +++++++-------- docs/Structs/SevenZipEntry.html | 4 +-- docs/Structs/SevenZipEntryInfo.html | 26 +++++++------- docs/Structs/TarEntry.html | 4 +-- docs/Structs/TarEntryInfo.html | 32 +++++++++--------- docs/Structs/ZipEntry.html | 4 +-- docs/Structs/ZipEntryInfo.html | 26 +++++++------- docs/Structs/ZlibHeader.html | 10 +++--- docs/Structs/ZlibHeader/CompressionLevel.html | 8 ++--- .../Resources/Documents/Archives.html | 10 +++--- .../Resources/Documents/Classes/BZip2.html | 8 ++--- .../Documents/Classes/BZip2/BlockSize.html | 18 +++++----- .../Resources/Documents/Classes/Deflate.html | 4 +-- .../Documents/Classes/GzipArchive.html | 8 ++--- .../Documents/Classes/GzipArchive/Member.html | 4 +-- .../Resources/Documents/Classes/LZMA.html | 2 +- .../Resources/Documents/Classes/LZMA2.html | 2 +- .../Documents/Classes/SevenZipContainer.html | 4 +-- .../Documents/Classes/TarContainer.html | 4 +-- .../Documents/Classes/XZArchive.html | 4 +-- .../Documents/Classes/ZipContainer.html | 4 +-- .../Documents/Classes/ZlibArchive.html | 4 +-- .../Documents/Common Auxiliary Types.html | 10 +++--- .../Resources/Documents/Compression.html | 8 ++--- .../Resources/Documents/Containers.html | 18 +++++----- .../Resources/Documents/Enums/BZip2Error.html | 20 +++++------ .../Documents/Enums/CompressionMethod.html | 12 +++---- .../Documents/Enums/ContainerEntryType.html | 20 +++++------ .../Documents/Enums/DeflateError.html | 8 ++--- .../Documents/Enums/FileSystemType.html | 10 +++--- .../Resources/Documents/Enums/GzipError.html | 14 ++++---- .../Resources/Documents/Enums/LZMA2Error.html | 8 ++--- .../Resources/Documents/Enums/LZMAError.html | 14 ++++---- .../Documents/Enums/SevenZipError.html | 22 ++++++------ .../Resources/Documents/Enums/TarError.html | 8 ++--- .../Resources/Documents/Enums/XZError.html | 18 +++++----- .../Resources/Documents/Enums/ZipError.html | 22 ++++++------ .../Resources/Documents/Enums/ZlibError.html | 10 +++--- .../Contents/Resources/Documents/Errors.html | 20 +++++------ .../Resources/Documents/Protocols.html | 12 +++---- .../Documents/Protocols/Archive.html | 2 +- .../Protocols/CompressionAlgorithm.html | 2 +- .../Documents/Protocols/Container.html | 4 +-- .../Documents/Protocols/ContainerEntry.html | 4 +-- .../Protocols/ContainerEntryInfo.html | 14 ++++---- .../Protocols/DecompressionAlgorithm.html | 2 +- .../Documents/Structs/DosAttributes.html | 16 ++++----- .../Documents/Structs/GzipHeader.html | 14 ++++---- .../Documents/Structs/Permissions.html | 28 +++++++-------- .../Documents/Structs/SevenZipEntry.html | 4 +-- .../Documents/Structs/SevenZipEntryInfo.html | 26 +++++++------- .../Resources/Documents/Structs/TarEntry.html | 4 +-- .../Documents/Structs/TarEntryInfo.html | 32 +++++++++--------- .../Resources/Documents/Structs/ZipEntry.html | 4 +-- .../Documents/Structs/ZipEntryInfo.html | 26 +++++++------- .../Documents/Structs/ZlibHeader.html | 10 +++--- .../Structs/ZlibHeader/CompressionLevel.html | 8 ++--- docs/docsets/SWCompression.tgz | Bin 124364 -> 124368 bytes 101 files changed, 535 insertions(+), 535 deletions(-) diff --git a/.jazzy.yaml b/.jazzy.yaml index eca813b7..1baa78e3 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -3,11 +3,11 @@ clean: true exclude: Tests/ author: Timofey Solomko module: SWCompression -module_version: 4.0.0 +module_version: 4.0.1-dev copyright: '© 2017 Timofey Solomko' readme: README.md github_url: https://github.com/tsolomko/SWCompression -github_file_prefix: https://github.com/tsolomko/SWCompression/tree/v4.0.0 +github_file_prefix: https://github.com/tsolomko/SWCompression/tree/develop theme: fullwidth custom_categories: diff --git a/SWCompression.podspec b/SWCompression.podspec index 97284fd9..cb4e03fe 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" - s.version = "4.0.0" + s.version = "4.0.1-dev" s.summary = "A framework with functionality for working with compression, archives and containers." s.description = "A framework with (de)compression algorithms and functions for processing various archives and containers." diff --git a/Sources/Service/Info.plist b/Sources/Service/Info.plist index 8595aafb..e6a7ca47 100644 --- a/Sources/Service/Info.plist +++ b/Sources/Service/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.0 + 4.0.1-dev CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/Sources/swcomp/main.swift b/Sources/swcomp/main.swift index c07decc5..0a937fd6 100644 --- a/Sources/swcomp/main.swift +++ b/Sources/swcomp/main.swift @@ -7,7 +7,7 @@ import Foundation import SWCompression import SwiftCLI -let cli = CLI(name: "swcomp", version: "4.0.0", +let cli = CLI(name: "swcomp", version: "4.0.1-dev", description: """ swcomp - small command-line client for SWCompression framework. Serves as an example of SWCompression usage. diff --git a/docs/Archives.html b/docs/Archives.html index 64f0bb11..1802bf84 100644 --- a/docs/Archives.html +++ b/docs/Archives.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

diff --git a/docs/Classes/BZip2.html b/docs/Classes/BZip2.html index a99a3113..c54d7230 100644 --- a/docs/Classes/BZip2.html +++ b/docs/Classes/BZip2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

@@ -341,7 +341,7 @@

Parameters

@@ -402,7 +402,7 @@

Parameters

@@ -437,7 +437,7 @@

Declaration

diff --git a/docs/Classes/BZip2/BlockSize.html b/docs/Classes/BZip2/BlockSize.html index 950629af..df4a8b6f 100644 --- a/docs/Classes/BZip2/BlockSize.html +++ b/docs/Classes/BZip2/BlockSize.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

diff --git a/docs/Classes/Deflate.html b/docs/Classes/Deflate.html index de278546..faacdfd6 100644 --- a/docs/Classes/Deflate.html +++ b/docs/Classes/Deflate.html @@ -287,7 +287,7 @@

Return Value

Decompressed data.

@@ -349,7 +349,7 @@

Parameters

diff --git a/docs/Classes/GzipArchive.html b/docs/Classes/GzipArchive.html index 0052a439..6604d3fa 100644 --- a/docs/Classes/GzipArchive.html +++ b/docs/Classes/GzipArchive.html @@ -254,7 +254,7 @@

Declaration

@@ -319,7 +319,7 @@

Return Value

Unarchived data.

@@ -380,7 +380,7 @@

Return Value

Unarchived data.

@@ -519,7 +519,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/Classes/GzipArchive/Member.html b/docs/Classes/GzipArchive/Member.html index a292efa1..1f52bdac 100644 --- a/docs/Classes/GzipArchive/Member.html +++ b/docs/Classes/GzipArchive/Member.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Classes/LZMA.html b/docs/Classes/LZMA.html index 9bfcc487..29c353e1 100644 --- a/docs/Classes/LZMA.html +++ b/docs/Classes/LZMA.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/Classes/LZMA2.html b/docs/Classes/LZMA2.html index 6906807e..b769e1e7 100644 --- a/docs/Classes/LZMA2.html +++ b/docs/Classes/LZMA2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/Classes/SevenZipContainer.html b/docs/Classes/SevenZipContainer.html index 7c9f98d6..24342ac3 100644 --- a/docs/Classes/SevenZipContainer.html +++ b/docs/Classes/SevenZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of SevenZipEntry.

@@ -356,7 +356,7 @@

Return Value

Array of SevenZipEntryInfo.

diff --git a/docs/Classes/TarContainer.html b/docs/Classes/TarContainer.html index d05dd27a..c6aaddc9 100644 --- a/docs/Classes/TarContainer.html +++ b/docs/Classes/TarContainer.html @@ -288,7 +288,7 @@

Return Value

Array of TarEntry.

@@ -353,7 +353,7 @@

Return Value

Array of TarEntryInfo.

diff --git a/docs/Classes/XZArchive.html b/docs/Classes/XZArchive.html index 36fd72da..b0061442 100644 --- a/docs/Classes/XZArchive.html +++ b/docs/Classes/XZArchive.html @@ -287,7 +287,7 @@

Return Value

Unarchived data.

@@ -352,7 +352,7 @@

Return Value

Array of unarchived data from every stream in archive.

diff --git a/docs/Classes/ZipContainer.html b/docs/Classes/ZipContainer.html index b2017e59..8cfcd660 100644 --- a/docs/Classes/ZipContainer.html +++ b/docs/Classes/ZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of ZipEntry.

@@ -354,7 +354,7 @@

Return Value

Array of ZipEntryInfo.

diff --git a/docs/Classes/ZlibArchive.html b/docs/Classes/ZlibArchive.html index 31efc07b..abadb3b6 100644 --- a/docs/Classes/ZlibArchive.html +++ b/docs/Classes/ZlibArchive.html @@ -288,7 +288,7 @@

Return Value

Unarchived data.

@@ -347,7 +347,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/Common Auxiliary Types.html b/docs/Common Auxiliary Types.html index 9dbd6114..5dd2e38e 100644 --- a/docs/Common Auxiliary Types.html +++ b/docs/Common Auxiliary Types.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -387,7 +387,7 @@

Declaration

diff --git a/docs/Compression.html b/docs/Compression.html index f129f270..87060dfb 100644 --- a/docs/Compression.html +++ b/docs/Compression.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

diff --git a/docs/Containers.html b/docs/Containers.html index 4d4ab82f..6c0ac946 100644 --- a/docs/Containers.html +++ b/docs/Containers.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

@@ -456,7 +456,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

diff --git a/docs/Enums/BZip2Error.html b/docs/Enums/BZip2Error.html index 0bb1aa6b..669b8f28 100644 --- a/docs/Enums/BZip2Error.html +++ b/docs/Enums/BZip2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

diff --git a/docs/Enums/CompressionMethod.html b/docs/Enums/CompressionMethod.html index c070aae9..6a1b291f 100644 --- a/docs/Enums/CompressionMethod.html +++ b/docs/Enums/CompressionMethod.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

diff --git a/docs/Enums/ContainerEntryType.html b/docs/Enums/ContainerEntryType.html index 860df2e4..4bab0cc7 100644 --- a/docs/Enums/ContainerEntryType.html +++ b/docs/Enums/ContainerEntryType.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

@@ -559,7 +559,7 @@

Declaration

diff --git a/docs/Enums/DeflateError.html b/docs/Enums/DeflateError.html index 66e385b8..e44ba4cf 100644 --- a/docs/Enums/DeflateError.html +++ b/docs/Enums/DeflateError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/Enums/FileSystemType.html b/docs/Enums/FileSystemType.html index 385de1d7..4707b09c 100644 --- a/docs/Enums/FileSystemType.html +++ b/docs/Enums/FileSystemType.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -395,7 +395,7 @@

Declaration

diff --git a/docs/Enums/GzipError.html b/docs/Enums/GzipError.html index bd4e0692..0cc7ea3b 100644 --- a/docs/Enums/GzipError.html +++ b/docs/Enums/GzipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -399,7 +399,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -467,7 +467,7 @@

Declaration

diff --git a/docs/Enums/LZMA2Error.html b/docs/Enums/LZMA2Error.html index 176011eb..ffe060c9 100644 --- a/docs/Enums/LZMA2Error.html +++ b/docs/Enums/LZMA2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

diff --git a/docs/Enums/LZMAError.html b/docs/Enums/LZMAError.html index 60fa8982..c7a1d409 100644 --- a/docs/Enums/LZMAError.html +++ b/docs/Enums/LZMAError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

diff --git a/docs/Enums/SevenZipError.html b/docs/Enums/SevenZipError.html index 11df9695..0c7868d5 100644 --- a/docs/Enums/SevenZipError.html +++ b/docs/Enums/SevenZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -358,7 +358,7 @@

Declaration

@@ -392,7 +392,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -494,7 +494,7 @@

Declaration

@@ -528,7 +528,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -597,7 +597,7 @@

Declaration

diff --git a/docs/Enums/TarError.html b/docs/Enums/TarError.html index bd5d01ea..da0cf505 100644 --- a/docs/Enums/TarError.html +++ b/docs/Enums/TarError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/Enums/XZError.html b/docs/Enums/XZError.html index 2af04e73..987bcd6d 100644 --- a/docs/Enums/XZError.html +++ b/docs/Enums/XZError.html @@ -254,7 +254,7 @@

Declaration

@@ -289,7 +289,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -468,7 +468,7 @@

Declaration

@@ -502,7 +502,7 @@

Declaration

@@ -536,7 +536,7 @@

Declaration

diff --git a/docs/Enums/ZipError.html b/docs/Enums/ZipError.html index 2ea08f85..b60db4e9 100644 --- a/docs/Enums/ZipError.html +++ b/docs/Enums/ZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

@@ -595,7 +595,7 @@

Declaration

diff --git a/docs/Enums/ZlibError.html b/docs/Enums/ZlibError.html index 9dbbed8f..e24e00c5 100644 --- a/docs/Enums/ZlibError.html +++ b/docs/Enums/ZlibError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

diff --git a/docs/Errors.html b/docs/Errors.html index 373a316e..9e06a9cf 100644 --- a/docs/Errors.html +++ b/docs/Errors.html @@ -247,7 +247,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -319,7 +319,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -427,7 +427,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -499,7 +499,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -571,7 +571,7 @@

Declaration

diff --git a/docs/Protocols.html b/docs/Protocols.html index ec8b5817..dfeb243c 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

diff --git a/docs/Protocols/Archive.html b/docs/Protocols/Archive.html index 1f6ec3e8..008aab34 100644 --- a/docs/Protocols/Archive.html +++ b/docs/Protocols/Archive.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Protocols/CompressionAlgorithm.html b/docs/Protocols/CompressionAlgorithm.html index c680eefa..c46d8382 100644 --- a/docs/Protocols/CompressionAlgorithm.html +++ b/docs/Protocols/CompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Protocols/Container.html b/docs/Protocols/Container.html index f5faee75..7dc89a70 100644 --- a/docs/Protocols/Container.html +++ b/docs/Protocols/Container.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Protocols/ContainerEntry.html b/docs/Protocols/ContainerEntry.html index 9077dd28..37692e09 100644 --- a/docs/Protocols/ContainerEntry.html +++ b/docs/Protocols/ContainerEntry.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Protocols/ContainerEntryInfo.html b/docs/Protocols/ContainerEntryInfo.html index cb706da4..da33c77f 100644 --- a/docs/Protocols/ContainerEntryInfo.html +++ b/docs/Protocols/ContainerEntryInfo.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

diff --git a/docs/Protocols/DecompressionAlgorithm.html b/docs/Protocols/DecompressionAlgorithm.html index a568d5bd..7344c9af 100644 --- a/docs/Protocols/DecompressionAlgorithm.html +++ b/docs/Protocols/DecompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Structs/DosAttributes.html b/docs/Structs/DosAttributes.html index 2036a71c..323b0b19 100644 --- a/docs/Structs/DosAttributes.html +++ b/docs/Structs/DosAttributes.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

diff --git a/docs/Structs/GzipHeader.html b/docs/Structs/GzipHeader.html index e5ad50b3..6c6c132d 100644 --- a/docs/Structs/GzipHeader.html +++ b/docs/Structs/GzipHeader.html @@ -253,7 +253,7 @@

Declaration

@@ -285,7 +285,7 @@

Declaration

@@ -315,7 +315,7 @@

Declaration

@@ -345,7 +345,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -405,7 +405,7 @@

Declaration

@@ -460,7 +460,7 @@

Parameters

diff --git a/docs/Structs/Permissions.html b/docs/Structs/Permissions.html index 7f373a34..823b7f40 100644 --- a/docs/Structs/Permissions.html +++ b/docs/Structs/Permissions.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -493,7 +493,7 @@

Declaration

@@ -523,7 +523,7 @@

Declaration

@@ -553,7 +553,7 @@

Declaration

@@ -583,7 +583,7 @@

Declaration

@@ -613,7 +613,7 @@

Declaration

@@ -643,7 +643,7 @@

Declaration

diff --git a/docs/Structs/SevenZipEntry.html b/docs/Structs/SevenZipEntry.html index 3af29492..82eddfb0 100644 --- a/docs/Structs/SevenZipEntry.html +++ b/docs/Structs/SevenZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/SevenZipEntryInfo.html b/docs/Structs/SevenZipEntryInfo.html index c0a6be8a..910d68ef 100644 --- a/docs/Structs/SevenZipEntryInfo.html +++ b/docs/Structs/SevenZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -346,7 +346,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -404,7 +404,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -475,7 +475,7 @@

Declaration

@@ -505,7 +505,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -565,7 +565,7 @@

Declaration

@@ -596,7 +596,7 @@

Declaration

@@ -626,7 +626,7 @@

Declaration

diff --git a/docs/Structs/TarEntry.html b/docs/Structs/TarEntry.html index 3aaba39a..dd52586a 100644 --- a/docs/Structs/TarEntry.html +++ b/docs/Structs/TarEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/TarEntryInfo.html b/docs/Structs/TarEntryInfo.html index 92c58ac1..a30ecfa5 100644 --- a/docs/Structs/TarEntryInfo.html +++ b/docs/Structs/TarEntryInfo.html @@ -270,7 +270,7 @@

Declaration

@@ -300,7 +300,7 @@

Declaration

@@ -329,7 +329,7 @@

Declaration

@@ -359,7 +359,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -419,7 +419,7 @@

Declaration

@@ -448,7 +448,7 @@

Declaration

@@ -489,7 +489,7 @@

Declaration

@@ -519,7 +519,7 @@

Declaration

@@ -549,7 +549,7 @@

Declaration

@@ -579,7 +579,7 @@

Declaration

@@ -609,7 +609,7 @@

Declaration

@@ -639,7 +639,7 @@

Declaration

@@ -669,7 +669,7 @@

Declaration

@@ -699,7 +699,7 @@

Declaration

@@ -739,7 +739,7 @@

Declaration

diff --git a/docs/Structs/ZipEntry.html b/docs/Structs/ZipEntry.html index b8d88d43..ad44420d 100644 --- a/docs/Structs/ZipEntry.html +++ b/docs/Structs/ZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/ZipEntryInfo.html b/docs/Structs/ZipEntryInfo.html index f465728e..4f70fd7b 100644 --- a/docs/Structs/ZipEntryInfo.html +++ b/docs/Structs/ZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -354,7 +354,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -429,7 +429,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -501,7 +501,7 @@

Declaration

@@ -532,7 +532,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -592,7 +592,7 @@

Declaration

@@ -622,7 +622,7 @@

Declaration

@@ -652,7 +652,7 @@

Declaration

diff --git a/docs/Structs/ZlibHeader.html b/docs/Structs/ZlibHeader.html index 1faae7ca..06e94745 100644 --- a/docs/Structs/ZlibHeader.html +++ b/docs/Structs/ZlibHeader.html @@ -254,7 +254,7 @@

Declaration

@@ -284,7 +284,7 @@

Declaration

@@ -314,7 +314,7 @@

Declaration

@@ -344,7 +344,7 @@

Declaration

@@ -401,7 +401,7 @@

Parameters

diff --git a/docs/Structs/ZlibHeader/CompressionLevel.html b/docs/Structs/ZlibHeader/CompressionLevel.html index b60b78f5..e8ef289c 100644 --- a/docs/Structs/ZlibHeader/CompressionLevel.html +++ b/docs/Structs/ZlibHeader/CompressionLevel.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html index 64f0bb11..1802bf84 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

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 a99a3113..c54d7230 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

@@ -341,7 +341,7 @@

Parameters

@@ -402,7 +402,7 @@

Parameters

@@ -437,7 +437,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html index 950629af..df4a8b6f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

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 de278546..faacdfd6 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html @@ -287,7 +287,7 @@

Return Value

Decompressed data.

@@ -349,7 +349,7 @@

Parameters

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 0052a439..6604d3fa 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html @@ -254,7 +254,7 @@

Declaration

@@ -319,7 +319,7 @@

Return Value

Unarchived data.

@@ -380,7 +380,7 @@

Return Value

Unarchived data.

@@ -519,7 +519,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html index a292efa1..1f52bdac 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

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 9bfcc487..29c353e1 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

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 6906807e..b769e1e7 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html index 7c9f98d6..24342ac3 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of SevenZipEntry.

@@ -356,7 +356,7 @@

Return Value

Array of SevenZipEntryInfo.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html index d05dd27a..c6aaddc9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html @@ -288,7 +288,7 @@

Return Value

Array of TarEntry.

@@ -353,7 +353,7 @@

Return Value

Array of TarEntryInfo.

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 36fd72da..b0061442 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html @@ -287,7 +287,7 @@

Return Value

Unarchived data.

@@ -352,7 +352,7 @@

Return Value

Array of unarchived data from every stream in archive.

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 b2017e59..8cfcd660 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of ZipEntry.

@@ -354,7 +354,7 @@

Return Value

Array of ZipEntryInfo.

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 31efc07b..abadb3b6 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html @@ -288,7 +288,7 @@

Return Value

Unarchived data.

@@ -347,7 +347,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html index 9dbd6114..5dd2e38e 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -387,7 +387,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html index f129f270..87060dfb 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html index 4d4ab82f..6c0ac946 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

@@ -456,7 +456,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

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 0bb1aa6b..669b8f28 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html index c070aae9..6a1b291f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html index 860df2e4..4bab0cc7 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

@@ -559,7 +559,7 @@

Declaration

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 66e385b8..e44ba4cf 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html index 385de1d7..4707b09c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -395,7 +395,7 @@

Declaration

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 bd4e0692..0cc7ea3b 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -399,7 +399,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -467,7 +467,7 @@

Declaration

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 176011eb..ffe060c9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

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 60fa8982..c7a1d409 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html index 11df9695..0c7868d5 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -358,7 +358,7 @@

Declaration

@@ -392,7 +392,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -494,7 +494,7 @@

Declaration

@@ -528,7 +528,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -597,7 +597,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html index bd5d01ea..da0cf505 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

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 2af04e73..987bcd6d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html @@ -254,7 +254,7 @@

Declaration

@@ -289,7 +289,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -468,7 +468,7 @@

Declaration

@@ -502,7 +502,7 @@

Declaration

@@ -536,7 +536,7 @@

Declaration

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 2ea08f85..b60db4e9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

@@ -595,7 +595,7 @@

Declaration

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 9dbbed8f..e24e00c5 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html index 373a316e..9e06a9cf 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html @@ -247,7 +247,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -319,7 +319,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -427,7 +427,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -499,7 +499,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -571,7 +571,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html index ec8b5817..dfeb243c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

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 1f6ec3e8..008aab34 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html index c680eefa..c46d8382 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html index f5faee75..7dc89a70 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html index 9077dd28..37692e09 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html index cb706da4..da33c77f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

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 a568d5bd..7344c9af 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html index 2036a71c..323b0b19 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

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 e5ad50b3..6c6c132d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html @@ -253,7 +253,7 @@

Declaration

@@ -285,7 +285,7 @@

Declaration

@@ -315,7 +315,7 @@

Declaration

@@ -345,7 +345,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -405,7 +405,7 @@

Declaration

@@ -460,7 +460,7 @@

Parameters

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html index 7f373a34..823b7f40 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -493,7 +493,7 @@

Declaration

@@ -523,7 +523,7 @@

Declaration

@@ -553,7 +553,7 @@

Declaration

@@ -583,7 +583,7 @@

Declaration

@@ -613,7 +613,7 @@

Declaration

@@ -643,7 +643,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html index 3af29492..82eddfb0 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html index c0a6be8a..910d68ef 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -346,7 +346,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -404,7 +404,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -475,7 +475,7 @@

Declaration

@@ -505,7 +505,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -565,7 +565,7 @@

Declaration

@@ -596,7 +596,7 @@

Declaration

@@ -626,7 +626,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html index 3aaba39a..dd52586a 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html index 92c58ac1..a30ecfa5 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html @@ -270,7 +270,7 @@

Declaration

@@ -300,7 +300,7 @@

Declaration

@@ -329,7 +329,7 @@

Declaration

@@ -359,7 +359,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -419,7 +419,7 @@

Declaration

@@ -448,7 +448,7 @@

Declaration

@@ -489,7 +489,7 @@

Declaration

@@ -519,7 +519,7 @@

Declaration

@@ -549,7 +549,7 @@

Declaration

@@ -579,7 +579,7 @@

Declaration

@@ -609,7 +609,7 @@

Declaration

@@ -639,7 +639,7 @@

Declaration

@@ -669,7 +669,7 @@

Declaration

@@ -699,7 +699,7 @@

Declaration

@@ -739,7 +739,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html index b8d88d43..ad44420d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html index f465728e..4f70fd7b 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -354,7 +354,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -429,7 +429,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -501,7 +501,7 @@

Declaration

@@ -532,7 +532,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -592,7 +592,7 @@

Declaration

@@ -622,7 +622,7 @@

Declaration

@@ -652,7 +652,7 @@

Declaration

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 1faae7ca..06e94745 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html @@ -254,7 +254,7 @@

Declaration

@@ -284,7 +284,7 @@

Declaration

@@ -314,7 +314,7 @@

Declaration

@@ -344,7 +344,7 @@

Declaration

@@ -401,7 +401,7 @@

Parameters

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 b60b78f5..e8ef289c 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 @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.tgz b/docs/docsets/SWCompression.tgz index 42c6aee12600b8ad5ce4782d9fb15159c975e006..d162eab259f238b96e966a944993e841c7dff0e1 100644 GIT binary patch delta 121594 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 Cy3+6f delta 121635 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 p;rOo2?W$ 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

p}aF*&4eoR1k!R`ENW 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

~;1#Y0uaprcMkc6kjDeTlj)K=MfBZS>*k_THy2 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 VuH^w04QKV|{{sW)IW7Q@6#&Lqv*Q2& From a447e6adcfc38987550b4615ed02f72bb0c737d0 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Wed, 22 Nov 2017 23:04:21 +0300 Subject: [PATCH 22/38] Don't check unicodeness of zip strings if language encoding flags is set --- Sources/ZIP/DataWithPointer+ZipString.swift | 13 ++++++----- Sources/ZIP/ZipString.swift | 24 ++++++++++----------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Sources/ZIP/DataWithPointer+ZipString.swift b/Sources/ZIP/DataWithPointer+ZipString.swift index 70e4fec0..cb5085d6 100644 --- a/Sources/ZIP/DataWithPointer+ZipString.swift +++ b/Sources/ZIP/DataWithPointer+ZipString.swift @@ -14,13 +14,16 @@ extension DataWithPointer { func getZipStringField(_ length: Int, _ useUtf8: Bool) -> String? { guard length > 0 else { return "" } - let bytes = self.bytes(count: length) - let bytesAreUtf8 = ZipString.needsUtf8(bytes) - if !useUtf8 && ZipString.cp437Available && !bytesAreUtf8 { - return String(data: Data(bytes: bytes), encoding: String.Encoding(rawValue: + let stringData = Data(self.data[self.index.. Bool { + static func needsUtf8(_ data: Data) -> Bool { // UTF-8 can have BOM. - if bytes.count >= 3 { - if bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF { + if data.count >= 3 { + if data[0] == 0xEF && data[1] == 0xBB && data[2] == 0xBF { return true } } var codeLength = 0 var index = 0 var ch: UInt32 = 0 - while index < bytes.count { - let byte = bytes[index] + while index < data.count { + let byte = data[index] if byte <= 0x7F { // This simple byte can exist both in CP437 and UTF-8. index += 1 continue @@ -47,21 +47,21 @@ class ZipString { } else { return false } - if index + codeLength - 1 >= bytes.count { + if index + codeLength - 1 >= data.count { return false } for i in 1.. 0x10FFFF { return false } From 6f88a765a8ce512e7abe293fb32cda779f7d4432 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Thu, 23 Nov 2017 19:38:46 +0300 Subject: [PATCH 23/38] Check comp size after reading compressed data and simplify filters-apply code --- Sources/XZ/XZBlock.swift | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Sources/XZ/XZBlock.swift b/Sources/XZ/XZBlock.swift index b0a3f51b..5854cfed 100644 --- a/Sources/XZ/XZBlock.swift +++ b/Sources/XZ/XZBlock.swift @@ -70,17 +70,14 @@ struct XZBlock { else { throw XZError.wrongInfoCRC } pointerData.index += 4 - var intResult = pointerData + var out = pointerData let compressedDataStart = pointerData.index - for filterIndex in 0.. Date: Thu, 23 Nov 2017 19:40:53 +0300 Subject: [PATCH 24/38] Ignore swcomp link correctly --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fef2e9ad..7b879317 100644 --- a/.gitignore +++ b/.gitignore @@ -71,7 +71,7 @@ fastlane/screenshots fastlane/test_output # Ignore symbolic link to swcomp executable built by SPM. -swcomp +/swcomp # Ignore Package.resolved, because there is no dependencies by default for this package. Package.resolved From 60051dd193cb679ee6885590b832a481a1419485 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Thu, 23 Nov 2017 23:33:55 +0300 Subject: [PATCH 25/38] Add commands to swcomp which can do performance tests --- Sources/swcomp/PerfTests/Info7z.swift | 55 ++++++++++++++++++++ Sources/swcomp/PerfTests/InfoTar.swift | 55 ++++++++++++++++++++ Sources/swcomp/PerfTests/InfoZip.swift | 55 ++++++++++++++++++++ Sources/swcomp/PerfTests/PerfTestGroup.swift | 16 ++++++ Sources/swcomp/PerfTests/UnBz2.swift | 55 ++++++++++++++++++++ Sources/swcomp/PerfTests/UnGzip.swift | 55 ++++++++++++++++++++ Sources/swcomp/PerfTests/UnXz.swift | 55 ++++++++++++++++++++ Sources/swcomp/main.swift | 3 +- 8 files changed, 348 insertions(+), 1 deletion(-) create mode 100644 Sources/swcomp/PerfTests/Info7z.swift create mode 100644 Sources/swcomp/PerfTests/InfoTar.swift create mode 100644 Sources/swcomp/PerfTests/InfoZip.swift create mode 100644 Sources/swcomp/PerfTests/PerfTestGroup.swift create mode 100644 Sources/swcomp/PerfTests/UnBz2.swift create mode 100644 Sources/swcomp/PerfTests/UnGzip.swift create mode 100644 Sources/swcomp/PerfTests/UnXz.swift diff --git a/Sources/swcomp/PerfTests/Info7z.swift b/Sources/swcomp/PerfTests/Info7z.swift new file mode 100644 index 00000000..53cc0ea6 --- /dev/null +++ b/Sources/swcomp/PerfTests/Info7z.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class Info7z: Command { + + let name = "info-7z" + let shortDescription = "Performs performance testing for 7-Zip info function using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("7-Zip info function Performance Testing") + print("=======================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try SevenZipContainer.info(container: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("---------------------------------------") + } + } + +} diff --git a/Sources/swcomp/PerfTests/InfoTar.swift b/Sources/swcomp/PerfTests/InfoTar.swift new file mode 100644 index 00000000..6b5ff067 --- /dev/null +++ b/Sources/swcomp/PerfTests/InfoTar.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class InfoTar: Command { + + let name = "info-tar" + let shortDescription = "Performs performance testing for TAR info function using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("TAR info function Performance Testing") + print("=====================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try TarContainer.info(container: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("-------------------------------------") + } + } + +} diff --git a/Sources/swcomp/PerfTests/InfoZip.swift b/Sources/swcomp/PerfTests/InfoZip.swift new file mode 100644 index 00000000..9a1f5cac --- /dev/null +++ b/Sources/swcomp/PerfTests/InfoZip.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class InfoZip: Command { + + let name = "info-zip" + let shortDescription = "Performs performance testing for ZIP info function using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("ZIP info function Performance Testing") + print("=====================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try ZipContainer.info(container: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("-------------------------------------") + } + } + +} diff --git a/Sources/swcomp/PerfTests/PerfTestGroup.swift b/Sources/swcomp/PerfTests/PerfTestGroup.swift new file mode 100644 index 00000000..c8b865cd --- /dev/null +++ b/Sources/swcomp/PerfTests/PerfTestGroup.swift @@ -0,0 +1,16 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SwiftCLI + +class PerfTestGroup: CommandGroup { + + let name = "perf-test" + let shortDescription = "Commands for performance testing" + + let children: [Routable] = [UnGzip(), UnXz(), UnBz2(), InfoTar(), InfoZip(), Info7z()] + +} \ No newline at end of file diff --git a/Sources/swcomp/PerfTests/UnBz2.swift b/Sources/swcomp/PerfTests/UnBz2.swift new file mode 100644 index 00000000..2d444a4a --- /dev/null +++ b/Sources/swcomp/PerfTests/UnBz2.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class UnBz2: Command { + + let name = "un-bz2" + let shortDescription = "Performs performance testing for BZip2 unarchiving using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("BZip2 Unarchive Performance Testing") + print("===================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try BZip2.decompress(data: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("-----------------------------------") + } + } + +} diff --git a/Sources/swcomp/PerfTests/UnGzip.swift b/Sources/swcomp/PerfTests/UnGzip.swift new file mode 100644 index 00000000..15aeccb1 --- /dev/null +++ b/Sources/swcomp/PerfTests/UnGzip.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class UnGzip: Command { + + let name = "un-gzip" + let shortDescription = "Performs performance testing for GZip unarchiving using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("GZip Unarchive Performance Testing") + print("==================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try GzipArchive.unarchive(archive: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("----------------------------------") + } + } + +} diff --git a/Sources/swcomp/PerfTests/UnXz.swift b/Sources/swcomp/PerfTests/UnXz.swift new file mode 100644 index 00000000..a089ea05 --- /dev/null +++ b/Sources/swcomp/PerfTests/UnXz.swift @@ -0,0 +1,55 @@ +// Copyright (c) 2017 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license information + +import Foundation +import SWCompression +import SwiftCLI + +#if os(Linux) + import CoreFoundation +#endif + +class UnXz: Command { + + let name = "un-xz" + let shortDescription = "Performs performance testing for XZ unarchiving using specified files" + + let files = CollectedParameter() + + func execute() throws { + print("XZ Unarchive Performance Testing") + print("================================") + + for file in self.files.value { + print("File: \(file)\n") + + let inputURL = URL(fileURLWithPath: file) + let fileData = try Data(contentsOf: inputURL, options: .mappedIfSafe) + + var totalTime: Double = 0 + + var maxTime = Double(Int.min) + var minTime = Double(Int.max) + + for i in 1...6 { + print("Iteration \(i): ", terminator: "") + let startTime = CFAbsoluteTimeGetCurrent() + _ = try XZArchive.unarchive(archive: fileData) + let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime + print(String(format: "%.3f", timeElapsed)) + totalTime += timeElapsed + if timeElapsed > maxTime { + maxTime = timeElapsed + } + if timeElapsed < minTime { + minTime = timeElapsed + } + } + print(String(format: "\nAverage time: %.3f \u{B1} %.3f", totalTime / 6, (maxTime - minTime) / 2)) + print("--------------------------------") + } + } + +} diff --git a/Sources/swcomp/main.swift b/Sources/swcomp/main.swift index 0a937fd6..d2b2e70c 100644 --- a/Sources/swcomp/main.swift +++ b/Sources/swcomp/main.swift @@ -18,5 +18,6 @@ cli.commands = [XZCommand(), GZipCommand(), ZipCommand(), TarCommand(), - SevenZipCommand()] + SevenZipCommand(), + PerfTestGroup()] cli.goAndExit() From 225af08da08b98ae6e844aa947c75f27ea9678dc Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 00:10:22 +0300 Subject: [PATCH 26/38] Fix uint8 overflow crash in 7z It was happening when number of files with empty stream was greater than 255. --- Sources/7-Zip/7zFileInfo.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sources/7-Zip/7zFileInfo.swift b/Sources/7-Zip/7zFileInfo.swift index 7d34c4db..e0f527e0 100644 --- a/Sources/7-Zip/7zFileInfo.swift +++ b/Sources/7-Zip/7zFileInfo.swift @@ -44,14 +44,14 @@ class SevenZipFileInfo { isEmptyStream = bitReader.bits(count: numFiles) bitReader.align() case 0x0F: // EmptyFile - guard let emptyStreamCount = isEmptyStream?.reduce(0, { $0 + $1 }) + guard let emptyStreamCount = isEmptyStream?.filter({ $0 == 1 }).count else { throw SevenZipError.internalStructureError } - isEmptyFile = bitReader.bits(count: emptyStreamCount.toInt()) + isEmptyFile = bitReader.bits(count: emptyStreamCount) bitReader.align() case 0x10: // AntiFile (used in backups to indicate that file was removed) - guard let emptyStreamCount = isEmptyStream?.reduce(0, { $0 + $1 }) + guard let emptyStreamCount = isEmptyStream?.filter({ $0 == 1 }).count else { throw SevenZipError.internalStructureError } - isAntiFile = bitReader.bits(count: emptyStreamCount.toInt()) + isAntiFile = bitReader.bits(count: emptyStreamCount) bitReader.align() case 0x11: // File name let external = bitReader.byte() From b127ff9611dd9d3abf1aa1c1e2079705dd65f4af Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 00:14:22 +0300 Subject: [PATCH 27/38] Remove fail message for deflate compression test --- Tests/DeflateTests.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Tests/DeflateTests.swift b/Tests/DeflateTests.swift index 788031cc..72373d91 100644 --- a/Tests/DeflateTests.swift +++ b/Tests/DeflateTests.swift @@ -17,8 +17,7 @@ class DeflateTests: XCTestCase { let deflatedData = Deflate.compress(data: answerData) let reUncompData = try Deflate.decompress(data: deflatedData) - XCTAssertEqual(answerData, reUncompData, - "Data before compression and after decompression of compressed data aren't equal.") + XCTAssertEqual(answerData, reUncompData) #if PERF_TESTS print("Performing performance tests for deflate.\(testName)") From 66c821a6990c536b1657fe25d66ce143ab61be27 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 00:14:32 +0300 Subject: [PATCH 28/38] Remove PERF_TESTS --- Tests/BZip2CompressionTests.swift | 7 ------- Tests/BZip2Tests.swift | 7 ------- Tests/GzipTests.swift | 7 ------- Tests/XzTests.swift | 7 ------- 4 files changed, 28 deletions(-) diff --git a/Tests/BZip2CompressionTests.swift b/Tests/BZip2CompressionTests.swift index 462b9b05..c9371d10 100644 --- a/Tests/BZip2CompressionTests.swift +++ b/Tests/BZip2CompressionTests.swift @@ -20,13 +20,6 @@ class BZip2CompressionTests: XCTestCase { let redecompressedData = try BZip2.decompress(data: compressedData) XCTAssertEqual(redecompressedData, answerData) - - #if PERF_TESTS - print("Performing performance tests for cbzip2.\(answerName)") - self.measure { - _ = BZip2.compress(data: answerData) - } - #endif } func stringTest(_ string: String) throws { diff --git a/Tests/BZip2Tests.swift b/Tests/BZip2Tests.swift index 48fe2d79..8483b1b1 100644 --- a/Tests/BZip2Tests.swift +++ b/Tests/BZip2Tests.swift @@ -23,13 +23,6 @@ class BZip2Tests: XCTestCase { } XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") - - #if PERF_TESTS - print("Performing performance tests for \(BZip2Tests.testType).\(testName)") - self.measure { - _ = try? BZip2.decompress(data: testData) - } - #endif } func test1BZip2() throws { diff --git a/Tests/GzipTests.swift b/Tests/GzipTests.swift index abb663e4..9a804a66 100644 --- a/Tests/GzipTests.swift +++ b/Tests/GzipTests.swift @@ -38,13 +38,6 @@ class GzipTests: XCTestCase { } XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") - - #if PERF_TESTS - print("Performing performance tests for gz.\(testName)") - self.measure { - _ = try? GzipArchive.unarchive(archive: testData) - } - #endif } func archive(test testName: String) throws { diff --git a/Tests/XzTests.swift b/Tests/XzTests.swift index d032983b..68ba3cd1 100644 --- a/Tests/XzTests.swift +++ b/Tests/XzTests.swift @@ -23,13 +23,6 @@ class XZTests: XCTestCase { } XCTAssertEqual(decompressedData, answerData, "Decompression was incorrect.") - - #if PERF_TESTS - print("Performing performance tests for \(XZTests.testType).\(testName)") - self.measure { - _ = try? XZArchive.unarchive(archive: testData) - } - #endif } func testXz1() throws { From c80b486dbdd2a02d5c52b2170e4927cbe57030e3 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 00:15:00 +0300 Subject: [PATCH 29/38] Remove script for parsing perfomance tests results --- Tests/filter_test_results.py | 39 ------------------------------------ 1 file changed, 39 deletions(-) delete mode 100755 Tests/filter_test_results.py diff --git a/Tests/filter_test_results.py b/Tests/filter_test_results.py deleted file mode 100755 index 47c2c921..00000000 --- a/Tests/filter_test_results.py +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python3 -import re -import sys - -# Loading file with output from Xcode. -filename = sys.argv[1] -inp = open(filename) -content = inp.read() -inp.close() - -# First, we filter the performance tests output. -p = re.compile('( average: \d{1,3}\.\d{1,3})|(\w{2,9}\.test\d)') -matches = p.findall(content) -# We write them into a temporary string. -perf_tests_output = "" -for i, match in enumerate(matches): - for s in match: - if s != "": - perf_tests_output += s - if i % 2 != 0: - perf_tests_output += "\n" - -# Supported tests. -tests = ["cbzip2", "bz2", "deflate", "gz", "xz"] - -# We prepend every final string output with version number from args. -version = sys.argv[2] - -# Then we split this output into table rows for Results.md file. -# We print them into standard output. -for test in tests: - p = re.compile('(?:' + test + '.test\d average: )(\d{1,3}\.\d{1,3})') - matches = p.findall(perf_tests_output) - output = test + ": |" + version + "|" - for i, match in enumerate(matches): - if i >= 7: # We don't need test8 and test9. - break - output += match + "|" - print(output) From 265353bbf35f3c5f07b1c56df191b4f973fafe86 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 23:39:41 +0300 Subject: [PATCH 30/38] Reduce size of 5 MB tests to 1 MB --- Tests/Constants.swift | 4 ++-- Tests/GzipTests.swift | 4 ++-- Tests/Test Files | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Tests/Constants.swift b/Tests/Constants.swift index 0128fd45..2b6cb6d3 100644 --- a/Tests/Constants.swift +++ b/Tests/Constants.swift @@ -12,8 +12,8 @@ struct Constants { - test2: text file with copyright free song lyrics from http://www.freesonglyrics.co.uk/lyrics13.html - test3: text file with random string from https://www.random.org/strings/ - test4: text file with string "I'm a tester" repeated several times. - - test6: file with size of 5MB containing nulls from /dev/null. - - test7: file with size of 5MB containing random bytes from /dev/urandom. + - test6: file with size of 1MB containing nulls from /dev/zero. + - test7: file with size of 1MB containing random bytes from /dev/urandom. - test8: text file from lzma_specification. - test9: file with size of 10KB containing random bytes from /dev/urandom. */ diff --git a/Tests/GzipTests.swift b/Tests/GzipTests.swift index 9a804a66..54c48134 100644 --- a/Tests/GzipTests.swift +++ b/Tests/GzipTests.swift @@ -100,12 +100,12 @@ class GzipTests: XCTestCase { } func testGzip6() throws { - try self.header(test: "test6", mtime: 1482698305) + try self.header(test: "test6", mtime: 1511554495) try self.unarchive(test: "test6") } func testGzip7() throws { - try self.header(test: "test7", mtime: 1482698304) + try self.header(test: "test7", mtime: 1511554611) try self.unarchive(test: "test7") } diff --git a/Tests/Test Files b/Tests/Test Files index f387b8fa..61fd5086 160000 --- a/Tests/Test Files +++ b/Tests/Test Files @@ -1 +1 @@ -Subproject commit f387b8fa8d15831adaeab7e2c2c94d35b91a245a +Subproject commit 61fd50861a9f063cc9b4c4701924945e28482066 From 320adba127e372ce6a95793face819a2096a71a3 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Fri, 24 Nov 2017 23:40:36 +0300 Subject: [PATCH 31/38] Remove LONG_TESTS --- Tests/BZip2CompressionTests.swift | 8 --- Tests/BZip2Tests.swift | 4 -- Tests/DeflateTests.swift | 4 -- Tests/SevenZipTests.swift | 99 +++++++++---------------------- Tests/TarTests.swift | 7 +-- Tests/ZipTests.swift | 7 +-- 6 files changed, 32 insertions(+), 97 deletions(-) diff --git a/Tests/BZip2CompressionTests.swift b/Tests/BZip2CompressionTests.swift index c9371d10..6fe44df5 100644 --- a/Tests/BZip2CompressionTests.swift +++ b/Tests/BZip2CompressionTests.swift @@ -77,14 +77,6 @@ class BZip2CompressionTests: XCTestCase { try answerTest("test6") } - #if LONG_TESTS - - func testWithAnswer7BZip2Compress() throws { - try answerTest("test7") - } - - #endif - func testWithAnswer8BZip2Compress() throws { try answerTest("test8") } diff --git a/Tests/BZip2Tests.swift b/Tests/BZip2Tests.swift index 8483b1b1..196440d8 100644 --- a/Tests/BZip2Tests.swift +++ b/Tests/BZip2Tests.swift @@ -49,14 +49,10 @@ class BZip2Tests: XCTestCase { try self.perform(test: "test6") } - #if LONG_TESTS - func test7BZip2() throws { try self.perform(test: "test7") } - #endif - func test8BZip2() throws { try self.perform(test: "test8") } diff --git a/Tests/DeflateTests.swift b/Tests/DeflateTests.swift index 72373d91..3b0fdfc4 100644 --- a/Tests/DeflateTests.swift +++ b/Tests/DeflateTests.swift @@ -52,14 +52,10 @@ class DeflateTests: XCTestCase { try self.perform(compressionTest: "test6") } - #if LONG_TESTS - func testDeflate7() throws { try self.perform(compressionTest: "test7") } - #endif - func testDeflate8() throws { try self.perform(compressionTest: "test8") } diff --git a/Tests/SevenZipTests.swift b/Tests/SevenZipTests.swift index 7988151e..21dc1bb2 100644 --- a/Tests/SevenZipTests.swift +++ b/Tests/SevenZipTests.swift @@ -67,11 +67,8 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - _ = try SevenZipContainer.open(container: testData) - #else - _ = try SevenZipContainer.info(container: testData) - #endif + _ = try SevenZipContainer.info(container: testData) + _ = try SevenZipContainer.open(container: testData) } func testAntiFile() throws { @@ -80,27 +77,16 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - let entries = try SevenZipContainer.open(container: testData) - - XCTAssertEqual(entries.count, 6) - - for entry in entries { - if entry.info.name == "test_create/test4.answer" { - XCTAssertEqual(entry.info.isAnti, true) - } - } - #else - let entries = try SevenZipContainer.info(container: testData) + _ = try SevenZipContainer.info(container: testData) + let entries = try SevenZipContainer.open(container: testData) - XCTAssertEqual(entries.count, 6) + XCTAssertEqual(entries.count, 6) - for entry in entries { - if entry.name == "test_create/test4.answer" { - XCTAssertEqual(entry.isAnti, true) - } + for entry in entries { + if entry.info.name == "test_create/test4.answer" { + XCTAssertEqual(entry.info.isAnti, true) } - #endif + } } func testMultiBlocks() throws { @@ -110,15 +96,10 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - let entries = try SevenZipContainer.open(container: testData) - - XCTAssertEqual(entries.count, 6) - #else - let entries = try SevenZipContainer.info(container: testData) + _ = try SevenZipContainer.info(container: testData) + let entries = try SevenZipContainer.open(container: testData) - XCTAssertEqual(entries.count, 6) - #endif + XCTAssertEqual(entries.count, 6) } func testAllTimestamps() throws { @@ -128,29 +109,17 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - let entries = try SevenZipContainer.open(container: testData) - - XCTAssertEqual(entries.count, 6) - - for entry in entries { - XCTAssertNotNil(entry.info.creationTime) - XCTAssertNotNil(entry.info.accessTime) - // Just in case... - XCTAssertNotNil(entry.info.modificationTime) - } - #else - let entries = try SevenZipContainer.info(container: testData) + _ = try SevenZipContainer.info(container: testData) + let entries = try SevenZipContainer.open(container: testData) - XCTAssertEqual(entries.count, 6) + XCTAssertEqual(entries.count, 6) - for entry in entries { - XCTAssertNotNil(entry.creationTime) - XCTAssertNotNil(entry.accessTime) - // Just in case... - XCTAssertNotNil(entry.modificationTime) - } - #endif + for entry in entries { + XCTAssertNotNil(entry.info.creationTime) + XCTAssertNotNil(entry.info.accessTime) + // Just in case... + XCTAssertNotNil(entry.info.modificationTime) + } } func testComplicatedCodingScheme() throws { @@ -165,11 +134,9 @@ class SevenZipTests: XCTestCase { // It is expected for `open(container:) function to throw `SevenZipError.compressionNotSupported`, // because of the coders used. - #if LONG_TESTS - XCTAssertThrowsError(try SevenZipContainer.open(container: testData)) { error in - XCTAssertEqual(error as? SevenZipError, SevenZipError.compressionNotSupported) - } - #endif + XCTAssertThrowsError(try SevenZipContainer.open(container: testData)) { error in + XCTAssertEqual(error as? SevenZipError, SevenZipError.compressionNotSupported) + } } func testEncryptedHeader() throws { @@ -194,15 +161,8 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - let entries = try SevenZipContainer.open(container: testData) - - XCTAssertEqual(entries.count, 6) - #else - let entries = try SevenZipContainer.info(container: testData) - - XCTAssertEqual(entries.count, 6) - #endif + XCTAssertEqual(try SevenZipContainer.info(container: testData).count, 6) + XCTAssertEqual(try SevenZipContainer.open(container: testData).count, 6) } func testBigContainer() throws { @@ -211,11 +171,8 @@ class SevenZipTests: XCTestCase { return } - #if LONG_TESTS - _ = try SevenZipContainer.open(container: testData) - #else - _ = try SevenZipContainer.info(container: testData) - #endif + _ = try SevenZipContainer.info(container: testData) + _ = try SevenZipContainer.open(container: testData) } func test7zBZip2() throws { diff --git a/Tests/TarTests.swift b/Tests/TarTests.swift index 5aeec247..2e54dbe2 100644 --- a/Tests/TarTests.swift +++ b/Tests/TarTests.swift @@ -147,11 +147,8 @@ class TarTests: XCTestCase { return } - #if LONG_TESTS - _ = try TarContainer.open(container: testData) - #else - _ = try TarContainer.info(container: testData) - #endif + _ = try TarContainer.info(container: testData) + _ = try TarContainer.open(container: testData) } } diff --git a/Tests/ZipTests.swift b/Tests/ZipTests.swift index 0cbb33db..e45b65c3 100644 --- a/Tests/ZipTests.swift +++ b/Tests/ZipTests.swift @@ -16,11 +16,8 @@ class ZipTests: XCTestCase { return } - #if LONG_TESTS - _ = try ZipContainer.open(container: testData) - #else - _ = try ZipContainer.info(container: testData) - #endif + _ = try ZipContainer.info(container: testData) + _ = try ZipContainer.open(container: testData) } func testZip64() throws { From 6a97dac95d0d2ca0aa983452bab31c598a0529c3 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:22:00 +0300 Subject: [PATCH 32/38] Update tests results with completely new tests and results --- Tests/Results.md | 216 ++++++++++++----------------------------------- 1 file changed, 54 insertions(+), 162 deletions(-) diff --git a/Tests/Results.md b/Tests/Results.md index 157d8007..8f957e94 100644 --- a/Tests/Results.md +++ b/Tests/Results.md @@ -1,167 +1,59 @@ # Test Results -These are the results of performance tests which were run on my computer (Macbook Pro, Late 2011). -The main purpose of them is to demonstrate the difference between Debug and Release configurations, -as well as show the general progress from version to version. - -__Note:__ Some tests have "-" mark instead of an actual result. -This means, that performance in that version and that configuration wasn't enough -to complete the test in reasonable amount of time. +In this document you can find the results of performance tests which were run on Macbook Pro, Late 2011. +The main purpose of them is to track the progress from version to version. ## Tests description -- test1: text file with "Hello, World!\n". -- test2: text file with copyright free song lyrics from - [freesonglyrics.co.uk](http://www.freesonglyrics.co.uk/lyrics13.html) -- test3: text file with random string from [random.org](https://www.random.org/strings/) -- test4: text file with string "I'm a tester" repeated several times. -- test5: empty file. -- test6: file with size of 5MB containing nulls from /dev/null. -- test7: file with size of 5MB containing random bytes from /dev/urandom. - -## Release - -### BZip2 (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|1.2.1|0.000|0.007|0.005|0.002|0.000|0.061|-| -|1.2.2|0.000|0.004|0.002|0.001|0.000|0.065|-| -|2.0.0|0.000|0.004|0.002|0.001|0.000|0.068|-| -|2.1.0|0.000|0.004|0.002|0.001|0.000|0.061|-| -|2.2.0|0.000|0.004|0.002|0.001|0.000|0.069|-| -|2.3.0|0.000|0.003|0.002|0.001|0.000|0.053|2.430| -|2.4.0|0.000|0.004|0.002|0.001|0.000|0.051|3.749| -|3.0.0|0.000|0.003|0.002|0.001|0.000|0.078|3.901| -|3.0.1|0.000|0.005|0.002|0.001|0.000|0.084|3.868| -|3.1.0|0.000|0.002|0.002|0.000|0.000|0.054|3.268| -|3.3.0|0.000|0.002|0.002|0.000|0.000|0.051|3.948| -|3.4.0|0.000|0.003|0.002|0.000|0.000|0.051|4.116| -|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.097|3.559| - -### BZip2 (Compression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|3.4.0|0.000|0.007|0.004|0.001|0.000|0.245|39.653| -|4.0.1-dev|0.000|0.008|0.004|0.001|0.000|0.456|42.481| - -### Deflate (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|1.2.1|0.001|0.003|0.003|0.001|0.001|20.701|0.049| -|1.2.2|0.001|0.001|0.001|0.000|0.001|23.589|0.057| -|2.0.0|0.001|0.001|0.000|0.001|0.000|0.026|0.043| -|2.1.0|0.001|0.001|0.001|0.001|0.001|0.025|0.044| -|2.2.0|0.000|0.001|0.000|0.001|0.000|0.035|0.062| -|2.3.0|0.001|0.001|0.001|0.001|0.001|0.024|0.042| -|2.4.0|0.001|0.002|0.001|0.001|0.001|0.024|0.198| -|3.0.0|0.001|0.002|0.001|0.001|0.001|0.044|0.206| -|3.0.1|0.001|0.002|0.001|0.000|0.001|0.046|0.210| -|3.1.0|0.001|0.001|0.001|0.000|0.000|0.045|0.210| -|3.3.0|0.001|0.002|0.001|0.001|0.001|0.043|0.263| -|3.4.0|0.000|0.002|0.001|0.000|0.000|0.073|0.284| -|4.0.1-dev|0.000|0.002|0.001|0.000|0.000|0.140|0.611| - -### Deflate (Compression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|2.2.0|0.001|0.005|0.003|0.000|0.000|0.065|9.520| -|2.3.0|0.001|0.002|0.003|0.001|0.000|0.029|3.174| -|2.4.0|0.001|0.002|0.002|0.001|0.000|0.028|3.050| -|3.0.0|0.001|0.003|0.002|0.001|0.000|0.036|3.888| -|3.0.1|0.001|0.002|0.002|0.001|0.000|0.033|2.442| -|3.1.0|0.000|0.002|0.002|0.001|0.001|0.031|2.539| -|3.3.0|0.001|0.002|0.002|0.001|0.001|0.032|2.542| -|3.4.0|0.000|0.001|0.001|0.000|0.000|0.024|1.451| -|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.363|3.588| - -### XZ (LZMA/LZMA2) (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|2.0.0|0.003|0.005|0.005|0.004|0.000|0.083|0.158| -|2.1.0|0.003|0.005|0.005|0.003|0.000|0.081|0.159| -|2.2.0|0.005|0.006|0.006|0.004|0.000|0.109|0.207| -|2.3.0|0.004|0.005|0.005|0.004|0.000|0.076|0.152| -|2.4.0|0.004|0.005|0.006|0.004|0.000|0.077|0.351| -|3.0.0|0.000|0.002|0.002|0.000|0.000|0.070|0.243| -|3.0.1|0.000|0.002|0.001|0.000|0.000|0.076|0.253| -|3.1.0|0.000|0.002|0.002|0.000|0.000|0.069|0.252| -|3.3.0|0.000|0.002|0.002|0.000|0.000|0.070|0.249| -|3.4.0|0.000|0.002|0.002|0.000|0.000|0.072|0.262| -|4.0.1-dev|0.000|0.002|0.002|0.000|0.000|0.128|0.305| - -## Debug - -### BZip2 (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|1.2.0|0.003|0.528|0.230|0.174|0.000|11.202|-| -|1.2.1|0.002|0.377|0.177|0.157|0.000|8.215|-| -|1.2.2|0.002|0.472|0.395|0.185|0.000|9.829|-| -|2.0.0|0.002|0.424|0.198|0.184|0.000|8.879|-| -|2.1.0|0.002|0.390|0.167|0.159|0.000|8.296|-| -|2.2.0|0.003|0.436|0.326|0.173|0.000|10.768|-| -|2.3.0|0.002|0.365|0.153|0.148|0.000|7.391|-| -|2.4.0|0.002|0.290|0.141|0.123|0.000|6.808|-| -|3.0.0|0.002|0.290|0.130|0.129|0.000|7.234|221.061| -|3.0.1|0.002|0.274|0.126|0.125|0.000|6.831|-| -|3.1.0|0.001|0.021|0.012|0.006|0.000|0.619|28.992| -|3.3.0|0.001|0.022|0.012|0.005|0.000|0.642|32.183| -|3.4.0|0.001|0.028|0.014|0.006|0.000|5.019|40.314| - -### BZip2 (Compression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|3.4.0|0.001|0.148|0.075|0.035|0.000|2.433|-| - -### Deflate (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|1.2.0|0.003|0.046|0.024|0.004|0.001|61.985|0.297| -|1.2.1|0.003|0.020|0.017|0.004|0.003|41.641|0.522| -|1.2.2|0.002|0.009|0.003|0.004|0.002|45.554|0.637| -|2.0.0|0.002|0.004|0.003|0.002|0.002|0.313|0.461| -|2.1.0|0.002|0.004|0.003|0.002|0.002|0.317|0.478| -|2.2.0|0.002|0.008|0.006|0.003|0.002|0.447|0.551| -|2.3.0|0.001|0.006|0.005|0.002|0.002|0.337|0.487| -|2.4.0|0.002|0.005|0.004|0.002|0.002|0.332|0.305| -|3.0.0|0.001|0.006|0.004|0.002|0.002|0.515|0.535| -|3.0.1|0.001|0.003|0.003|0.002|0.001|0.502|0.501| -|3.1.0|0.001|0.004|0.003|0.002|0.001|0.563|0.535| -|3.3.0|0.001|0.004|0.003|0.002|0.002|0.512|3.058| -|3.4.0|0.002|0.008|0.006|0.002|0.001|0.904|4.303| - -### Deflate (Compression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|2.2.0|0.006|0.293|0.386|0.007|0.000|6.302|-| -|2.3.0|0.004|0.032|0.023|0.005|0.000|0.894|-| -|2.4.0|0.004|0.028|0.022|0.004|0.000|0.843|-| -|3.0.0|0.004|0.030|0.020|0.004|0.000|0.933|50.459| -|3.0.1|0.002|0.017|0.006|0.002|0.000|0.762|12.384| -|3.1.0|0.002|0.018|0.006|0.002|0.002|0.770|12.161| -|3.3.0|0.002|0.018|0.007|0.003|0.002|0.779|12.792| -|3.4.0|0.002|0.023|0.010|0.002|0.001|0.889|-| - -### XZ (LZMA/LZMA2) (Decompression) - -|Version|test1|test2|test3|test4|test5|test6|test7| -|---|---|---|---|---|---|---|---| -|2.0.0|0.014|0.175|0.139|0.016|0.000|2.527|0.990| -|2.1.0|0.015|0.021|0.021|0.015|0.000|0.651|0.961| -|2.2.0|0.018|0.022|0.023|0.015|0.000|0.995|1.349| -|2.3.0|0.009|0.015|0.015|0.009|0.000|0.696|1.025| -|2.4.0|0.009|0.015|0.016|0.009|0.000|0.694|0.826| -|3.0.0|0.001|0.006|0.008|0.001|0.000|0.488|0.512| -|3.0.1|0.000|0.007|0.007|0.001|0.000|0.470|0.507| -|3.1.0|0.000|0.007|0.007|0.001|0.000|0.466|0.521| -|3.3.0|0.000|0.006|0.008|0.001|0.000|0.536|0.527| -|3.4.0|0.000|0.027|0.024|0.002|0.000|2.272|1.834| +There are three different dataset for testing. When choosing them, I was trying to have something, +that represents some real life data. For obvious reasons these test files aren't provided anywhere +in the repository. + +- Test 1: Git 2.15.0 Source Code. +- Test 2: Visual Studio Code 1.18.1 App for macOS. +- Test 3: Documentation directory from Linux kernel 4.14.2 Source Code. + +All tests were run using swcomp's "perf-test" command. SWCompression (and swcomp) were compiled +using "Release" configuration. + +## BZip2 Decompress + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117| +|4.0.1|6.797 ± 0.080|54.046 ± 1.070|7.177 ± 0.029| + +## XZ Unarchive (LZMA/LZMA2 Decompress) + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|error|24.663 ± 2.349|2.904 ± 0.076| +|4.0.1|2.475 ± 0.067|23.507 ± 0.423|2.901 ± 0.049| + +## GZip Unarchive (Deflate Decompress) + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045| +|4.0.1|3.886 ± 0.100|32.390 ± 0.896|4.295 ± 0.040| + +## 7-Zip Info Function + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|0.270 ± 0.010|crash|0.601 ± 0.057| +|4.0.1|0.258 ± 0.003|0.601 ± 0.010|0.473 ± 0.008| + +## TAR Info Function + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277| +|4.0.1|0.187 ± 0.177|1.257 ± 0.404|1.016 ± 0.325| + +## ZIP Info Function + +|Version|Test 1|Test 2|Test 3| +|---|---|---| +|4.0.0|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081| +|4.0.1|0.076 ± 0.064|0.670 ± 0.142|0.123 ± 0.080| From 4d771045729385b9ab596ee6ee49ebbad345d4a7 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:22:26 +0300 Subject: [PATCH 33/38] Add Contributing section to README and move Performance section --- README.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e1a2b0f0..8fc5ec7f 100644 --- a/README.md +++ b/README.md @@ -170,16 +170,19 @@ This documentation can be found at its own [website](http://tsolomko.github.io/S There is a small command-line program, "swcomp", which is included in this repository in "Sources/swcomp". To build it you need to uncomment several lines in "Package.swift" and run `swift build -c release`. -## Performace +## Contributing -Usage of whole module optimizations is recommended for best performance. -These optimizations are enabled by default for Release configurations. +Whether you find a bug, have a suggestion, idea or something else, +please [create an issue](https://github.com/tsolomko/SWCompression/issues) on GitHub. -[Tests Results](Tests/Results.md) document contains results of performance testing of various algorithms. +In case you have encoutered a bug, it would be especially helpful if you attach a file (archive, etc.) +that caused the bug to happen. -## Running tests locally +If you'd like to contribute code, please [create a pull request](https://github.com/tsolomko/SWCompression/pulls) on GitHub. -If you want to run tests locally you need to do some additional steps after cloning this repository: +### Executing tests locally + +If you want to run tests on your computer, you need to do some additional steps after cloning this repository: ```bash git submodule update --init --recursive @@ -193,6 +196,13 @@ Git LFS is used for storing them which is the reason for having them in the sepa since Swift Package Manager have some problems with Git LFS-enabled repositories (it requires installing git-lfs _locally_ with `--skip-smudge` option to solve these problems). +## Performace + +Usage of whole module optimizations is recommended for best performance. +These optimizations are enabled by default for Release configurations. + +[Tests Results](Tests/Results.md) document contains results of performance testing of various functions. + ## Why? First of all, existing solutions for work with compression, archives and containers have some problems. From 2438c6eec9d6fbd8b4984a5644503809c57e90bf Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:25:02 +0300 Subject: [PATCH 34/38] Fix tables in Results --- README.md | 2 +- Tests/Results.md | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 8fc5ec7f..7ae4f52e 100644 --- a/README.md +++ b/README.md @@ -182,7 +182,7 @@ If you'd like to contribute code, please [create a pull request](https://github. ### Executing tests locally -If you want to run tests on your computer, you need to do some additional steps after cloning this repository: +If you'd like to run tests on your computer, you need to do some additional steps after cloning this repository: ```bash git submodule update --init --recursive diff --git a/Tests/Results.md b/Tests/Results.md index 8f957e94..53a628cd 100644 --- a/Tests/Results.md +++ b/Tests/Results.md @@ -6,7 +6,7 @@ The main purpose of them is to track the progress from version to version. ## Tests description There are three different dataset for testing. When choosing them, I was trying to have something, -that represents some real life data. For obvious reasons these test files aren't provided anywhere +that represents real life situations. For obvious reasons these test files aren't provided anywhere in the repository. - Test 1: Git 2.15.0 Source Code. @@ -19,41 +19,41 @@ using "Release" configuration. ## BZip2 Decompress |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|6.821 ± 0.042|54.214 ± 1.398|7.255 ± 0.117| |4.0.1|6.797 ± 0.080|54.046 ± 1.070|7.177 ± 0.029| ## XZ Unarchive (LZMA/LZMA2 Decompress) |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|error|24.663 ± 2.349|2.904 ± 0.076| |4.0.1|2.475 ± 0.067|23.507 ± 0.423|2.901 ± 0.049| ## GZip Unarchive (Deflate Decompress) |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|4.007 ± 0.196|32.043 ± 0.581|4.303 ± 0.045| |4.0.1|3.886 ± 0.100|32.390 ± 0.896|4.295 ± 0.040| ## 7-Zip Info Function |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|0.270 ± 0.010|crash|0.601 ± 0.057| |4.0.1|0.258 ± 0.003|0.601 ± 0.010|0.473 ± 0.008| ## TAR Info Function |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|0.248 ± 0.172|1.563 ± 0.442|1.254 ± 0.277| |4.0.1|0.187 ± 0.177|1.257 ± 0.404|1.016 ± 0.325| ## ZIP Info Function |Version|Test 1|Test 2|Test 3| -|---|---|---| +|---|---|---|---| |4.0.0|0.072 ± 0.065|0.669 ± 0.147|0.120 ± 0.081| |4.0.1|0.076 ± 0.064|0.670 ± 0.142|0.123 ± 0.080| From 5e46c5837dfe3c5651a5f885296674649f88aef5 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:39:27 +0300 Subject: [PATCH 35/38] Swiftlint autocorrect --- Sources/swcomp/PerfTests/PerfTestGroup.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/swcomp/PerfTests/PerfTestGroup.swift b/Sources/swcomp/PerfTests/PerfTestGroup.swift index c8b865cd..d33e80c2 100644 --- a/Sources/swcomp/PerfTests/PerfTestGroup.swift +++ b/Sources/swcomp/PerfTests/PerfTestGroup.swift @@ -13,4 +13,4 @@ class PerfTestGroup: CommandGroup { let children: [Routable] = [UnGzip(), UnXz(), UnBz2(), InfoTar(), InfoZip(), Info7z()] -} \ No newline at end of file +} From 7dbd11f035b5823bb23864bcc30781d9d359c8e8 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:41:55 +0300 Subject: [PATCH 36/38] Update summary in podspec --- SWCompression.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SWCompression.podspec b/SWCompression.podspec index cb4e03fe..cce4afcd 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -2,7 +2,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" s.version = "4.0.1-dev" - s.summary = "A framework with functionality for working with compression, archives and containers." + s.summary = "A framework with functions for working with compression, archives and containers." s.description = "A framework with (de)compression algorithms and functions for processing various archives and containers." From e2054e15cc7d107ffa5c64da6d104a87e54e4634 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:42:16 +0300 Subject: [PATCH 37/38] Remove v release prefix from podspec --- SWCompression.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SWCompression.podspec b/SWCompression.podspec index cce4afcd..a0325dfe 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -18,7 +18,7 @@ Pod::Spec.new do |s| s.tvos.deployment_target = "9.0" s.watchos.deployment_target = "2.0" - s.source = { :git => "https://github.com/tsolomko/SWCompression.git", :tag => "v#{s.version}" } + s.source = { :git => "https://github.com/tsolomko/SWCompression.git", :tag => "#{s.version}" } s.subspec 'Deflate' do |sp| sp.source_files = 'Sources/{Deflate/*,Common/*}.swift' From b471e661067f0f053e089d030cdc8d18658851f9 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sat, 25 Nov 2017 18:43:39 +0300 Subject: [PATCH 38/38] Prepare for 4.0.1 --- .jazzy.yaml | 4 +-- CHANGELOG.md | 14 ++++++++ SWCompression.podspec | 2 +- Sources/Service/Info.plist | 2 +- Sources/swcomp/main.swift | 2 +- docs/Archives.html | 10 +++--- docs/Classes/BZip2.html | 8 ++--- docs/Classes/BZip2/BlockSize.html | 18 +++++----- docs/Classes/Deflate.html | 4 +-- docs/Classes/GzipArchive.html | 8 ++--- docs/Classes/GzipArchive/Member.html | 4 +-- docs/Classes/LZMA.html | 2 +- docs/Classes/LZMA2.html | 2 +- docs/Classes/SevenZipContainer.html | 4 +-- docs/Classes/TarContainer.html | 4 +-- docs/Classes/XZArchive.html | 4 +-- docs/Classes/ZipContainer.html | 4 +-- docs/Classes/ZlibArchive.html | 4 +-- docs/Common Auxiliary Types.html | 10 +++--- docs/Compression.html | 8 ++--- docs/Containers.html | 18 +++++----- docs/Enums/BZip2Error.html | 20 +++++------ docs/Enums/CompressionMethod.html | 12 +++---- docs/Enums/ContainerEntryType.html | 20 +++++------ docs/Enums/DeflateError.html | 8 ++--- docs/Enums/FileSystemType.html | 10 +++--- docs/Enums/GzipError.html | 14 ++++---- docs/Enums/LZMA2Error.html | 8 ++--- docs/Enums/LZMAError.html | 14 ++++---- docs/Enums/SevenZipError.html | 22 ++++++------ docs/Enums/TarError.html | 8 ++--- docs/Enums/XZError.html | 18 +++++----- docs/Enums/ZipError.html | 22 ++++++------ docs/Enums/ZlibError.html | 10 +++--- docs/Errors.html | 20 +++++------ docs/Protocols.html | 12 +++---- docs/Protocols/Archive.html | 2 +- docs/Protocols/CompressionAlgorithm.html | 2 +- docs/Protocols/Container.html | 4 +-- docs/Protocols/ContainerEntry.html | 4 +-- docs/Protocols/ContainerEntryInfo.html | 14 ++++---- docs/Protocols/DecompressionAlgorithm.html | 2 +- docs/Structs/DosAttributes.html | 16 ++++----- docs/Structs/GzipHeader.html | 14 ++++---- docs/Structs/Permissions.html | 28 +++++++-------- docs/Structs/SevenZipEntry.html | 4 +-- docs/Structs/SevenZipEntryInfo.html | 26 +++++++------- docs/Structs/TarEntry.html | 4 +-- docs/Structs/TarEntryInfo.html | 32 +++++++++--------- docs/Structs/ZipEntry.html | 4 +-- docs/Structs/ZipEntryInfo.html | 26 +++++++------- docs/Structs/ZlibHeader.html | 10 +++--- docs/Structs/ZlibHeader/CompressionLevel.html | 8 ++--- .../Resources/Documents/Archives.html | 10 +++--- .../Resources/Documents/Classes/BZip2.html | 8 ++--- .../Documents/Classes/BZip2/BlockSize.html | 18 +++++----- .../Resources/Documents/Classes/Deflate.html | 4 +-- .../Documents/Classes/GzipArchive.html | 8 ++--- .../Documents/Classes/GzipArchive/Member.html | 4 +-- .../Resources/Documents/Classes/LZMA.html | 2 +- .../Resources/Documents/Classes/LZMA2.html | 2 +- .../Documents/Classes/SevenZipContainer.html | 4 +-- .../Documents/Classes/TarContainer.html | 4 +-- .../Documents/Classes/XZArchive.html | 4 +-- .../Documents/Classes/ZipContainer.html | 4 +-- .../Documents/Classes/ZlibArchive.html | 4 +-- .../Documents/Common Auxiliary Types.html | 10 +++--- .../Resources/Documents/Compression.html | 8 ++--- .../Resources/Documents/Containers.html | 18 +++++----- .../Resources/Documents/Enums/BZip2Error.html | 20 +++++------ .../Documents/Enums/CompressionMethod.html | 12 +++---- .../Documents/Enums/ContainerEntryType.html | 20 +++++------ .../Documents/Enums/DeflateError.html | 8 ++--- .../Documents/Enums/FileSystemType.html | 10 +++--- .../Resources/Documents/Enums/GzipError.html | 14 ++++---- .../Resources/Documents/Enums/LZMA2Error.html | 8 ++--- .../Resources/Documents/Enums/LZMAError.html | 14 ++++---- .../Documents/Enums/SevenZipError.html | 22 ++++++------ .../Resources/Documents/Enums/TarError.html | 8 ++--- .../Resources/Documents/Enums/XZError.html | 18 +++++----- .../Resources/Documents/Enums/ZipError.html | 22 ++++++------ .../Resources/Documents/Enums/ZlibError.html | 10 +++--- .../Contents/Resources/Documents/Errors.html | 20 +++++------ .../Resources/Documents/Protocols.html | 12 +++---- .../Documents/Protocols/Archive.html | 2 +- .../Protocols/CompressionAlgorithm.html | 2 +- .../Documents/Protocols/Container.html | 4 +-- .../Documents/Protocols/ContainerEntry.html | 4 +-- .../Protocols/ContainerEntryInfo.html | 14 ++++---- .../Protocols/DecompressionAlgorithm.html | 2 +- .../Documents/Structs/DosAttributes.html | 16 ++++----- .../Documents/Structs/GzipHeader.html | 14 ++++---- .../Documents/Structs/Permissions.html | 28 +++++++-------- .../Documents/Structs/SevenZipEntry.html | 4 +-- .../Documents/Structs/SevenZipEntryInfo.html | 26 +++++++------- .../Resources/Documents/Structs/TarEntry.html | 4 +-- .../Documents/Structs/TarEntryInfo.html | 32 +++++++++--------- .../Resources/Documents/Structs/ZipEntry.html | 4 +-- .../Documents/Structs/ZipEntryInfo.html | 26 +++++++------- .../Documents/Structs/ZlibHeader.html | 10 +++--- .../Structs/ZlibHeader/CompressionLevel.html | 8 ++--- .../Contents/Resources/Documents/index.html | 21 ++++++++---- docs/docsets/SWCompression.tgz | Bin 124368 -> 124513 bytes docs/index.html | 21 ++++++++---- 104 files changed, 579 insertions(+), 547 deletions(-) diff --git a/.jazzy.yaml b/.jazzy.yaml index 1baa78e3..e74e5fdd 100644 --- a/.jazzy.yaml +++ b/.jazzy.yaml @@ -3,11 +3,11 @@ clean: true exclude: Tests/ author: Timofey Solomko module: SWCompression -module_version: 4.0.1-dev +module_version: 4.0.1 copyright: '© 2017 Timofey Solomko' readme: README.md github_url: https://github.com/tsolomko/SWCompression -github_file_prefix: https://github.com/tsolomko/SWCompression/tree/develop +github_file_prefix: https://github.com/tsolomko/SWCompression/tree/4.0.1 theme: fullwidth custom_categories: diff --git a/CHANGELOG.md b/CHANGELOG.md index a4bab730..b1ea79f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 4.0.1 + +- Git tag for updates no longer has "v" prefix. +- Fixed incorrectly thrown `XZError.wrongDataSize` without actually trying to decompress anything. +- Fixed crash when opening 7-Zip containers with more than 255 entries with empty streams. +- No longer verify if ZIP string field needs UTF-8 encoding, if language encoding flag is set. +- Reduced memory usage by Deflate compression. +- Added "perf-test" command to swcomp, which is used for measuring performance. +- Internal changes to tests: + - `LONG_TESTS` and `PERF_TESTS` compiler flags are no longer used for testing. + - Reduced size of test6 and test7 from 5 megabytes to 1 megabyte. + - Removed test7 for BZip2 compression. + - Added results for 4.0.0 and 4.0.1 from new performance measuring scheme. + ## 4.0.0 - Reworked Container API: diff --git a/SWCompression.podspec b/SWCompression.podspec index a0325dfe..abb6904f 100644 --- a/SWCompression.podspec +++ b/SWCompression.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "SWCompression" - s.version = "4.0.1-dev" + s.version = "4.0.1" s.summary = "A framework with functions for working with compression, archives and containers." s.description = "A framework with (de)compression algorithms and functions for processing various archives and containers." diff --git a/Sources/Service/Info.plist b/Sources/Service/Info.plist index e6a7ca47..0a1b5a1e 100644 --- a/Sources/Service/Info.plist +++ b/Sources/Service/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 4.0.1-dev + 4.0.1 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSHumanReadableCopyright diff --git a/Sources/swcomp/main.swift b/Sources/swcomp/main.swift index d2b2e70c..ae90b939 100644 --- a/Sources/swcomp/main.swift +++ b/Sources/swcomp/main.swift @@ -7,7 +7,7 @@ import Foundation import SWCompression import SwiftCLI -let cli = CLI(name: "swcomp", version: "4.0.1-dev", +let cli = CLI(name: "swcomp", version: "4.0.1", description: """ swcomp - small command-line client for SWCompression framework. Serves as an example of SWCompression usage. diff --git a/docs/Archives.html b/docs/Archives.html index 1802bf84..70b422c1 100644 --- a/docs/Archives.html +++ b/docs/Archives.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

diff --git a/docs/Classes/BZip2.html b/docs/Classes/BZip2.html index c54d7230..ec4a50da 100644 --- a/docs/Classes/BZip2.html +++ b/docs/Classes/BZip2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

@@ -341,7 +341,7 @@

Parameters

@@ -402,7 +402,7 @@

Parameters

@@ -437,7 +437,7 @@

Declaration

diff --git a/docs/Classes/BZip2/BlockSize.html b/docs/Classes/BZip2/BlockSize.html index df4a8b6f..c263205b 100644 --- a/docs/Classes/BZip2/BlockSize.html +++ b/docs/Classes/BZip2/BlockSize.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

diff --git a/docs/Classes/Deflate.html b/docs/Classes/Deflate.html index faacdfd6..e2c141b9 100644 --- a/docs/Classes/Deflate.html +++ b/docs/Classes/Deflate.html @@ -287,7 +287,7 @@

Return Value

Decompressed data.

@@ -349,7 +349,7 @@

Parameters

diff --git a/docs/Classes/GzipArchive.html b/docs/Classes/GzipArchive.html index 6604d3fa..4c050445 100644 --- a/docs/Classes/GzipArchive.html +++ b/docs/Classes/GzipArchive.html @@ -254,7 +254,7 @@

Declaration

@@ -319,7 +319,7 @@

Return Value

Unarchived data.

@@ -380,7 +380,7 @@

Return Value

Unarchived data.

@@ -519,7 +519,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/Classes/GzipArchive/Member.html b/docs/Classes/GzipArchive/Member.html index 1f52bdac..90e08852 100644 --- a/docs/Classes/GzipArchive/Member.html +++ b/docs/Classes/GzipArchive/Member.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Classes/LZMA.html b/docs/Classes/LZMA.html index 29c353e1..81aa0987 100644 --- a/docs/Classes/LZMA.html +++ b/docs/Classes/LZMA.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/Classes/LZMA2.html b/docs/Classes/LZMA2.html index b769e1e7..4c667791 100644 --- a/docs/Classes/LZMA2.html +++ b/docs/Classes/LZMA2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/Classes/SevenZipContainer.html b/docs/Classes/SevenZipContainer.html index 24342ac3..8d271558 100644 --- a/docs/Classes/SevenZipContainer.html +++ b/docs/Classes/SevenZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of SevenZipEntry.

@@ -356,7 +356,7 @@

Return Value

Array of SevenZipEntryInfo.

diff --git a/docs/Classes/TarContainer.html b/docs/Classes/TarContainer.html index c6aaddc9..cc3a54b6 100644 --- a/docs/Classes/TarContainer.html +++ b/docs/Classes/TarContainer.html @@ -288,7 +288,7 @@

Return Value

Array of TarEntry.

@@ -353,7 +353,7 @@

Return Value

Array of TarEntryInfo.

diff --git a/docs/Classes/XZArchive.html b/docs/Classes/XZArchive.html index b0061442..df0e9c6e 100644 --- a/docs/Classes/XZArchive.html +++ b/docs/Classes/XZArchive.html @@ -287,7 +287,7 @@

Return Value

Unarchived data.

@@ -352,7 +352,7 @@

Return Value

Array of unarchived data from every stream in archive.

diff --git a/docs/Classes/ZipContainer.html b/docs/Classes/ZipContainer.html index 8cfcd660..005a8998 100644 --- a/docs/Classes/ZipContainer.html +++ b/docs/Classes/ZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of ZipEntry.

@@ -354,7 +354,7 @@

Return Value

Array of ZipEntryInfo.

diff --git a/docs/Classes/ZlibArchive.html b/docs/Classes/ZlibArchive.html index abadb3b6..b3c906d3 100644 --- a/docs/Classes/ZlibArchive.html +++ b/docs/Classes/ZlibArchive.html @@ -288,7 +288,7 @@

Return Value

Unarchived data.

@@ -347,7 +347,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/Common Auxiliary Types.html b/docs/Common Auxiliary Types.html index 5dd2e38e..2915373d 100644 --- a/docs/Common Auxiliary Types.html +++ b/docs/Common Auxiliary Types.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -387,7 +387,7 @@

Declaration

diff --git a/docs/Compression.html b/docs/Compression.html index 87060dfb..e2abc738 100644 --- a/docs/Compression.html +++ b/docs/Compression.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

diff --git a/docs/Containers.html b/docs/Containers.html index 6c0ac946..d5823f57 100644 --- a/docs/Containers.html +++ b/docs/Containers.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

@@ -456,7 +456,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

diff --git a/docs/Enums/BZip2Error.html b/docs/Enums/BZip2Error.html index 669b8f28..41a20738 100644 --- a/docs/Enums/BZip2Error.html +++ b/docs/Enums/BZip2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

diff --git a/docs/Enums/CompressionMethod.html b/docs/Enums/CompressionMethod.html index 6a1b291f..f4065f0f 100644 --- a/docs/Enums/CompressionMethod.html +++ b/docs/Enums/CompressionMethod.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

diff --git a/docs/Enums/ContainerEntryType.html b/docs/Enums/ContainerEntryType.html index 4bab0cc7..0f96692c 100644 --- a/docs/Enums/ContainerEntryType.html +++ b/docs/Enums/ContainerEntryType.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

@@ -559,7 +559,7 @@

Declaration

diff --git a/docs/Enums/DeflateError.html b/docs/Enums/DeflateError.html index e44ba4cf..68479720 100644 --- a/docs/Enums/DeflateError.html +++ b/docs/Enums/DeflateError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/Enums/FileSystemType.html b/docs/Enums/FileSystemType.html index 4707b09c..ba979594 100644 --- a/docs/Enums/FileSystemType.html +++ b/docs/Enums/FileSystemType.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -395,7 +395,7 @@

Declaration

diff --git a/docs/Enums/GzipError.html b/docs/Enums/GzipError.html index 0cc7ea3b..9ff4fffa 100644 --- a/docs/Enums/GzipError.html +++ b/docs/Enums/GzipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -399,7 +399,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -467,7 +467,7 @@

Declaration

diff --git a/docs/Enums/LZMA2Error.html b/docs/Enums/LZMA2Error.html index ffe060c9..dd576725 100644 --- a/docs/Enums/LZMA2Error.html +++ b/docs/Enums/LZMA2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

diff --git a/docs/Enums/LZMAError.html b/docs/Enums/LZMAError.html index c7a1d409..62e03cf3 100644 --- a/docs/Enums/LZMAError.html +++ b/docs/Enums/LZMAError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

diff --git a/docs/Enums/SevenZipError.html b/docs/Enums/SevenZipError.html index 0c7868d5..e30dd089 100644 --- a/docs/Enums/SevenZipError.html +++ b/docs/Enums/SevenZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -358,7 +358,7 @@

Declaration

@@ -392,7 +392,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -494,7 +494,7 @@

Declaration

@@ -528,7 +528,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -597,7 +597,7 @@

Declaration

diff --git a/docs/Enums/TarError.html b/docs/Enums/TarError.html index da0cf505..c0fb77e4 100644 --- a/docs/Enums/TarError.html +++ b/docs/Enums/TarError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/Enums/XZError.html b/docs/Enums/XZError.html index 987bcd6d..f80c407c 100644 --- a/docs/Enums/XZError.html +++ b/docs/Enums/XZError.html @@ -254,7 +254,7 @@

Declaration

@@ -289,7 +289,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -468,7 +468,7 @@

Declaration

@@ -502,7 +502,7 @@

Declaration

@@ -536,7 +536,7 @@

Declaration

diff --git a/docs/Enums/ZipError.html b/docs/Enums/ZipError.html index b60db4e9..532ce121 100644 --- a/docs/Enums/ZipError.html +++ b/docs/Enums/ZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

@@ -595,7 +595,7 @@

Declaration

diff --git a/docs/Enums/ZlibError.html b/docs/Enums/ZlibError.html index e24e00c5..e115362d 100644 --- a/docs/Enums/ZlibError.html +++ b/docs/Enums/ZlibError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

diff --git a/docs/Errors.html b/docs/Errors.html index 9e06a9cf..e20b28cc 100644 --- a/docs/Errors.html +++ b/docs/Errors.html @@ -247,7 +247,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -319,7 +319,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -427,7 +427,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -499,7 +499,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -571,7 +571,7 @@

Declaration

diff --git a/docs/Protocols.html b/docs/Protocols.html index dfeb243c..7332ceee 100644 --- a/docs/Protocols.html +++ b/docs/Protocols.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

diff --git a/docs/Protocols/Archive.html b/docs/Protocols/Archive.html index 008aab34..11f49e87 100644 --- a/docs/Protocols/Archive.html +++ b/docs/Protocols/Archive.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Protocols/CompressionAlgorithm.html b/docs/Protocols/CompressionAlgorithm.html index c46d8382..7f083158 100644 --- a/docs/Protocols/CompressionAlgorithm.html +++ b/docs/Protocols/CompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Protocols/Container.html b/docs/Protocols/Container.html index 7dc89a70..19307a99 100644 --- a/docs/Protocols/Container.html +++ b/docs/Protocols/Container.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Protocols/ContainerEntry.html b/docs/Protocols/ContainerEntry.html index 37692e09..81c9aba0 100644 --- a/docs/Protocols/ContainerEntry.html +++ b/docs/Protocols/ContainerEntry.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/Protocols/ContainerEntryInfo.html b/docs/Protocols/ContainerEntryInfo.html index da33c77f..fd0aef9c 100644 --- a/docs/Protocols/ContainerEntryInfo.html +++ b/docs/Protocols/ContainerEntryInfo.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

diff --git a/docs/Protocols/DecompressionAlgorithm.html b/docs/Protocols/DecompressionAlgorithm.html index 7344c9af..101e82eb 100644 --- a/docs/Protocols/DecompressionAlgorithm.html +++ b/docs/Protocols/DecompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/Structs/DosAttributes.html b/docs/Structs/DosAttributes.html index 323b0b19..7297c154 100644 --- a/docs/Structs/DosAttributes.html +++ b/docs/Structs/DosAttributes.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

diff --git a/docs/Structs/GzipHeader.html b/docs/Structs/GzipHeader.html index 6c6c132d..30166eed 100644 --- a/docs/Structs/GzipHeader.html +++ b/docs/Structs/GzipHeader.html @@ -253,7 +253,7 @@

Declaration

@@ -285,7 +285,7 @@

Declaration

@@ -315,7 +315,7 @@

Declaration

@@ -345,7 +345,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -405,7 +405,7 @@

Declaration

@@ -460,7 +460,7 @@

Parameters

diff --git a/docs/Structs/Permissions.html b/docs/Structs/Permissions.html index 823b7f40..3c9d104a 100644 --- a/docs/Structs/Permissions.html +++ b/docs/Structs/Permissions.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -493,7 +493,7 @@

Declaration

@@ -523,7 +523,7 @@

Declaration

@@ -553,7 +553,7 @@

Declaration

@@ -583,7 +583,7 @@

Declaration

@@ -613,7 +613,7 @@

Declaration

@@ -643,7 +643,7 @@

Declaration

diff --git a/docs/Structs/SevenZipEntry.html b/docs/Structs/SevenZipEntry.html index 82eddfb0..d4e23a69 100644 --- a/docs/Structs/SevenZipEntry.html +++ b/docs/Structs/SevenZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/SevenZipEntryInfo.html b/docs/Structs/SevenZipEntryInfo.html index 910d68ef..f7e001e5 100644 --- a/docs/Structs/SevenZipEntryInfo.html +++ b/docs/Structs/SevenZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -346,7 +346,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -404,7 +404,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -475,7 +475,7 @@

Declaration

@@ -505,7 +505,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -565,7 +565,7 @@

Declaration

@@ -596,7 +596,7 @@

Declaration

@@ -626,7 +626,7 @@

Declaration

diff --git a/docs/Structs/TarEntry.html b/docs/Structs/TarEntry.html index dd52586a..1d9d8fef 100644 --- a/docs/Structs/TarEntry.html +++ b/docs/Structs/TarEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/TarEntryInfo.html b/docs/Structs/TarEntryInfo.html index a30ecfa5..040f4a58 100644 --- a/docs/Structs/TarEntryInfo.html +++ b/docs/Structs/TarEntryInfo.html @@ -270,7 +270,7 @@

Declaration

@@ -300,7 +300,7 @@

Declaration

@@ -329,7 +329,7 @@

Declaration

@@ -359,7 +359,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -419,7 +419,7 @@

Declaration

@@ -448,7 +448,7 @@

Declaration

@@ -489,7 +489,7 @@

Declaration

@@ -519,7 +519,7 @@

Declaration

@@ -549,7 +549,7 @@

Declaration

@@ -579,7 +579,7 @@

Declaration

@@ -609,7 +609,7 @@

Declaration

@@ -639,7 +639,7 @@

Declaration

@@ -669,7 +669,7 @@

Declaration

@@ -699,7 +699,7 @@

Declaration

@@ -739,7 +739,7 @@

Declaration

diff --git a/docs/Structs/ZipEntry.html b/docs/Structs/ZipEntry.html index ad44420d..3dfb86e2 100644 --- a/docs/Structs/ZipEntry.html +++ b/docs/Structs/ZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/Structs/ZipEntryInfo.html b/docs/Structs/ZipEntryInfo.html index 4f70fd7b..933ecd98 100644 --- a/docs/Structs/ZipEntryInfo.html +++ b/docs/Structs/ZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -354,7 +354,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -429,7 +429,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -501,7 +501,7 @@

Declaration

@@ -532,7 +532,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -592,7 +592,7 @@

Declaration

@@ -622,7 +622,7 @@

Declaration

@@ -652,7 +652,7 @@

Declaration

diff --git a/docs/Structs/ZlibHeader.html b/docs/Structs/ZlibHeader.html index 06e94745..c953ca1c 100644 --- a/docs/Structs/ZlibHeader.html +++ b/docs/Structs/ZlibHeader.html @@ -254,7 +254,7 @@

Declaration

@@ -284,7 +284,7 @@

Declaration

@@ -314,7 +314,7 @@

Declaration

@@ -344,7 +344,7 @@

Declaration

@@ -401,7 +401,7 @@

Parameters

diff --git a/docs/Structs/ZlibHeader/CompressionLevel.html b/docs/Structs/ZlibHeader/CompressionLevel.html index e8ef289c..0abf2aea 100644 --- a/docs/Structs/ZlibHeader/CompressionLevel.html +++ b/docs/Structs/ZlibHeader/CompressionLevel.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html index 1802bf84..70b422c1 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Archives.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

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 c54d7230..ec4a50da 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

@@ -341,7 +341,7 @@

Parameters

@@ -402,7 +402,7 @@

Parameters

@@ -437,7 +437,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html index df4a8b6f..c263205b 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/BZip2/BlockSize.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

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 faacdfd6..e2c141b9 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/Deflate.html @@ -287,7 +287,7 @@

Return Value

Decompressed data.

@@ -349,7 +349,7 @@

Parameters

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 6604d3fa..4c050445 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive.html @@ -254,7 +254,7 @@

Declaration

@@ -319,7 +319,7 @@

Return Value

Unarchived data.

@@ -380,7 +380,7 @@

Return Value

Unarchived data.

@@ -519,7 +519,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html index 1f52bdac..90e08852 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/GzipArchive/Member.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

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 29c353e1..81aa0987 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

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 b769e1e7..4c667791 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/LZMA2.html @@ -282,7 +282,7 @@

Return Value

Decompressed data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html index 24342ac3..8d271558 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/SevenZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of SevenZipEntry.

@@ -356,7 +356,7 @@

Return Value

Array of SevenZipEntryInfo.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html index c6aaddc9..cc3a54b6 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/TarContainer.html @@ -288,7 +288,7 @@

Return Value

Array of TarEntry.

@@ -353,7 +353,7 @@

Return Value

Array of TarEntryInfo.

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 b0061442..df0e9c6e 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/XZArchive.html @@ -287,7 +287,7 @@

Return Value

Unarchived data.

@@ -352,7 +352,7 @@

Return Value

Array of unarchived data from every stream in archive.

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 8cfcd660..005a8998 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZipContainer.html @@ -289,7 +289,7 @@

Return Value

Array of ZipEntry.

@@ -354,7 +354,7 @@

Return Value

Array of ZipEntryInfo.

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 abadb3b6..b3c906d3 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Classes/ZlibArchive.html @@ -288,7 +288,7 @@

Return Value

Unarchived data.

@@ -347,7 +347,7 @@

Return Value

Resulting archive’s data.

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html index 5dd2e38e..2915373d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Common Auxiliary Types.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -387,7 +387,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html index 87060dfb..e2abc738 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Compression.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html index 6c0ac946..d5823f57 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Containers.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

@@ -456,7 +456,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

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 669b8f28..41a20738 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/BZip2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html index 6a1b291f..f4065f0f 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/CompressionMethod.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html index 4bab0cc7..0f96692c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ContainerEntryType.html @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -423,7 +423,7 @@

Declaration

@@ -457,7 +457,7 @@

Declaration

@@ -491,7 +491,7 @@

Declaration

@@ -525,7 +525,7 @@

Declaration

@@ -559,7 +559,7 @@

Declaration

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 e44ba4cf..68479720 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/DeflateError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html index 4707b09c..ba979594 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/FileSystemType.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -395,7 +395,7 @@

Declaration

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 0cc7ea3b..9ff4fffa 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/GzipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -399,7 +399,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -467,7 +467,7 @@

Declaration

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 ffe060c9..dd576725 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMA2Error.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

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 c7a1d409..62e03cf3 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/LZMAError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html index 0c7868d5..e30dd089 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/SevenZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -358,7 +358,7 @@

Declaration

@@ -392,7 +392,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -494,7 +494,7 @@

Declaration

@@ -528,7 +528,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -597,7 +597,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html index da0cf505..c0fb77e4 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/TarError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

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 987bcd6d..f80c407c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/XZError.html @@ -254,7 +254,7 @@

Declaration

@@ -289,7 +289,7 @@

Declaration

@@ -323,7 +323,7 @@

Declaration

@@ -357,7 +357,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -426,7 +426,7 @@

Declaration

@@ -468,7 +468,7 @@

Declaration

@@ -502,7 +502,7 @@

Declaration

@@ -536,7 +536,7 @@

Declaration

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 b60db4e9..532ce121 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZipError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -390,7 +390,7 @@

Declaration

@@ -424,7 +424,7 @@

Declaration

@@ -458,7 +458,7 @@

Declaration

@@ -492,7 +492,7 @@

Declaration

@@ -526,7 +526,7 @@

Declaration

@@ -561,7 +561,7 @@

Declaration

@@ -595,7 +595,7 @@

Declaration

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 e24e00c5..e115362d 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Enums/ZlibError.html @@ -254,7 +254,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -322,7 +322,7 @@

Declaration

@@ -356,7 +356,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html index 9e06a9cf..e20b28cc 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Errors.html @@ -247,7 +247,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -319,7 +319,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -427,7 +427,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -499,7 +499,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -571,7 +571,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html index dfeb243c..7332ceee 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols.html @@ -246,7 +246,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

@@ -316,7 +316,7 @@

Declaration

@@ -351,7 +351,7 @@

Declaration

@@ -386,7 +386,7 @@

Declaration

@@ -421,7 +421,7 @@

Declaration

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 008aab34..11f49e87 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Archive.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html index c46d8382..7f083158 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/CompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html index 7dc89a70..19307a99 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/Container.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html index 37692e09..81c9aba0 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntry.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html index da33c77f..fd0aef9c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/ContainerEntryInfo.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

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 7344c9af..101e82eb 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Protocols/DecompressionAlgorithm.html @@ -253,7 +253,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html index 323b0b19..7297c154 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/DosAttributes.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

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 6c6c132d..30166eed 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/GzipHeader.html @@ -253,7 +253,7 @@

Declaration

@@ -285,7 +285,7 @@

Declaration

@@ -315,7 +315,7 @@

Declaration

@@ -345,7 +345,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -405,7 +405,7 @@

Declaration

@@ -460,7 +460,7 @@

Parameters

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html index 823b7f40..3c9d104a 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/Permissions.html @@ -253,7 +253,7 @@

Declaration

@@ -283,7 +283,7 @@

Declaration

@@ -313,7 +313,7 @@

Declaration

@@ -343,7 +343,7 @@

Declaration

@@ -373,7 +373,7 @@

Declaration

@@ -403,7 +403,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -463,7 +463,7 @@

Declaration

@@ -493,7 +493,7 @@

Declaration

@@ -523,7 +523,7 @@

Declaration

@@ -553,7 +553,7 @@

Declaration

@@ -583,7 +583,7 @@

Declaration

@@ -613,7 +613,7 @@

Declaration

@@ -643,7 +643,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html index 82eddfb0..d4e23a69 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html index 910d68ef..f7e001e5 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/SevenZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -346,7 +346,7 @@

Declaration

@@ -375,7 +375,7 @@

Declaration

@@ -404,7 +404,7 @@

Declaration

@@ -433,7 +433,7 @@

Declaration

@@ -475,7 +475,7 @@

Declaration

@@ -505,7 +505,7 @@

Declaration

@@ -535,7 +535,7 @@

Declaration

@@ -565,7 +565,7 @@

Declaration

@@ -596,7 +596,7 @@

Declaration

@@ -626,7 +626,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html index dd52586a..1d9d8fef 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html index a30ecfa5..040f4a58 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/TarEntryInfo.html @@ -270,7 +270,7 @@

Declaration

@@ -300,7 +300,7 @@

Declaration

@@ -329,7 +329,7 @@

Declaration

@@ -359,7 +359,7 @@

Declaration

@@ -389,7 +389,7 @@

Declaration

@@ -419,7 +419,7 @@

Declaration

@@ -448,7 +448,7 @@

Declaration

@@ -489,7 +489,7 @@

Declaration

@@ -519,7 +519,7 @@

Declaration

@@ -549,7 +549,7 @@

Declaration

@@ -579,7 +579,7 @@

Declaration

@@ -609,7 +609,7 @@

Declaration

@@ -639,7 +639,7 @@

Declaration

@@ -669,7 +669,7 @@

Declaration

@@ -699,7 +699,7 @@

Declaration

@@ -739,7 +739,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html index ad44420d..3dfb86e2 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntry.html @@ -252,7 +252,7 @@

Declaration

@@ -281,7 +281,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html index 4f70fd7b..933ecd98 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZipEntryInfo.html @@ -259,7 +259,7 @@

Declaration

@@ -288,7 +288,7 @@

Declaration

@@ -317,7 +317,7 @@

Declaration

@@ -354,7 +354,7 @@

Declaration

@@ -391,7 +391,7 @@

Declaration

@@ -429,7 +429,7 @@

Declaration

@@ -460,7 +460,7 @@

Declaration

@@ -501,7 +501,7 @@

Declaration

@@ -532,7 +532,7 @@

Declaration

@@ -562,7 +562,7 @@

Declaration

@@ -592,7 +592,7 @@

Declaration

@@ -622,7 +622,7 @@

Declaration

@@ -652,7 +652,7 @@

Declaration

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 06e94745..c953ca1c 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/Structs/ZlibHeader.html @@ -254,7 +254,7 @@

Declaration

@@ -284,7 +284,7 @@

Declaration

@@ -314,7 +314,7 @@

Declaration

@@ -344,7 +344,7 @@

Declaration

@@ -401,7 +401,7 @@

Parameters

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 e8ef289c..0abf2aea 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 @@ -253,7 +253,7 @@

Declaration

@@ -287,7 +287,7 @@

Declaration

@@ -321,7 +321,7 @@

Declaration

@@ -355,7 +355,7 @@

Declaration

diff --git a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html index 8fed2d25..d33842ff 100644 --- a/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html +++ b/docs/docsets/SWCompression.docset/Contents/Resources/Documents/index.html @@ -427,15 +427,18 @@

Sophisticated example

There is a small command-line program, swcomp, which is included in this repository in Sources/swcomp. To build it you need to uncomment several lines in Package.swift and run swift build -c release.

-

Performace

+

Contributing

-

Usage of whole module optimizations is recommended for best performance. -These optimizations are enabled by default for Release configurations.

+

Whether you find a bug, have a suggestion, idea or something else, +please create an issue on GitHub.

-

Tests Results document contains results of performance testing of various algorithms.

-

Running tests locally

+

In case you have encoutered a bug, it would be especially helpful if you attach a file (archive, etc.) +that caused the bug to happen.

-

If you want to run tests locally you need to do some additional steps after cloning this repository:

+

If you’d like to contribute code, please create a pull request on GitHub.

+

Executing tests locally

+ +

If you’d like to run tests on your computer, you need to do some additional steps after cloning this repository:

git submodule update --init --recursive
 cd Tests/Test\ Files
 git lfs pull
@@ -446,6 +449,12 @@ 

Running tests locally

Git LFS is used for storing them which is the reason for having them in the separate repository, since Swift Package Manager have some problems with Git LFS-enabled repositories (it requires installing git-lfs locally with --skip-smudge option to solve these problems).

+

Performace

+ +

Usage of whole module optimizations is recommended for best performance. +These optimizations are enabled by default for Release configurations.

+ +

Tests Results document contains results of performance testing of various functions.

Why?

First of all, existing solutions for work with compression, archives and containers have some problems. diff --git a/docs/docsets/SWCompression.tgz b/docs/docsets/SWCompression.tgz index d162eab259f238b96e966a944993e841c7dff0e1..6f6498b48a49ba9996a5f27645b7abe343348983 100644 GIT binary patch delta 122312 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 NQ1R8%VI|OF{ST2}OvC^H delta 122143 zcmZ^qWl$bn(57*>;O_43?gR}IG`PD2m%$}C1Pv}hg1fu(;O-FI-R0T5yS3l`+N$%T zr>4%-OifRB^?lv51A?C(hX=@_5g;@car7Xd&pMI4h)2Egm$`aSHUo=zlqIlJC-PgU zJq6O?4Pg)ip(GMQQw^LEliJ6>u{LweaUIF1KGw9ulhaog{k9lRwRpBav}X#)G8=9( zfBrP=vNupm(*4)!Y@kF)408=H+clASrPj}*K>Bd+r20he-Y!Q3njXmf@IcJ_^8#qT zYu$r^_xq(GWG2_LimP(Qky&%Y$+C`A(?0*%>SGu$rB|spKdd=nxw4d)WBzFDmkV)n!IKi(SL3uB@y9qRbf^4OpZ77~PK-X�e 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 z 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 example

There is a small command-line program, swcomp, which is included in this repository in Sources/swcomp. To build it you need to uncomment several lines in Package.swift and run swift build -c release.

-

Performace

+

Contributing

-

Usage of whole module optimizations is recommended for best performance. -These optimizations are enabled by default for Release configurations.

+

Whether you find a bug, have a suggestion, idea or something else, +please create an issue on GitHub.

-

Tests Results document contains results of performance testing of various algorithms.

-

Running tests locally

+

In case you have encoutered a bug, it would be especially helpful if you attach a file (archive, etc.) +that caused the bug to happen.

-

If you want to run tests locally you need to do some additional steps after cloning this repository:

+

If you’d like to contribute code, please create a pull request on GitHub.

+

Executing tests locally

+ +

If you’d like to run tests on your computer, you need to do some additional steps after cloning this repository:

git submodule update --init --recursive
 cd Tests/Test\ Files
 git lfs pull
@@ -446,6 +449,12 @@ 

Running tests locally

Git LFS is used for storing them which is the reason for having them in the separate repository, since Swift Package Manager have some problems with Git LFS-enabled repositories (it requires installing git-lfs locally with --skip-smudge option to solve these problems).

+

Performace

+ +

Usage of whole module optimizations is recommended for best performance. +These optimizations are enabled by default for Release configurations.

+ +

Tests Results document contains results of performance testing of various functions.

Why?

First of all, existing solutions for work with compression, archives and containers have some problems.