diff --git a/MsgPack/Encoder.swift b/MsgPack/Encoder.swift index 03ba128..8c0355f 100644 --- a/MsgPack/Encoder.swift +++ b/MsgPack/Encoder.swift @@ -21,6 +21,10 @@ public class Encoder { } } +enum MsgPackEncodingError: Swift.Error { + case notImplemented, stringNotConvertibleToUTF8(String), valueDidNotAskForContainer +} + class IntermediateEncoder: Swift.Encoder { var codingPath = [CodingKey]() @@ -47,60 +51,6 @@ class IntermediateEncoder: Swift.Encoder { } } -extension Format { - static func from(string: String) throws -> Format { - guard let data = string.data(using: .utf8) else {throw MsgPackEncodingError.stringNotConvertibleToUTF8(string)} - switch data.count { - case 1..<32: - return .fixString(data) - case 32..<256: - return .string8(data) - case 256..<65536: - return .string16(data) - default: - return .string32(data) - } - } - - static func from(keyValuePairs: [(Format, Format)]) -> Format { - switch keyValuePairs.count { - case 1..<16: - return .fixMap(keyValuePairs) - case 16..<65536: - return .map16(keyValuePairs) - default: - return .map32(keyValuePairs) - } - } - - static func from(array: [Format]) -> Format { - switch array.count { - case 1..<16: - return .fixArray(array) - case 16..<65536: - return .array16(array) - default: - return .array32(array) - } - } - - static func from(int: Int) -> Format { - #if arch(arm) || arch(i386) - return .int32(Int32(int)) - #else - return .int64(Int64(int)) - #endif - } - - static func from(uInt: UInt) -> Format { - #if arch(arm) || arch(i386) - return .uInt32(UInt32(uInt)) - #else - return .uInt64(UInt64(uInt)) - #endif - } -} - class MessagePackEncodingContainer: Swift.Encoder { var userInfo = [CodingUserInfoKey : Any]() var codingPath: [CodingKey] = [] @@ -131,10 +81,6 @@ class MessagePackEncodingContainer: Swift.Encoder { } -enum MsgPackEncodingError: Swift.Error { - case notImplemented, stringNotConvertibleToUTF8(String), valueDidNotAskForContainer -} - class MsgPackSingleValueEncodingContainer: MessagePackEncodingContainer, SingleValueEncodingContainer { var storage: Format? diff --git a/MsgPack/Format.swift b/MsgPack/Format.swift index d06b24a..8b2cd28 100644 --- a/MsgPack/Format.swift +++ b/MsgPack/Format.swift @@ -193,7 +193,6 @@ extension Format { } } - extension Data { mutating func write(value: T, offset: Int) { withUnsafeMutableBytes {(byteContainer: UnsafeMutablePointer) -> Void in @@ -203,3 +202,57 @@ extension Data { } } } + +extension Format { + static func from(string: String) throws -> Format { + guard let data = string.data(using: .utf8) else {throw MsgPackEncodingError.stringNotConvertibleToUTF8(string)} + switch data.count { + case 1..<32: + return .fixString(data) + case 32..<256: + return .string8(data) + case 256..<65536: + return .string16(data) + default: + return .string32(data) + } + } + + static func from(keyValuePairs: [(Format, Format)]) -> Format { + switch keyValuePairs.count { + case 1..<16: + return .fixMap(keyValuePairs) + case 16..<65536: + return .map16(keyValuePairs) + default: + return .map32(keyValuePairs) + } + } + + static func from(array: [Format]) -> Format { + switch array.count { + case 1..<16: + return .fixArray(array) + case 16..<65536: + return .array16(array) + default: + return .array32(array) + } + } + + static func from(int: Int) -> Format { + #if arch(arm) || arch(i386) + return .int32(Int32(int)) + #else + return .int64(Int64(int)) + #endif + } + + static func from(uInt: UInt) -> Format { + #if arch(arm) || arch(i386) + return .uInt32(UInt32(uInt)) + #else + return .uInt64(UInt64(uInt)) + #endif + } +}