Created
February 15, 2017 06:02
-
-
Save yycking/bec5ca863b124043d005af384bd6a970 to your computer and use it in GitHub Desktop.
+ and += operator for Data in swift
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol DataConvertible { | |
static func + (lhs: Data, rhs: Self) -> Data | |
static func += (lhs: inout Data, rhs: Self) | |
} | |
extension DataConvertible { | |
public static func + (lhs: Data, rhs: Self) -> Data { | |
var value = rhs | |
let data = Data(buffer: UnsafeBufferPointer(start: &value, count: 1)) | |
return lhs + data | |
} | |
public static func += (lhs: inout Data, rhs: Self) { | |
lhs = lhs + rhs | |
} | |
} | |
extension UInt8 : DataConvertible { } | |
extension UInt16 : DataConvertible { } | |
extension UInt32 : DataConvertible { } | |
extension Int : DataConvertible { } | |
extension Float : DataConvertible { } | |
extension Double : DataConvertible { } | |
extension String : DataConvertible { | |
public static func + (lhs: Data, rhs: String) -> Data { | |
guard let data = rhs.data(using: .utf8) else { return lhs} | |
return lhs + data | |
} | |
} | |
extension Data : DataConvertible { | |
public static func + (lhs: Data, rhs: Data) -> Data { | |
var data = Data() | |
data.append(lhs) | |
data.append(rhs) | |
return data | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment