Browse Source

Refactor around `String.nulTerminatedUTF8.withUnsafeBufferPointer()`

Norio Nomura 10 năm trước cách đây
mục cha
commit
cbb9c05906
3 tập tin đã thay đổi với 6 bổ sung14 xóa
  1. 2 4
      Base32/Base16.swift
  2. 2 6
      Base32/Base32.swift
  3. 2 4
      Base32/StringExtension.swift

+ 2 - 4
Base32/Base16.swift

@@ -41,10 +41,8 @@ extension String {
     }
     
     public var base16EncodedString: String {
-        let length = lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
         return nulTerminatedUTF8.withUnsafeBufferPointer {
-            (p: UnsafeBufferPointer<UInt8>) -> String in
-            return base16encode(p.baseAddress, length)
+            return base16encode($0.baseAddress, $0.count - 1)
         }
     }
     
@@ -98,7 +96,7 @@ extension UnicodeScalar {
 
 private func base16decode(string: String) -> [UInt8]? {
     // validate length
-    let lenght = countElements(string)
+    let lenght = string.nulTerminatedUTF8.count - 1
     if lenght % 2 != 0 {
         println("base16decode: String must contain even number of characters")
         return nil

+ 2 - 6
Base32/Base32.swift

@@ -63,10 +63,8 @@ extension String {
     }
     
     public var base32EncodedString: String {
-        let length = lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
         return nulTerminatedUTF8.withUnsafeBufferPointer {
-            (p: UnsafeBufferPointer<UInt8>) -> String in
-            return base32encode(p.baseAddress, length, alphabetEncodeTable)
+            return base32encode($0.baseAddress, $0.count - 1, alphabetEncodeTable)
         }
     }
     
@@ -84,10 +82,8 @@ extension String {
     }
     
     public var base32HexEncodedString: String {
-        let length = lengthOfBytesUsingEncoding(NSUTF8StringEncoding)
         return nulTerminatedUTF8.withUnsafeBufferPointer {
-            (p: UnsafeBufferPointer<UInt8>) -> String in
-            return base32encode(p.baseAddress, length, extendedHexAlphabetEncodeTable)
+            return base32encode($0.baseAddress, $0.count - 1, extendedHexAlphabetEncodeTable)
         }
     }
     

+ 2 - 4
Base32/StringExtension.swift

@@ -13,17 +13,15 @@ import Foundation
 extension String {
     /// NSData never nil
     internal var dataUsingUTF8StringEncoding: NSData {
-        let length = nulTerminatedUTF8.count - 1
         return nulTerminatedUTF8.withUnsafeBufferPointer {
-            return NSData(bytes: $0.baseAddress, length: length)
+            return NSData(bytes: $0.baseAddress, length: $0.count - 1)
         }
     }
     
     /// Array<UInt8>
     internal var arrayUsingUTF8StringEncoding: [UInt8] {
-        let length = nulTerminatedUTF8.count - 1
         return nulTerminatedUTF8.withUnsafeBufferPointer {
-            return Array(UnsafeBufferPointer(start: $0.baseAddress, count: length))
+            return Array(UnsafeBufferPointer(start: $0.baseAddress, count: $0.count - 1))
         }
     }
 }