Skip to content

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
...
  • 4 commits
  • 3 files changed
  • 0 commit comments
  • 2 contributors
View
51 scripts/tuple_adder_generator.rb
@@ -0,0 +1,51 @@
+#!/usr/bin/env ruby
+
+# Run it like this:
+#
+# ruby scripts/tuple_adder_generator.rb > src/main/scala/com/twitter/scalding/GeneratedTupleAdders.scala
+
+$indent = " "
+
+TYPES = ('A'..'Z').to_a
+
+def make_tuple_adder(cnt)
+ other_cnts = (1..(22-cnt)).to_a
+ puts "#{$indent}class Tuple#{cnt}Adder[#{TYPES[0..(cnt - 1)].join(",")}](tup : #{get_tuple(0, cnt)}) {"
+
+ # Add the + method
+ puts "#{$indent}#{$indent}def :+[#{TYPES[cnt]}](other : #{TYPES[cnt]}) = {"
+ puts "#{$indent}#{$indent}#{$indent}(#{tup_get("tup", cnt)},other)"
+ puts "#{$indent}#{$indent}}"
+
+ other_cnts.each do |ocnt|
+ puts
+ puts "#{$indent}#{$indent}def ++[#{TYPES[cnt..(cnt + ocnt - 1)].join(",")}](other : #{get_tuple(cnt, ocnt)}) = {"
+ puts "#{$indent}#{$indent}#{$indent}(#{tup_get("tup", cnt)},#{tup_get("other", ocnt)})"
+ puts "#{$indent}#{$indent}}"
+ end
+ puts "#{$indent}}"
+ puts
+ puts "#{$indent}implicit def tup#{cnt}ToAdder[#{TYPES[0..(cnt - 1)].join(",")}](tup : Tuple#{cnt}[#{TYPES[0..(cnt - 1)].join(",")}]) = new Tuple#{cnt}Adder(tup)"
+end
+
+def get_tuple(cnt1, cnt2)
+ "Tuple#{cnt2}[#{TYPES[cnt1..(cnt1 + cnt2 - 1)].join(",")}]"
+end
+
+def tup_get(name, cnt)
+ (1..cnt).map{ |i| "#{name}._#{i}" }.join(",")
+end
+
+puts "// following were autogenerated by #{__FILE__} at #{Time.now} do not edit"
+puts %q|package com.twitter.scalding
+
+trait GeneratedTupleAdders {
+|
+
+(1..21).each { |c|
+ make_tuple_adder(c)
+ puts
+}
+
+puts "}"
+puts "// end of autogenerated"
View
2 src/main/scala/com/twitter/scalding/Dsl.scala
@@ -24,7 +24,7 @@ import cascading.pipe.Pipe
* It's useful to import Dsl._ when you are writing scalding code outside
* of a Job.
*/
-object Dsl extends FieldConversions with TupleConversions {
+object Dsl extends FieldConversions with TupleConversions with GeneratedTupleAdders {
implicit def pipeToRichPipe(pipe : Pipe) : RichPipe = new RichPipe(pipe)
implicit def richPipeToPipe(rp : RichPipe) : Pipe = rp.pipe
// Scala 2.8 iterators don't have a scanLeft
View
1,098 src/main/scala/com/twitter/scalding/GeneratedTupleAdders.scala
@@ -0,0 +1,1098 @@
+// following were autogenerated by scripts/tuple_adder_generator.rb at Wed Jul 11 11:11:38 -0700 2012 do not edit
+package com.twitter.scalding
+
+trait GeneratedTupleAdders {
+ class Tuple1Adder[A](tup : Tuple1[A]) {
+ def :+[B](other : B) = {
+ (tup._1,other)
+ }
+
+ def ++[B](other : Tuple1[B]) = {
+ (tup._1,other._1)
+ }
+
+ def ++[B,C](other : Tuple2[B,C]) = {
+ (tup._1,other._1,other._2)
+ }
+
+ def ++[B,C,D](other : Tuple3[B,C,D]) = {
+ (tup._1,other._1,other._2,other._3)
+ }
+
+ def ++[B,C,D,E](other : Tuple4[B,C,D,E]) = {
+ (tup._1,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[B,C,D,E,F](other : Tuple5[B,C,D,E,F]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[B,C,D,E,F,G](other : Tuple6[B,C,D,E,F,G]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[B,C,D,E,F,G,H](other : Tuple7[B,C,D,E,F,G,H]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[B,C,D,E,F,G,H,I](other : Tuple8[B,C,D,E,F,G,H,I]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J](other : Tuple9[B,C,D,E,F,G,H,I,J]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K](other : Tuple10[B,C,D,E,F,G,H,I,J,K]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L](other : Tuple11[B,C,D,E,F,G,H,I,J,K,L]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M](other : Tuple12[B,C,D,E,F,G,H,I,J,K,L,M]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N](other : Tuple13[B,C,D,E,F,G,H,I,J,K,L,M,N]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O](other : Tuple14[B,C,D,E,F,G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P](other : Tuple15[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q](other : Tuple16[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple17[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple18[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple19[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple20[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19,other._20)
+ }
+
+ def ++[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple21[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19,other._20,other._21)
+ }
+ }
+
+ implicit def tup1ToAdder[A](tup : Tuple1[A]) = new Tuple1Adder(tup)
+
+ class Tuple2Adder[A,B](tup : Tuple2[A,B]) {
+ def :+[C](other : C) = {
+ (tup._1,tup._2,other)
+ }
+
+ def ++[C](other : Tuple1[C]) = {
+ (tup._1,tup._2,other._1)
+ }
+
+ def ++[C,D](other : Tuple2[C,D]) = {
+ (tup._1,tup._2,other._1,other._2)
+ }
+
+ def ++[C,D,E](other : Tuple3[C,D,E]) = {
+ (tup._1,tup._2,other._1,other._2,other._3)
+ }
+
+ def ++[C,D,E,F](other : Tuple4[C,D,E,F]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[C,D,E,F,G](other : Tuple5[C,D,E,F,G]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[C,D,E,F,G,H](other : Tuple6[C,D,E,F,G,H]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[C,D,E,F,G,H,I](other : Tuple7[C,D,E,F,G,H,I]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[C,D,E,F,G,H,I,J](other : Tuple8[C,D,E,F,G,H,I,J]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K](other : Tuple9[C,D,E,F,G,H,I,J,K]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L](other : Tuple10[C,D,E,F,G,H,I,J,K,L]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M](other : Tuple11[C,D,E,F,G,H,I,J,K,L,M]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N](other : Tuple12[C,D,E,F,G,H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O](other : Tuple13[C,D,E,F,G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P](other : Tuple14[C,D,E,F,G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q](other : Tuple15[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple16[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple17[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple18[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple19[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19)
+ }
+
+ def ++[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple20[C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19,other._20)
+ }
+ }
+
+ implicit def tup2ToAdder[A,B](tup : Tuple2[A,B]) = new Tuple2Adder(tup)
+
+ class Tuple3Adder[A,B,C](tup : Tuple3[A,B,C]) {
+ def :+[D](other : D) = {
+ (tup._1,tup._2,tup._3,other)
+ }
+
+ def ++[D](other : Tuple1[D]) = {
+ (tup._1,tup._2,tup._3,other._1)
+ }
+
+ def ++[D,E](other : Tuple2[D,E]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2)
+ }
+
+ def ++[D,E,F](other : Tuple3[D,E,F]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3)
+ }
+
+ def ++[D,E,F,G](other : Tuple4[D,E,F,G]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[D,E,F,G,H](other : Tuple5[D,E,F,G,H]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[D,E,F,G,H,I](other : Tuple6[D,E,F,G,H,I]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[D,E,F,G,H,I,J](other : Tuple7[D,E,F,G,H,I,J]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[D,E,F,G,H,I,J,K](other : Tuple8[D,E,F,G,H,I,J,K]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L](other : Tuple9[D,E,F,G,H,I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M](other : Tuple10[D,E,F,G,H,I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N](other : Tuple11[D,E,F,G,H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O](other : Tuple12[D,E,F,G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P](other : Tuple13[D,E,F,G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q](other : Tuple14[D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple15[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple16[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple17[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple18[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18)
+ }
+
+ def ++[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple19[D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18,other._19)
+ }
+ }
+
+ implicit def tup3ToAdder[A,B,C](tup : Tuple3[A,B,C]) = new Tuple3Adder(tup)
+
+ class Tuple4Adder[A,B,C,D](tup : Tuple4[A,B,C,D]) {
+ def :+[E](other : E) = {
+ (tup._1,tup._2,tup._3,tup._4,other)
+ }
+
+ def ++[E](other : Tuple1[E]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1)
+ }
+
+ def ++[E,F](other : Tuple2[E,F]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2)
+ }
+
+ def ++[E,F,G](other : Tuple3[E,F,G]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3)
+ }
+
+ def ++[E,F,G,H](other : Tuple4[E,F,G,H]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[E,F,G,H,I](other : Tuple5[E,F,G,H,I]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[E,F,G,H,I,J](other : Tuple6[E,F,G,H,I,J]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[E,F,G,H,I,J,K](other : Tuple7[E,F,G,H,I,J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[E,F,G,H,I,J,K,L](other : Tuple8[E,F,G,H,I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M](other : Tuple9[E,F,G,H,I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N](other : Tuple10[E,F,G,H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O](other : Tuple11[E,F,G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P](other : Tuple12[E,F,G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q](other : Tuple13[E,F,G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple14[E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple15[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple16[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple17[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17)
+ }
+
+ def ++[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple18[E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17,other._18)
+ }
+ }
+
+ implicit def tup4ToAdder[A,B,C,D](tup : Tuple4[A,B,C,D]) = new Tuple4Adder(tup)
+
+ class Tuple5Adder[A,B,C,D,E](tup : Tuple5[A,B,C,D,E]) {
+ def :+[F](other : F) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other)
+ }
+
+ def ++[F](other : Tuple1[F]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1)
+ }
+
+ def ++[F,G](other : Tuple2[F,G]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2)
+ }
+
+ def ++[F,G,H](other : Tuple3[F,G,H]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3)
+ }
+
+ def ++[F,G,H,I](other : Tuple4[F,G,H,I]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[F,G,H,I,J](other : Tuple5[F,G,H,I,J]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[F,G,H,I,J,K](other : Tuple6[F,G,H,I,J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[F,G,H,I,J,K,L](other : Tuple7[F,G,H,I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[F,G,H,I,J,K,L,M](other : Tuple8[F,G,H,I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N](other : Tuple9[F,G,H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O](other : Tuple10[F,G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P](other : Tuple11[F,G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q](other : Tuple12[F,G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple13[F,G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple14[F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple15[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple16[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+
+ def ++[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple17[F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16,other._17)
+ }
+ }
+
+ implicit def tup5ToAdder[A,B,C,D,E](tup : Tuple5[A,B,C,D,E]) = new Tuple5Adder(tup)
+
+ class Tuple6Adder[A,B,C,D,E,F](tup : Tuple6[A,B,C,D,E,F]) {
+ def :+[G](other : G) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other)
+ }
+
+ def ++[G](other : Tuple1[G]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1)
+ }
+
+ def ++[G,H](other : Tuple2[G,H]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2)
+ }
+
+ def ++[G,H,I](other : Tuple3[G,H,I]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3)
+ }
+
+ def ++[G,H,I,J](other : Tuple4[G,H,I,J]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[G,H,I,J,K](other : Tuple5[G,H,I,J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[G,H,I,J,K,L](other : Tuple6[G,H,I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[G,H,I,J,K,L,M](other : Tuple7[G,H,I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[G,H,I,J,K,L,M,N](other : Tuple8[G,H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O](other : Tuple9[G,H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P](other : Tuple10[G,H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q](other : Tuple11[G,H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q,R](other : Tuple12[G,H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple13[G,H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple14[G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple15[G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+
+ def ++[G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple16[G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15,other._16)
+ }
+ }
+
+ implicit def tup6ToAdder[A,B,C,D,E,F](tup : Tuple6[A,B,C,D,E,F]) = new Tuple6Adder(tup)
+
+ class Tuple7Adder[A,B,C,D,E,F,G](tup : Tuple7[A,B,C,D,E,F,G]) {
+ def :+[H](other : H) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other)
+ }
+
+ def ++[H](other : Tuple1[H]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1)
+ }
+
+ def ++[H,I](other : Tuple2[H,I]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2)
+ }
+
+ def ++[H,I,J](other : Tuple3[H,I,J]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3)
+ }
+
+ def ++[H,I,J,K](other : Tuple4[H,I,J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[H,I,J,K,L](other : Tuple5[H,I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[H,I,J,K,L,M](other : Tuple6[H,I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[H,I,J,K,L,M,N](other : Tuple7[H,I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[H,I,J,K,L,M,N,O](other : Tuple8[H,I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P](other : Tuple9[H,I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q](other : Tuple10[H,I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q,R](other : Tuple11[H,I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q,R,S](other : Tuple12[H,I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple13[H,I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple14[H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+
+ def ++[H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple15[H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14,other._15)
+ }
+ }
+
+ implicit def tup7ToAdder[A,B,C,D,E,F,G](tup : Tuple7[A,B,C,D,E,F,G]) = new Tuple7Adder(tup)
+
+ class Tuple8Adder[A,B,C,D,E,F,G,H](tup : Tuple8[A,B,C,D,E,F,G,H]) {
+ def :+[I](other : I) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other)
+ }
+
+ def ++[I](other : Tuple1[I]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1)
+ }
+
+ def ++[I,J](other : Tuple2[I,J]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2)
+ }
+
+ def ++[I,J,K](other : Tuple3[I,J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3)
+ }
+
+ def ++[I,J,K,L](other : Tuple4[I,J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[I,J,K,L,M](other : Tuple5[I,J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[I,J,K,L,M,N](other : Tuple6[I,J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[I,J,K,L,M,N,O](other : Tuple7[I,J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[I,J,K,L,M,N,O,P](other : Tuple8[I,J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q](other : Tuple9[I,J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q,R](other : Tuple10[I,J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q,R,S](other : Tuple11[I,J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q,R,S,T](other : Tuple12[I,J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple13[I,J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+
+ def ++[I,J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple14[I,J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13,other._14)
+ }
+ }
+
+ implicit def tup8ToAdder[A,B,C,D,E,F,G,H](tup : Tuple8[A,B,C,D,E,F,G,H]) = new Tuple8Adder(tup)
+
+ class Tuple9Adder[A,B,C,D,E,F,G,H,I](tup : Tuple9[A,B,C,D,E,F,G,H,I]) {
+ def :+[J](other : J) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other)
+ }
+
+ def ++[J](other : Tuple1[J]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1)
+ }
+
+ def ++[J,K](other : Tuple2[J,K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2)
+ }
+
+ def ++[J,K,L](other : Tuple3[J,K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3)
+ }
+
+ def ++[J,K,L,M](other : Tuple4[J,K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[J,K,L,M,N](other : Tuple5[J,K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[J,K,L,M,N,O](other : Tuple6[J,K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[J,K,L,M,N,O,P](other : Tuple7[J,K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q](other : Tuple8[J,K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q,R](other : Tuple9[J,K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q,R,S](other : Tuple10[J,K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q,R,S,T](other : Tuple11[J,K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q,R,S,T,U](other : Tuple12[J,K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+
+ def ++[J,K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple13[J,K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12,other._13)
+ }
+ }
+
+ implicit def tup9ToAdder[A,B,C,D,E,F,G,H,I](tup : Tuple9[A,B,C,D,E,F,G,H,I]) = new Tuple9Adder(tup)
+
+ class Tuple10Adder[A,B,C,D,E,F,G,H,I,J](tup : Tuple10[A,B,C,D,E,F,G,H,I,J]) {
+ def :+[K](other : K) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other)
+ }
+
+ def ++[K](other : Tuple1[K]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1)
+ }
+
+ def ++[K,L](other : Tuple2[K,L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2)
+ }
+
+ def ++[K,L,M](other : Tuple3[K,L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3)
+ }
+
+ def ++[K,L,M,N](other : Tuple4[K,L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[K,L,M,N,O](other : Tuple5[K,L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[K,L,M,N,O,P](other : Tuple6[K,L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[K,L,M,N,O,P,Q](other : Tuple7[K,L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[K,L,M,N,O,P,Q,R](other : Tuple8[K,L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[K,L,M,N,O,P,Q,R,S](other : Tuple9[K,L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[K,L,M,N,O,P,Q,R,S,T](other : Tuple10[K,L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[K,L,M,N,O,P,Q,R,S,T,U](other : Tuple11[K,L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+
+ def ++[K,L,M,N,O,P,Q,R,S,T,U,V](other : Tuple12[K,L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11,other._12)
+ }
+ }
+
+ implicit def tup10ToAdder[A,B,C,D,E,F,G,H,I,J](tup : Tuple10[A,B,C,D,E,F,G,H,I,J]) = new Tuple10Adder(tup)
+
+ class Tuple11Adder[A,B,C,D,E,F,G,H,I,J,K](tup : Tuple11[A,B,C,D,E,F,G,H,I,J,K]) {
+ def :+[L](other : L) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other)
+ }
+
+ def ++[L](other : Tuple1[L]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1)
+ }
+
+ def ++[L,M](other : Tuple2[L,M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2)
+ }
+
+ def ++[L,M,N](other : Tuple3[L,M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3)
+ }
+
+ def ++[L,M,N,O](other : Tuple4[L,M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[L,M,N,O,P](other : Tuple5[L,M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[L,M,N,O,P,Q](other : Tuple6[L,M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[L,M,N,O,P,Q,R](other : Tuple7[L,M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[L,M,N,O,P,Q,R,S](other : Tuple8[L,M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[L,M,N,O,P,Q,R,S,T](other : Tuple9[L,M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[L,M,N,O,P,Q,R,S,T,U](other : Tuple10[L,M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+
+ def ++[L,M,N,O,P,Q,R,S,T,U,V](other : Tuple11[L,M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10,other._11)
+ }
+ }
+
+ implicit def tup11ToAdder[A,B,C,D,E,F,G,H,I,J,K](tup : Tuple11[A,B,C,D,E,F,G,H,I,J,K]) = new Tuple11Adder(tup)
+
+ class Tuple12Adder[A,B,C,D,E,F,G,H,I,J,K,L](tup : Tuple12[A,B,C,D,E,F,G,H,I,J,K,L]) {
+ def :+[M](other : M) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other)
+ }
+
+ def ++[M](other : Tuple1[M]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1)
+ }
+
+ def ++[M,N](other : Tuple2[M,N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2)
+ }
+
+ def ++[M,N,O](other : Tuple3[M,N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3)
+ }
+
+ def ++[M,N,O,P](other : Tuple4[M,N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[M,N,O,P,Q](other : Tuple5[M,N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[M,N,O,P,Q,R](other : Tuple6[M,N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[M,N,O,P,Q,R,S](other : Tuple7[M,N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[M,N,O,P,Q,R,S,T](other : Tuple8[M,N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[M,N,O,P,Q,R,S,T,U](other : Tuple9[M,N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+
+ def ++[M,N,O,P,Q,R,S,T,U,V](other : Tuple10[M,N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9,other._10)
+ }
+ }
+
+ implicit def tup12ToAdder[A,B,C,D,E,F,G,H,I,J,K,L](tup : Tuple12[A,B,C,D,E,F,G,H,I,J,K,L]) = new Tuple12Adder(tup)
+
+ class Tuple13Adder[A,B,C,D,E,F,G,H,I,J,K,L,M](tup : Tuple13[A,B,C,D,E,F,G,H,I,J,K,L,M]) {
+ def :+[N](other : N) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other)
+ }
+
+ def ++[N](other : Tuple1[N]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1)
+ }
+
+ def ++[N,O](other : Tuple2[N,O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2)
+ }
+
+ def ++[N,O,P](other : Tuple3[N,O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3)
+ }
+
+ def ++[N,O,P,Q](other : Tuple4[N,O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[N,O,P,Q,R](other : Tuple5[N,O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[N,O,P,Q,R,S](other : Tuple6[N,O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[N,O,P,Q,R,S,T](other : Tuple7[N,O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[N,O,P,Q,R,S,T,U](other : Tuple8[N,O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+
+ def ++[N,O,P,Q,R,S,T,U,V](other : Tuple9[N,O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8,other._9)
+ }
+ }
+
+ implicit def tup13ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M](tup : Tuple13[A,B,C,D,E,F,G,H,I,J,K,L,M]) = new Tuple13Adder(tup)
+
+ class Tuple14Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N](tup : Tuple14[A,B,C,D,E,F,G,H,I,J,K,L,M,N]) {
+ def :+[O](other : O) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other)
+ }
+
+ def ++[O](other : Tuple1[O]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1)
+ }
+
+ def ++[O,P](other : Tuple2[O,P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2)
+ }
+
+ def ++[O,P,Q](other : Tuple3[O,P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3)
+ }
+
+ def ++[O,P,Q,R](other : Tuple4[O,P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[O,P,Q,R,S](other : Tuple5[O,P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[O,P,Q,R,S,T](other : Tuple6[O,P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[O,P,Q,R,S,T,U](other : Tuple7[O,P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+
+ def ++[O,P,Q,R,S,T,U,V](other : Tuple8[O,P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,other._1,other._2,other._3,other._4,other._5,other._6,other._7,other._8)
+ }
+ }
+
+ implicit def tup14ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N](tup : Tuple14[A,B,C,D,E,F,G,H,I,J,K,L,M,N]) = new Tuple14Adder(tup)
+
+ class Tuple15Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O](tup : Tuple15[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O]) {
+ def :+[P](other : P) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other)
+ }
+
+ def ++[P](other : Tuple1[P]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1)
+ }
+
+ def ++[P,Q](other : Tuple2[P,Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2)
+ }
+
+ def ++[P,Q,R](other : Tuple3[P,Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2,other._3)
+ }
+
+ def ++[P,Q,R,S](other : Tuple4[P,Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[P,Q,R,S,T](other : Tuple5[P,Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[P,Q,R,S,T,U](other : Tuple6[P,Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+
+ def ++[P,Q,R,S,T,U,V](other : Tuple7[P,Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,other._1,other._2,other._3,other._4,other._5,other._6,other._7)
+ }
+ }
+
+ implicit def tup15ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O](tup : Tuple15[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O]) = new Tuple15Adder(tup)
+
+ class Tuple16Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P](tup : Tuple16[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P]) {
+ def :+[Q](other : Q) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other)
+ }
+
+ def ++[Q](other : Tuple1[Q]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1)
+ }
+
+ def ++[Q,R](other : Tuple2[Q,R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1,other._2)
+ }
+
+ def ++[Q,R,S](other : Tuple3[Q,R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1,other._2,other._3)
+ }
+
+ def ++[Q,R,S,T](other : Tuple4[Q,R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[Q,R,S,T,U](other : Tuple5[Q,R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1,other._2,other._3,other._4,other._5)
+ }
+
+ def ++[Q,R,S,T,U,V](other : Tuple6[Q,R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,other._1,other._2,other._3,other._4,other._5,other._6)
+ }
+ }
+
+ implicit def tup16ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P](tup : Tuple16[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P]) = new Tuple16Adder(tup)
+
+ class Tuple17Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q](tup : Tuple17[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) {
+ def :+[R](other : R) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other)
+ }
+
+ def ++[R](other : Tuple1[R]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other._1)
+ }
+
+ def ++[R,S](other : Tuple2[R,S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other._1,other._2)
+ }
+
+ def ++[R,S,T](other : Tuple3[R,S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other._1,other._2,other._3)
+ }
+
+ def ++[R,S,T,U](other : Tuple4[R,S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other._1,other._2,other._3,other._4)
+ }
+
+ def ++[R,S,T,U,V](other : Tuple5[R,S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,other._1,other._2,other._3,other._4,other._5)
+ }
+ }
+
+ implicit def tup17ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q](tup : Tuple17[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q]) = new Tuple17Adder(tup)
+
+ class Tuple18Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R](tup : Tuple18[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) {
+ def :+[S](other : S) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,other)
+ }
+
+ def ++[S](other : Tuple1[S]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,other._1)
+ }
+
+ def ++[S,T](other : Tuple2[S,T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,other._1,other._2)
+ }
+
+ def ++[S,T,U](other : Tuple3[S,T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,other._1,other._2,other._3)
+ }
+
+ def ++[S,T,U,V](other : Tuple4[S,T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,other._1,other._2,other._3,other._4)
+ }
+ }
+
+ implicit def tup18ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R](tup : Tuple18[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R]) = new Tuple18Adder(tup)
+
+ class Tuple19Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](tup : Tuple19[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) {
+ def :+[T](other : T) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,other)
+ }
+
+ def ++[T](other : Tuple1[T]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,other._1)
+ }
+
+ def ++[T,U](other : Tuple2[T,U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,other._1,other._2)
+ }
+
+ def ++[T,U,V](other : Tuple3[T,U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,other._1,other._2,other._3)
+ }
+ }
+
+ implicit def tup19ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S](tup : Tuple19[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S]) = new Tuple19Adder(tup)
+
+ class Tuple20Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](tup : Tuple20[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) {
+ def :+[U](other : U) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,tup._20,other)
+ }
+
+ def ++[U](other : Tuple1[U]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,tup._20,other._1)
+ }
+
+ def ++[U,V](other : Tuple2[U,V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,tup._20,other._1,other._2)
+ }
+ }
+
+ implicit def tup20ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T](tup : Tuple20[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T]) = new Tuple20Adder(tup)
+
+ class Tuple21Adder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](tup : Tuple21[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) {
+ def :+[V](other : V) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,tup._20,tup._21,other)
+ }
+
+ def ++[V](other : Tuple1[V]) = {
+ (tup._1,tup._2,tup._3,tup._4,tup._5,tup._6,tup._7,tup._8,tup._9,tup._10,tup._11,tup._12,tup._13,tup._14,tup._15,tup._16,tup._17,tup._18,tup._19,tup._20,tup._21,other._1)
+ }
+ }
+
+ implicit def tup21ToAdder[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U](tup : Tuple21[A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U]) = new Tuple21Adder(tup)
+
+}
+// end of autogenerated

No commit comments for this range

Something went wrong with that request. Please try again.