From ed5cf0ebe19fc61688540de7ff10269ee724b730 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Mon, 24 Oct 2016 20:23:26 +0300 Subject: [PATCH] Moved UInt8 and Data extensions to a combined file. Added function to "combine" two bytes into one. --- SWCompression.xcodeproj/project.pbxproj | 8 +++---- Sources/Deflate.swift | 17 --------------- .../{DataExtension.swift => Extensions.swift} | 21 +++++++++++++++++++ 3 files changed, 25 insertions(+), 21 deletions(-) rename Sources/{DataExtension.swift => Extensions.swift} (76%) diff --git a/SWCompression.xcodeproj/project.pbxproj b/SWCompression.xcodeproj/project.pbxproj index 5ac8be2d..774756d8 100644 --- a/SWCompression.xcodeproj/project.pbxproj +++ b/SWCompression.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 061FCE2A1DBCC6070052F7BE /* test.txt in Resources */ = {isa = PBXBuildFile; fileRef = 061FCE281DBCC6070052F7BE /* test.txt */; }; 061FCE2B1DBCC6070052F7BE /* test.txt.gz in Resources */ = {isa = PBXBuildFile; fileRef = 061FCE291DBCC6070052F7BE /* test.txt.gz */; }; 061FCE2D1DBCC6A30052F7BE /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE2C1DBCC6A30052F7BE /* Constants.swift */; }; - 061FCE311DBCC8BF0052F7BE /* DataExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE301DBCC8BF0052F7BE /* DataExtension.swift */; }; + 061FCE311DBCC8BF0052F7BE /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 061FCE301DBCC8BF0052F7BE /* Extensions.swift */; }; 06BE1AD21DB410F100EE0F59 /* SWCompression.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BE1AC81DB410F100EE0F59 /* SWCompression.framework */; }; 06BE1AD71DB410F100EE0F59 /* SWCompressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06BE1AD61DB410F100EE0F59 /* SWCompressionTests.swift */; }; 06BE1AD91DB410F100EE0F59 /* SWCompression.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BE1ACB1DB410F100EE0F59 /* SWCompression.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -33,7 +33,7 @@ 061FCE281DBCC6070052F7BE /* test.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.txt; sourceTree = ""; }; 061FCE291DBCC6070052F7BE /* test.txt.gz */ = {isa = PBXFileReference; lastKnownFileType = archive.gzip; path = test.txt.gz; sourceTree = ""; }; 061FCE2C1DBCC6A30052F7BE /* Constants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; - 061FCE301DBCC8BF0052F7BE /* DataExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataExtension.swift; sourceTree = ""; }; + 061FCE301DBCC8BF0052F7BE /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; 06BE1AC81DB410F100EE0F59 /* SWCompression.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SWCompression.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 06BE1ACB1DB410F100EE0F59 /* SWCompression.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWCompression.h; sourceTree = ""; }; 06BE1ACC1DB410F100EE0F59 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -93,7 +93,7 @@ isa = PBXGroup; children = ( 06BE1ACB1DB410F100EE0F59 /* SWCompression.h */, - 061FCE301DBCC8BF0052F7BE /* DataExtension.swift */, + 061FCE301DBCC8BF0052F7BE /* Extensions.swift */, 061FCE251DBCC4BE0052F7BE /* Deflate.swift */, 06E961C91DBD5FA1008C47F2 /* HuffmanTable.swift */, 06BE1ACC1DB410F100EE0F59 /* Info.plist */, @@ -229,7 +229,7 @@ files = ( 06E961CA1DBD5FA1008C47F2 /* HuffmanTable.swift in Sources */, 061FCE261DBCC4BE0052F7BE /* Deflate.swift in Sources */, - 061FCE311DBCC8BF0052F7BE /* DataExtension.swift in Sources */, + 061FCE311DBCC8BF0052F7BE /* Extensions.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Sources/Deflate.swift b/Sources/Deflate.swift index 6ace8ca5..432a6c15 100644 --- a/Sources/Deflate.swift +++ b/Sources/Deflate.swift @@ -8,23 +8,6 @@ import Foundation -extension UInt8 { - - subscript(index: Int) -> UInt8 { - precondition(index >= 0 && index < 8, "Index must be between 0 and 7 (included)") - let uindex = UInt8(truncatingBitPattern: index) - return (self & (0x1 << uindex)) >> uindex - } - - subscript(range: CountableRange) -> [UInt8] { - return range.map { - let uindex = UInt8(truncatingBitPattern: $0) - return (self & (0x1 << uindex)) >> uindex - } - } -} - - public enum DeflateError: Error { case WrongMagic case UnknownCompressionMethod diff --git a/Sources/DataExtension.swift b/Sources/Extensions.swift similarity index 76% rename from Sources/DataExtension.swift rename to Sources/Extensions.swift index 97cb1eb1..e9fc9d66 100644 --- a/Sources/DataExtension.swift +++ b/Sources/Extensions.swift @@ -59,3 +59,24 @@ extension Data { } } + +extension UInt8 { + + func combine(withByte second: UInt8) -> UInt16 { + let result: UInt16 = UInt16(self << 8) | UInt16(second) + return result + } + + subscript(index: Int) -> UInt8 { + precondition(index >= 0 && index < 8, "Index must be between 0 and 7 (included).") + let uindex = UInt8(truncatingBitPattern: index) + return (self & (0x1 << uindex)) >> uindex + } + + subscript(range: CountableRange) -> [UInt8] { + return range.map { + let uindex = UInt8(truncatingBitPattern: $0) + return (self & (0x1 << uindex)) >> uindex + } + } +}