@@ -189,67 +189,17 @@ object DynamicTuple {
189
189
def dynamicCons [H , This <: Tuple ](x : H , self : This ): H *: This = {
190
190
type Result = H *: This
191
191
val res = (self : Any ) match {
192
- case () =>
193
- Tuple1 (x)
194
- case self : Tuple1 [_] =>
195
- Tuple2 (x, self._1)
196
- case self : Tuple2 [_, _] =>
197
- Tuple3 (x, self._1, self._2)
198
- case self : Tuple3 [_, _, _] =>
199
- Tuple4 (x, self._1, self._2, self._3)
200
- case self : Tuple4 [_, _, _, _] =>
201
- Tuple5 (x, self._1, self._2, self._3, self._4)
202
- case self : Tuple5 [_, _, _, _, _] =>
203
- Tuple6 (x, self._1, self._2, self._3, self._4, self._5)
204
- case self : Tuple6 [_, _, _, _, _, _] =>
205
- Tuple7 (x, self._1, self._2, self._3, self._4, self._5, self._6)
206
- case self : Tuple7 [_, _, _, _, _, _, _] =>
207
- Tuple8 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7)
208
- case self : Tuple8 [_, _, _, _, _, _, _, _] =>
209
- Tuple9 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8)
210
- case self : Tuple9 [_, _, _, _, _, _, _, _, _] =>
211
- Tuple10 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9)
212
- case self : Tuple10 [_, _, _, _, _, _, _, _, _, _] =>
213
- Tuple11 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10)
214
- case self : Tuple11 [_, _, _, _, _, _, _, _, _, _, _] =>
215
- Tuple12 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11)
216
- case self : Tuple12 [_, _, _, _, _, _, _, _, _, _, _, _] =>
217
- Tuple13 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12)
218
- case self : Tuple13 [_, _, _, _, _, _, _, _, _, _, _, _, _] =>
219
- Tuple14 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13)
220
- case self : Tuple14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
221
- Tuple15 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14)
222
- case self : Tuple15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
223
- Tuple16 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15)
224
- case self : Tuple16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
225
- Tuple17 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16)
226
- case self : Tuple17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
227
- Tuple18 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17)
228
- case self : Tuple18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
229
- Tuple19 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18)
230
- case self : Tuple19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
231
- Tuple20 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19)
232
- case self : Tuple20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
233
- Tuple21 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20)
234
- case self : Tuple21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
235
- Tuple22 (x, self._1, self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21)
236
- case self : Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
237
- val arr : Array [Object ] = Array (
238
- x.asInstanceOf [Object ], self._1.asInstanceOf [Object ], self._2.asInstanceOf [Object ],
239
- self._3.asInstanceOf [Object ], self._4.asInstanceOf [Object ], self._5.asInstanceOf [Object ],
240
- self._6.asInstanceOf [Object ], self._7.asInstanceOf [Object ], self._8.asInstanceOf [Object ],
241
- self._9.asInstanceOf [Object ], self._10.asInstanceOf [Object ], self._11.asInstanceOf [Object ],
242
- self._12.asInstanceOf [Object ], self._13.asInstanceOf [Object ], self._14.asInstanceOf [Object ],
243
- self._15.asInstanceOf [Object ], self._16.asInstanceOf [Object ], self._17.asInstanceOf [Object ],
244
- self._18.asInstanceOf [Object ], self._19.asInstanceOf [Object ], self._20.asInstanceOf [Object ],
245
- self._21.asInstanceOf [Object ], self._22.asInstanceOf [Object ],
246
- )
247
- TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
248
192
case xxl : TupleXXL =>
249
193
val arr = new Array [Object ](xxl.productArity + 1 )
250
194
System .arraycopy(xxl.elems, 0 , arr, 1 , xxl.productArity)
251
195
arr(0 ) = x.asInstanceOf [Object ]
252
- TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
196
+ TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]])
197
+ case () =>
198
+ Tuple1 (x)
199
+ case _ =>
200
+ val arr = new Array [Object ](self.size + 1 )
201
+ itToArray(self.asInstanceOf [Product ].productIterator, self.size, arr, 1 )
202
+ dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]])
253
203
}
254
204
res.asInstanceOf [Result ]
255
205
}
@@ -295,48 +245,6 @@ object DynamicTuple {
295
245
val res = (self : Any ) match {
296
246
case self : Tuple1 [_] =>
297
247
()
298
- case self : Tuple2 [_, _] =>
299
- Tuple1 (self._2)
300
- case self : Tuple3 [_, _, _] =>
301
- Tuple2 (self._2, self._3)
302
- case self : Tuple4 [_, _, _, _] =>
303
- Tuple3 (self._2, self._3, self._4)
304
- case self : Tuple5 [_, _, _, _, _] =>
305
- Tuple4 (self._2, self._3, self._4, self._5)
306
- case self : Tuple6 [_, _, _, _, _, _] =>
307
- Tuple5 (self._2, self._3, self._4, self._5, self._6)
308
- case self : Tuple7 [_, _, _, _, _, _, _] =>
309
- Tuple6 (self._2, self._3, self._4, self._5, self._6, self._7)
310
- case self : Tuple8 [_, _, _, _, _, _, _, _] =>
311
- Tuple7 (self._2, self._3, self._4, self._5, self._6, self._7, self._8)
312
- case self : Tuple9 [_, _, _, _, _, _, _, _, _] =>
313
- Tuple8 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9)
314
- case self : Tuple10 [_, _, _, _, _, _, _, _, _, _] =>
315
- Tuple9 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10)
316
- case self : Tuple11 [_, _, _, _, _, _, _, _, _, _, _] =>
317
- Tuple10 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11)
318
- case self : Tuple12 [_, _, _, _, _, _, _, _, _, _, _, _] =>
319
- Tuple11 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12)
320
- case self : Tuple13 [_, _, _, _, _, _, _, _, _, _, _, _, _] =>
321
- Tuple12 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13)
322
- case self : Tuple14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
323
- Tuple13 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14)
324
- case self : Tuple15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
325
- Tuple14 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15)
326
- case self : Tuple16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
327
- Tuple15 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16)
328
- case self : Tuple17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
329
- Tuple16 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17)
330
- case self : Tuple18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
331
- Tuple17 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18)
332
- case self : Tuple19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
333
- Tuple18 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19)
334
- case self : Tuple20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
335
- Tuple19 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20)
336
- case self : Tuple21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
337
- Tuple20 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21)
338
- case self : Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
339
- Tuple21 (self._2, self._3, self._4, self._5, self._6, self._7, self._8, self._9, self._10, self._11, self._12, self._13, self._14, self._15, self._16, self._17, self._18, self._19, self._20, self._21, self._22)
340
248
case xxl : TupleXXL =>
341
249
if (xxl.productArity == 23 ) {
342
250
val elems = xxl.elems
@@ -345,12 +253,18 @@ object DynamicTuple {
345
253
elems(8 ), elems(9 ), elems(10 ), elems(11 ), elems(12 ), elems(13 ), elems(14 ),
346
254
elems(15 ), elems(16 ), elems(17 ), elems(18 ), elems(19 ), elems(20 ),
347
255
elems(21 ), elems(22 )
348
- ). asInstanceOf [ Result ]
256
+ )
349
257
} else {
350
258
val arr = new Array [Object ](self.size - 1 )
351
259
System .arraycopy(xxl.elems, 1 , arr, 0 , self.size - 1 )
352
- TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]]). asInstanceOf [ Result ]
260
+ TupleXXL .fromIArray(arr.asInstanceOf [IArray [Object ]])
353
261
}
262
+ case _ =>
263
+ val arr = new Array [Object ](self.size - 1 )
264
+ val it = self.asInstanceOf [Product ].productIterator
265
+ it.next()
266
+ itToArray(it, self.size - 1 , arr, 0 )
267
+ dynamicFromIArray[Result ](arr.asInstanceOf [IArray [Object ]])
354
268
}
355
269
res.asInstanceOf [Result ]
356
270
}
0 commit comments