@@ -13,166 +13,9 @@ sealed trait TupledFunction[F, G] {
13
13
def untupled (g : G ): F
14
14
}
15
15
16
- package internal {
17
-
18
- object TupledFunction {
19
-
20
- def tupledFunction0 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
21
- def tupled (f : F ): G = ((args : Unit ) => f.asInstanceOf [() => Any ].apply()).asInstanceOf [G ]
22
- def untupled (g : G ): F = (() => g.asInstanceOf [Unit => Any ].apply(())).asInstanceOf [F ]
23
- }
24
-
25
- def tupledFunction1 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
26
- def tupled (f : F ): G = ((args : Tuple1 [Any ]) => f.asInstanceOf [Any => Any ].apply(args._1)).asInstanceOf [G ]
27
- def untupled (g : G ): F = ((x1 : Any ) => g.asInstanceOf [Tuple1 [_] => Any ].apply(Tuple1 (x1))).asInstanceOf [F ]
28
- }
29
-
30
- def tupledFunction2 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
31
- def tupled (f : F ): G = f.asInstanceOf [Function2 [_, _, _]].tupled.asInstanceOf [G ]
32
- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple2 [_, _] => Any ]).asInstanceOf [F ]
33
- }
34
-
35
- def tupledFunction3 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
36
- def tupled (f : F ): G = f.asInstanceOf [Function3 [_, _, _, _]].tupled.asInstanceOf [G ]
37
- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple3 [_, _, _] => Any ]).asInstanceOf [F ]
38
- }
39
-
40
- def tupledFunction4 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
41
- def tupled (f : F ): G = f.asInstanceOf [Function4 [_, _, _, _, _]].tupled.asInstanceOf [G ]
42
- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple4 [_, _, _, _] => Any ]).asInstanceOf [F ]
43
- }
44
-
45
- def tupledFunction5 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
46
- def tupled (f : F ): G = f.asInstanceOf [Function5 [_, _, _, _, _, _]].tupled.asInstanceOf [G ]
47
- def untupled (g : G ): F = Function .untupled(g.asInstanceOf [Tuple5 [_, _, _, _, _] => Any ]).asInstanceOf [F ]
48
- }
49
-
50
- def tupledFunction6 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
51
- def tupled (f : F ): G = f.asInstanceOf [Function6 [_, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
52
- def untupled (g : G ): F =
53
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any ) =>
54
- g.asInstanceOf [Tuple6 [_, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6))).asInstanceOf [F ]
55
- }
56
-
57
- def tupledFunction7 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
58
- def tupled (f : F ): G = f.asInstanceOf [Function7 [_, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
59
- def untupled (g : G ): F =
60
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any ) =>
61
- g.asInstanceOf [Tuple7 [_, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7))).asInstanceOf [F ]
62
- }
63
-
64
- def tupledFunction8 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
65
- def tupled (f : F ): G = f.asInstanceOf [Function8 [_, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
66
- def untupled (g : G ): F =
67
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any ) =>
68
- g.asInstanceOf [Tuple8 [_, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8))).asInstanceOf [F ]
69
- }
70
-
71
- def tupledFunction9 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
72
- def tupled (f : F ): G = f.asInstanceOf [Function9 [_, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
73
- def untupled (g : G ): F =
74
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any ) =>
75
- g.asInstanceOf [Tuple9 [_, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9))).asInstanceOf [F ]
76
- }
77
-
78
- def tupledFunction10 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
79
- def tupled (f : F ): G = f.asInstanceOf [Function10 [_, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
80
- def untupled (g : G ): F =
81
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any ) =>
82
- g.asInstanceOf [Tuple10 [_, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10))).asInstanceOf [F ]
83
- }
84
-
85
- def tupledFunction11 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
86
- def tupled (f : F ): G = f.asInstanceOf [Function11 [_, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
87
- def untupled (g : G ): F =
88
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any ) =>
89
- g.asInstanceOf [Tuple11 [_, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11))).asInstanceOf [F ]
90
- }
91
-
92
- def tupledFunction12 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
93
- def tupled (f : F ): G = f.asInstanceOf [Function12 [_, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
94
- def untupled (g : G ): F =
95
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any ) =>
96
- g.asInstanceOf [Tuple12 [_, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12))).asInstanceOf [F ]
97
- }
98
-
99
- def tupledFunction13 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
100
- def tupled (f : F ): G = f.asInstanceOf [Function13 [_, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
101
- def untupled (g : G ): F =
102
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any ) =>
103
- g.asInstanceOf [Tuple13 [_, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13))).asInstanceOf [F ]
104
- }
105
-
106
- def tupledFunction14 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
107
- def tupled (f : F ): G = f.asInstanceOf [Function14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
108
- def untupled (g : G ): F =
109
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any ) =>
110
- g.asInstanceOf [Tuple14 [_, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14))).asInstanceOf [F ]
111
- }
112
-
113
- def tupledFunction15 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
114
- def tupled (f : F ): G = f.asInstanceOf [Function15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
115
- def untupled (g : G ): F =
116
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any ) =>
117
- g.asInstanceOf [Tuple15 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15))).asInstanceOf [F ]
118
- }
119
-
120
- def tupledFunction16 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
121
- def tupled (f : F ): G = f.asInstanceOf [Function16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
122
- def untupled (g : G ): F =
123
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any ) =>
124
- g.asInstanceOf [Tuple16 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16))).asInstanceOf [F ]
125
- }
126
-
127
- def tupledFunction17 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
128
- def tupled (f : F ): G = f.asInstanceOf [Function17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
129
- def untupled (g : G ): F =
130
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any ) =>
131
- g.asInstanceOf [Tuple17 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17))).asInstanceOf [F ]
132
- }
133
-
134
- def tupledFunction18 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
135
- def tupled (f : F ): G = f.asInstanceOf [Function18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
136
- def untupled (g : G ): F =
137
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any ) =>
138
- g.asInstanceOf [Tuple18 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18))).asInstanceOf [F ]
16
+ private [scala] object TupledFunction
17
+ def apply [F , G ](tupledImpl : F => G , untupledImpl : G => F ): TupledFunction [F , G ] =
18
+ new TupledFunction [F , G ] {
19
+ def tupled (f : F ): G = tupledImpl(f)
20
+ def untupled (g : G ): F = untupledImpl(g)
139
21
}
140
-
141
- def tupledFunction19 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
142
- def tupled (f : F ): G = f.asInstanceOf [Function19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
143
- def untupled (g : G ): F =
144
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any ) =>
145
- g.asInstanceOf [Tuple19 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19))).asInstanceOf [F ]
146
- }
147
-
148
- def tupledFunction20 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
149
- def tupled (f : F ): G = f.asInstanceOf [Function20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
150
- def untupled (g : G ): F =
151
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any ) =>
152
- g.asInstanceOf [Tuple20 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20))).asInstanceOf [F ]
153
- }
154
-
155
- def tupledFunction21 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
156
- def tupled (f : F ): G = f.asInstanceOf [Function21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
157
- def untupled (g : G ): F =
158
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any , x21 : Any ) =>
159
- g.asInstanceOf [Tuple21 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21))).asInstanceOf [F ]
160
- }
161
-
162
- def tupledFunction22 [F , G ]: TupledFunction [F , G ] = new TupledFunction {
163
- def tupled (f : F ): G = f.asInstanceOf [Function22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _]].tupled.asInstanceOf [G ]
164
- def untupled (g : G ): F =
165
- ((x1 : Any , x2 : Any , x3 : Any , x4 : Any , x5 : Any , x6 : Any , x7 : Any , x8 : Any , x9 : Any , x10 : Any , x11 : Any , x12 : Any , x13 : Any , x14 : Any , x15 : Any , x16 : Any , x17 : Any , x18 : Any , x19 : Any , x20 : Any , x21 : Any , x22 : Any ) =>
166
- g.asInstanceOf [Tuple22 [_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _] => Any ].apply((x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, x17, x18, x19, x20, x21, x22))).asInstanceOf [F ]
167
- }
168
-
169
- def tupledFunctionXXL [F , G ]: TupledFunction [F , G ] = new TupledFunction {
170
- def tupled (f : F ): G = ((args : TupleXXL ) => f.asInstanceOf [FunctionXXL ].apply(args.elems)).asInstanceOf [G ]
171
- def untupled (g : G ): F = new FunctionXXL {
172
- override def apply (xs : IArray [Object ]): AnyRef = g.asInstanceOf [TupleXXL => AnyRef ].apply(TupleXXL .fromIArray(xs))
173
- }.asInstanceOf [F ]
174
- }
175
-
176
- }
177
-
178
- }
0 commit comments