0001
0009 public struct JSONEncodingDetector| JSONEncodingDetector.swift:65 | if let prefixInfo = JSONEncodingDetector.encodingFromBOM(prefix) { |
| JSONParser.swift:175 | let encodingPrefixInformation = JSONEncodingDetector.detectEncoding(header) |
| JSONParser.swift:176 | guard JSONEncodingDetector.supportedEncodings.contains(encodingPrefixInformation.encoding) else { |
| JSONParser.swift:689 | case InvalidUnicodeStreamEncoding(detectedEncoding: JSONEncodingDetector.Encoding) |
{
0011
0012 public enum Encoding| JSONEncodingDetector.swift:27 | public static let supportedEncodings: [Encoding] = [.UTF8] |
| JSONEncodingDetector.swift:29 | typealias ByteStreamPrefixInformation = (encoding: Encoding, byteOrderMarkLength: Int) |
| JSONParser.swift:689 | case InvalidUnicodeStreamEncoding(detectedEncoding: JSONEncodingDetector.Encoding) |
{
0014 case UTF8| JSONEncodingDetector.swift:27 | public static let supportedEncodings: [Encoding] = [.UTF8] |
| JSONEncodingDetector.swift:62 | return (.UTF8, 0) |
| JSONEncodingDetector.swift:78 | return (.UTF8, 0) |
| JSONEncodingDetector.swift:101 | return (.UTF8, 3) |
0016 case UTF16LE| JSONEncodingDetector.swift:76 | return (.UTF16LE, 0) |
| JSONEncodingDetector.swift:105 | return (.UTF16LE, 2) |
0018 case UTF16BE| JSONEncodingDetector.swift:74 | return (.UTF16BE, 0) |
| JSONEncodingDetector.swift:97 | return (.UTF16BE, 2) |
0020 case UTF32LE| JSONEncodingDetector.swift:72 | return (.UTF32LE, 0) |
| JSONEncodingDetector.swift:103 | return (.UTF32LE, 4) |
0022 case UTF32BE| JSONEncodingDetector.swift:70 | return (.UTF32BE, 0) |
| JSONEncodingDetector.swift:99 | return (.UTF32BE, 4) |
0024 }
0025
0026 public static let supportedEncodings| JSONParser.swift:176 | guard JSONEncodingDetector.supportedEncodings.contains(encodingPrefixInformation.encoding) else { |
: [Encoding] = [.UTF8]
0028
0029 typealias ByteStreamPrefixInformation| JSONEncodingDetector.swift:59 | static func detectEncoding(header: Slice<UnsafeBufferPointer<UInt8>>) -> ByteStreamPrefixInformation { |
| JSONEncodingDetector.swift:94 | private static func encodingFromBOM(prefix: EncodingBytePrefix) -> ByteStreamPrefixInformation? { |
= (encoding: Encoding, byteOrderMarkLength: Int)
0030
0031 static func detectEncoding| JSONParser.swift:175 | let encodingPrefixInformation = JSONEncodingDetector.detectEncoding(header) |
(header: Slice<UnsafeBufferPointer<UInt8>>) -> ByteStreamPrefixInformation {
0060
0061 guard let prefix = prefixFromHeader(header) else {
0062 return (.UTF8, 0)
0063 }
0064
0065 if let prefixInfo = JSONEncodingDetector.encodingFromBOM(prefix) {
0066 return prefixInfo
0067 } else {
0068 switch prefix {
0069 case(0, 0, 0?, _):
0070 return (.UTF32BE, 0)
0071 case(_, 0, 0?, 0?):
0072 return (.UTF32LE, 0)
0073 case (0, _, 0?, _), (0, _, _, _):
0074 return (.UTF16BE, 0)
0075 case (_, 0, _, 0?), (_, 0, _, _):
0076 return (.UTF16LE, 0)
0077 default:
0078 return (.UTF8, 0)
0079 }
0080 }
0081 }
0082
0083 private typealias EncodingBytePrefix| JSONEncodingDetector.swift:85 | private static func prefixFromHeader(header: Slice<UnsafeBufferPointer<UInt8>>) -> EncodingBytePrefix? { |
| JSONEncodingDetector.swift:94 | private static func encodingFromBOM(prefix: EncodingBytePrefix) -> ByteStreamPrefixInformation? { |
= (UInt8, UInt8, UInt8?, UInt8?)
0084
0085 private static func prefixFromHeader| JSONEncodingDetector.swift:61 | guard let prefix = prefixFromHeader(header) else { |
(header: Slice<UnsafeBufferPointer<UInt8>>) -> EncodingBytePrefix? {
0086 if header.count >= 4 {
0087 return(header[0], header[1], header[2], header[3])
0088 } else if header.count >= 2 {
0089 return (header[0], header[1], nil, nil)
0090 }
0091 return nil
0092 }
0093
0094 private static func encodingFromBOM| JSONEncodingDetector.swift:65 | if let prefixInfo = JSONEncodingDetector.encodingFromBOM(prefix) { |
(prefix: EncodingBytePrefix) -> ByteStreamPrefixInformation? {
0095 switch prefix {
0096 case(0xFE, 0xFF, _, _):
0097 return (.UTF16BE, 2)
0098 case(0x00, 0x00, 0xFE?, 0xFF?):
0099 return (.UTF32BE, 4)
0100 case(0xEF, 0xBB, 0xBF?, _):
0101 return (.UTF8, 3)
0102 case(0xFF, 0xFE, 0?, 0?):
0103 return (.UTF32LE, 4)
0104 case(0xFF, 0xFE, _, _):
0105 return (.UTF16LE, 2)
0106 default:
0107 return nil
0108 }
0109 }
0110 }
0111