@@ -188,7 +188,7 @@ object DynamicTuple {
188
188
def specialCaseCons [H , This <: Tuple ](x : H , self : This ): H *: This = {
189
189
type Result = H *: This
190
190
val res = (self : Any ) match {
191
- case () =>
191
+ case self : Unit =>
192
192
Tuple1 (x)
193
193
case self : Tuple1 [_] =>
194
194
Tuple2 (x, self._1)
@@ -385,11 +385,67 @@ object DynamicTuple {
385
385
).asInstanceOf [Zip [This , T2 ]]
386
386
}
387
387
388
- def dynamicMap [This <: Tuple , F [_]](self : This , f : [t] => t => F [t]): Map [This , F ] = (self : Any ) match {
389
- case self : Unit => ().asInstanceOf [Map [This , F ]]
390
- case _ =>
391
- Tuple .fromArray(self.asInstanceOf [Product ].productIterator.map(f(_)).toArray) // TODO use toIArray of Object to avoid double/triple array copy
392
- .asInstanceOf [Map [This , F ]]
388
+ def specialCaseMap [This <: Tuple , F [_]](self : This , f : [t] => t => F [t]): Map [This , F ] = {
389
+ type Result = Map [This , F ]
390
+ val res = (self : Any ) match {
391
+ case sekf : Unit =>
392
+ ()
393
+ case self : Tuple1 [_] =>
394
+ Tuple1 (f(self._1))
395
+ case self : Tuple2 [_, _] =>
396
+ Tuple2 (f(self._1), f(self._2))
397
+ case self : Tuple3 [_, _, _] =>
398
+ Tuple3 (f(self._1), f(self._2), f(self._3))
399
+ case self : Tuple4 [_, _, _, _] =>
400
+ Tuple4 (f(self._1), f(self._2), f(self._3), f(self._4))
401
+ case self : Tuple5 [_, _, _, _, _] =>
402
+ Tuple5 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5))
403
+ case self : Tuple6 [_, _, _, _, _, _] =>
404
+ Tuple6 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6))
405
+ case self : Tuple7 [_, _, _, _, _, _, _] =>
406
+ Tuple7 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7))
407
+ case self : Tuple8 [_, _, _, _, _, _, _, _] =>
408
+ Tuple8 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8))
409
+ case self : Tuple9 [_, _, _, _, _, _, _, _, _] =>
410
+ Tuple9 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9))
411
+ case self : Tuple10 [_, _, _, _, _, _, _, _, _, _] =>
412
+ Tuple10 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10))
413
+ case self : Tuple11 [_, _, _, _, _, _, _, _, _, _, _] =>
414
+ Tuple11 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11))
415
+ case self : Tuple12 [_, _, _, _, _, _, _, _, _, _, _, _] =>
416
+ Tuple12 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12))
417
+ case self : Tuple13 [_, _, _, _, _, _, _, _, _, _, _, _, _] =>
418
+ Tuple13 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13))
419
+ case self : Tuple14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
420
+ Tuple14 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14))
421
+ case self : Tuple15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
422
+ Tuple15 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15))
423
+ case self : Tuple16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
424
+ Tuple16 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16))
425
+ case self : Tuple17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
426
+ Tuple17 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17))
427
+ case self : Tuple18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
428
+ Tuple18 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17), f(self._18))
429
+ case self : Tuple19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
430
+ Tuple19 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17), f(self._18), f(self._19))
431
+ case self : Tuple20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
432
+ Tuple20 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17), f(self._18), f(self._19), f(self._20))
433
+ case self : Tuple21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
434
+ Tuple21 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17), f(self._18), f(self._19), f(self._20), f(self._21))
435
+ case self : Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] =>
436
+ Tuple22 (f(self._1), f(self._2), f(self._3), f(self._4), f(self._5), f(self._6), f(self._7), f(self._8), f(self._9), f(self._10), f(self._11), f(self._12), f(self._13), f(self._14), f(self._15), f(self._16), f(self._17), f(self._18), f(self._19), f(self._20), f(self._21), f(self._22))
437
+ }
438
+ res.asInstanceOf [Result ]
439
+ }
440
+
441
+ def dynamicMap [This <: Tuple , F [_]](self : This , f : [t] => t => F [t]): Map [This , F ] = {
442
+ type Result = Map [This , F ]
443
+ (self : Any ) match {
444
+ case xxl : TupleXXL =>
445
+ TupleXXL .fromIArray(xxl.elems.asInstanceOf [Array [Object ]].map(f[Object ]).asInstanceOf [IArray [Object ]]).asInstanceOf [Result ]
446
+ case _ =>
447
+ specialCaseMap(self, f)
448
+ }
393
449
}
394
450
395
451
def consIterator (head : Any , tail : Tuple ): Iterator [Any ] =
0 commit comments