@@ -10,7 +10,7 @@ extension _CBORDecoder {
10
10
11
11
var userInfo : [ CodingUserInfoKey : Any ]
12
12
13
- var data : Data
13
+ var data : ArraySlice < UInt8 >
14
14
var index : Data . Index
15
15
16
16
lazy var count : Int ? = {
@@ -35,7 +35,7 @@ extension _CBORDecoder {
35
35
// decoding each item in the array.
36
36
let nextIndex = self . data. startIndex. advanced ( by: 1 )
37
37
let remainingData = self . data. suffix ( from: nextIndex)
38
- return try ? CBORDecoder ( input: remainingData. map { $0 } ) . readUntilBreak ( ) . count
38
+ return try ? CBORDecoder ( input: remainingData) . readUntilBreak ( ) . count
39
39
default :
40
40
return nil
41
41
}
@@ -70,8 +70,8 @@ extension _CBORDecoder {
70
70
71
71
return nestedContainers
72
72
}
73
-
74
- init ( data: Data , codingPath: [ CodingKey ] , userInfo: [ CodingUserInfoKey : Any ] ) {
73
+
74
+ init ( data: ArraySlice < UInt8 > , codingPath: [ CodingKey ] , userInfo: [ CodingUserInfoKey : Any ] ) {
75
75
self . codingPath = codingPath
76
76
self . userInfo = userInfo
77
77
self . data = data
@@ -96,6 +96,7 @@ extension _CBORDecoder {
96
96
}
97
97
98
98
extension _CBORDecoder . UnkeyedContainer : UnkeyedDecodingContainer {
99
+
99
100
func decodeNil( ) throws -> Bool {
100
101
try checkCanDecodeValue ( )
101
102
defer { self . currentIndex += 1 }
@@ -171,16 +172,16 @@ extension _CBORDecoder.UnkeyedContainer {
171
172
case 0x40 ... 0x57 :
172
173
length = try CBORDecoder ( input: [ 0 ] ) . readLength ( format, base: 0x40 )
173
174
case 0x58 :
174
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
175
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
175
176
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x40 ) + 1
176
177
case 0x59 :
177
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
178
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
178
179
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x40 ) + 2
179
180
case 0x5a :
180
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
181
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
181
182
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x40 ) + 4
182
183
case 0x5b :
183
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
184
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
184
185
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x40 ) + 8
185
186
// Terminated by break
186
187
case 0x5f :
@@ -190,16 +191,16 @@ extension _CBORDecoder.UnkeyedContainer {
190
191
case 0x60 ... 0x77 :
191
192
length = try CBORDecoder ( input: [ 0 ] ) . readLength ( format, base: 0x60 )
192
193
case 0x78 :
193
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
194
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
194
195
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x60 ) + 1
195
196
case 0x79 :
196
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
197
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
197
198
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x60 ) + 2
198
199
case 0x7a :
199
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
200
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
200
201
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x60 ) + 4
201
202
case 0x7b :
202
- let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) ) . map { $0 }
203
+ let remainingData = self . data. suffix ( from: startIndex. advanced ( by: 1 ) )
203
204
length = try CBORDecoder ( input: remainingData) . readLength ( format, base: 0x60 ) + 8
204
205
// Terminated by break
205
206
case 0x7f :
@@ -244,7 +245,7 @@ extension _CBORDecoder.UnkeyedContainer {
244
245
let range : Range < Data . Index > = startIndex..< self . index. advanced ( by: length)
245
246
self . index = range. upperBound
246
247
247
- let container = _CBORDecoder. SingleValueContainer ( data: self . data. subdata ( in : range) , codingPath: self . codingPath, userInfo: self . userInfo)
248
+ let container = _CBORDecoder. SingleValueContainer ( data: self . data [ range . startIndex ..< ( range. endIndex ) ] , codingPath: self . codingPath, userInfo: self . userInfo)
248
249
249
250
return container
250
251
}
0 commit comments