From 34c4808c76379331993fb087059c8dd3f48fe449 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Wed, 14 Mar 2012 12:50:40 +0000 Subject: [PATCH] #KT-1565 add a StringTemplate class which takes a Tuple - also add a Tuple so we can easily generically process all the items in a tuple --- runtime/src/jet/StringTemplate.java | 70 +++++++++++++++++++++++++++++ runtime/src/jet/Tuple.java | 32 +++++++++++++ runtime/src/jet/Tuple0.java | 11 ++++- runtime/src/jet/Tuple1.java | 12 ++++- runtime/src/jet/Tuple10.java | 21 ++++++++- runtime/src/jet/Tuple11.java | 22 ++++++++- runtime/src/jet/Tuple12.java | 23 +++++++++- runtime/src/jet/Tuple13.java | 25 ++++++++++- runtime/src/jet/Tuple14.java | 26 ++++++++++- runtime/src/jet/Tuple15.java | 27 ++++++++++- runtime/src/jet/Tuple16.java | 28 +++++++++++- runtime/src/jet/Tuple17.java | 29 +++++++++++- runtime/src/jet/Tuple18.java | 30 ++++++++++++- runtime/src/jet/Tuple19.java | 31 ++++++++++++- runtime/src/jet/Tuple2.java | 13 +++++- runtime/src/jet/Tuple20.java | 32 ++++++++++++- runtime/src/jet/Tuple21.java | 33 +++++++++++++- runtime/src/jet/Tuple22.java | 33 +++++++++++++- runtime/src/jet/Tuple3.java | 14 +++++- runtime/src/jet/Tuple4.java | 15 ++++++- runtime/src/jet/Tuple5.java | 16 ++++++- runtime/src/jet/Tuple6.java | 17 ++++++- runtime/src/jet/Tuple7.java | 18 +++++++- runtime/src/jet/Tuple8.java | 19 +++++++- runtime/src/jet/Tuple9.java | 20 ++++++++- 25 files changed, 594 insertions(+), 23 deletions(-) create mode 100644 runtime/src/jet/StringTemplate.java create mode 100644 runtime/src/jet/Tuple.java diff --git a/runtime/src/jet/StringTemplate.java b/runtime/src/jet/StringTemplate.java new file mode 100644 index 00000000000..5ac79e4bb44 --- /dev/null +++ b/runtime/src/jet/StringTemplate.java @@ -0,0 +1,70 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jet; + +/** + * Represents a string template object; that is a string with $ expressions such as "Hello $user". + * + * It is represented as an object that contains a Tuple + */ +public class StringTemplate { + private final T tuple; + + public StringTemplate(T tuple) { + this.tuple = tuple; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + StringTemplate that = (StringTemplate) o; + + if (tuple != null ? !tuple.equals(that.tuple) : that.tuple != null) return false; + + return true; + } + + @Override + public int hashCode() { + return tuple != null ? tuple.hashCode() : 0; + } + + /** + * Returns the plain string version of the string template with no special escaping + */ + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + tuple.forEach(new Function1(){ + @Override + public Void invoke(Object o) { + builder.append(o); + return null; + } + }); + return builder.toString(); + + } + + /** + * Returns the values in the string template + */ + public T getValues() { + return tuple; + } +} diff --git a/runtime/src/jet/Tuple.java b/runtime/src/jet/Tuple.java new file mode 100644 index 00000000000..1bd6a88e794 --- /dev/null +++ b/runtime/src/jet/Tuple.java @@ -0,0 +1,32 @@ +/* + * Copyright 2010-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package jet; + +/** + * Represents the common interface of a tuple + */ +public abstract class Tuple extends DefaultJetObject { + + /** + * Performs the given function on each item in the tuple + */ + public abstract void forEach(Function1 fn); + + /** + * Returns the size of the tuple + */ + public abstract int size(); +} diff --git a/runtime/src/jet/Tuple0.java b/runtime/src/jet/Tuple0.java index 89dd3aeb110..b45e34112e7 100644 --- a/runtime/src/jet/Tuple0.java +++ b/runtime/src/jet/Tuple0.java @@ -19,7 +19,7 @@ package jet; /** * @author alex.tkachman */ -public class Tuple0 { +public class Tuple0 extends Tuple { public static final Tuple0 INSTANCE = new Tuple0(); private Tuple0() { @@ -39,4 +39,13 @@ public class Tuple0 { public int hashCode() { return 239; } + + @Override + public void forEach(Function1 fn) { + } + + @Override + public int size() { + return 0; + } } diff --git a/runtime/src/jet/Tuple1.java b/runtime/src/jet/Tuple1.java index 161b0c6415c..8fef66da17d 100644 --- a/runtime/src/jet/Tuple1.java +++ b/runtime/src/jet/Tuple1.java @@ -16,7 +16,7 @@ package jet; -public class Tuple1 extends DefaultJetObject { +public class Tuple1 extends Tuple { public final T1 _1; public Tuple1(T1 t1) { @@ -44,4 +44,14 @@ public class Tuple1 extends DefaultJetObject { int result = _1 != null ? _1.hashCode() : 0; return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + } + + @Override + public int size() { + return 1; + } } diff --git a/runtime/src/jet/Tuple10.java b/runtime/src/jet/Tuple10.java index d9a37828dfc..9d003073513 100644 --- a/runtime/src/jet/Tuple10.java +++ b/runtime/src/jet/Tuple10.java @@ -16,7 +16,7 @@ package jet; -public class Tuple10 extends DefaultJetObject { +public class Tuple10 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -107,4 +107,23 @@ public class Tuple10 extends DefaultJet result = 31 * result + (_10 != null ? _10.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + } + + @Override + public int size() { + return 10; + } } diff --git a/runtime/src/jet/Tuple11.java b/runtime/src/jet/Tuple11.java index 5dd11aeabc3..8a61d3f8f94 100644 --- a/runtime/src/jet/Tuple11.java +++ b/runtime/src/jet/Tuple11.java @@ -16,7 +16,7 @@ package jet; -public class Tuple11 extends DefaultJetObject { +public class Tuple11 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -114,4 +114,24 @@ public class Tuple11 extends Defau result = 31 * result + (_11 != null ? _11.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + } + + @Override + public int size() { + return 11; + } } diff --git a/runtime/src/jet/Tuple12.java b/runtime/src/jet/Tuple12.java index ac213c7b9b3..e4c88c68863 100644 --- a/runtime/src/jet/Tuple12.java +++ b/runtime/src/jet/Tuple12.java @@ -16,7 +16,7 @@ package jet; -public class Tuple12 extends DefaultJetObject { +public class Tuple12 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -121,4 +121,25 @@ public class Tuple12 extends result = 31 * result + (_12 != null ? _12.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + } + + @Override + public int size() { + return 12; + } } diff --git a/runtime/src/jet/Tuple13.java b/runtime/src/jet/Tuple13.java index 135e31aff6a..1260c5a97a8 100644 --- a/runtime/src/jet/Tuple13.java +++ b/runtime/src/jet/Tuple13.java @@ -16,7 +16,7 @@ package jet; -public class Tuple13 extends DefaultJetObject { +public class Tuple13 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -128,4 +128,27 @@ public class Tuple13 ext result = 31 * result + (_13 != null ? _13.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + } + + @Override + public int size() { + return 13; + } } diff --git a/runtime/src/jet/Tuple14.java b/runtime/src/jet/Tuple14.java index 7cea8fd85d0..b4b9844bfb1 100644 --- a/runtime/src/jet/Tuple14.java +++ b/runtime/src/jet/Tuple14.java @@ -16,7 +16,7 @@ package jet; -public class Tuple14 extends DefaultJetObject { +public class Tuple14 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -135,4 +135,28 @@ public class Tuple14 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + } + + @Override + public int size() { + return 14; + } } diff --git a/runtime/src/jet/Tuple15.java b/runtime/src/jet/Tuple15.java index 24ddc169f68..ff1e3e3ba80 100644 --- a/runtime/src/jet/Tuple15.java +++ b/runtime/src/jet/Tuple15.java @@ -16,7 +16,7 @@ package jet; -public class Tuple15 extends DefaultJetObject { +public class Tuple15 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -142,4 +142,29 @@ public class Tuple15 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + } + + @Override + public int size() { + return 15; + } } diff --git a/runtime/src/jet/Tuple16.java b/runtime/src/jet/Tuple16.java index bef65c9d7e7..bb58d53e5b7 100644 --- a/runtime/src/jet/Tuple16.java +++ b/runtime/src/jet/Tuple16.java @@ -16,7 +16,7 @@ package jet; -public class Tuple16 extends DefaultJetObject { +public class Tuple16 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -149,4 +149,30 @@ public class Tuple16 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + } + + @Override + public int size() { + return 16; + } } diff --git a/runtime/src/jet/Tuple17.java b/runtime/src/jet/Tuple17.java index 9718cbb0114..c13906360f3 100644 --- a/runtime/src/jet/Tuple17.java +++ b/runtime/src/jet/Tuple17.java @@ -16,7 +16,7 @@ package jet; -public class Tuple17 extends DefaultJetObject { +public class Tuple17 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -156,4 +156,31 @@ public class Tuple17 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + } + + @Override + public int size() { + return 17; + } } diff --git a/runtime/src/jet/Tuple18.java b/runtime/src/jet/Tuple18.java index e8d433bc7e4..74f83711b0a 100644 --- a/runtime/src/jet/Tuple18.java +++ b/runtime/src/jet/Tuple18.java @@ -16,7 +16,7 @@ package jet; -public class Tuple18 extends DefaultJetObject { +public class Tuple18 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -163,4 +163,32 @@ public class Tuple18 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + fn.invoke(_18); + } + + @Override + public int size() { + return 18; + } } diff --git a/runtime/src/jet/Tuple19.java b/runtime/src/jet/Tuple19.java index 491a3c377c1..c6e982a1a3f 100644 --- a/runtime/src/jet/Tuple19.java +++ b/runtime/src/jet/Tuple19.java @@ -16,7 +16,7 @@ package jet; -public class Tuple19 extends DefaultJetObject { +public class Tuple19 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -170,4 +170,33 @@ public class Tuple19 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + fn.invoke(_18); + fn.invoke(_19); + } + + @Override + public int size() { + return 19; + } } diff --git a/runtime/src/jet/Tuple2.java b/runtime/src/jet/Tuple2.java index 2a150b1eddc..dcdf3b0ee0e 100644 --- a/runtime/src/jet/Tuple2.java +++ b/runtime/src/jet/Tuple2.java @@ -16,7 +16,7 @@ package jet; -public class Tuple2 extends DefaultJetObject { +public class Tuple2 extends Tuple { public final T1 _1; public final T2 _2; @@ -51,4 +51,15 @@ public class Tuple2 extends DefaultJetObject { result = 31 * result + (_2 != null ? _2.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + } + + @Override + public int size() { + return 2; + } } diff --git a/runtime/src/jet/Tuple20.java b/runtime/src/jet/Tuple20.java index 880451376e7..8272dce6a14 100644 --- a/runtime/src/jet/Tuple20.java +++ b/runtime/src/jet/Tuple20.java @@ -16,7 +16,7 @@ package jet; -public class Tuple20 extends DefaultJetObject { +public class Tuple20 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -177,4 +177,34 @@ public class Tuple20 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + fn.invoke(_18); + fn.invoke(_19); + fn.invoke(_20); + } + + @Override + public int size() { + return 20; + } } diff --git a/runtime/src/jet/Tuple21.java b/runtime/src/jet/Tuple21.java index e41ae41ee7c..0c7818d5cc8 100644 --- a/runtime/src/jet/Tuple21.java +++ b/runtime/src/jet/Tuple21.java @@ -16,7 +16,7 @@ package jet; -public class Tuple21 extends DefaultJetObject { +public class Tuple21 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -184,4 +184,35 @@ public class Tuple21 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + fn.invoke(_18); + fn.invoke(_19); + fn.invoke(_20); + fn.invoke(_21); + } + + @Override + public int size() { + return 21; + } } diff --git a/runtime/src/jet/Tuple22.java b/runtime/src/jet/Tuple22.java index 27a74472f96..b0179dc4cf8 100644 --- a/runtime/src/jet/Tuple22.java +++ b/runtime/src/jet/Tuple22.java @@ -16,7 +16,7 @@ package jet; -public class Tuple22 extends DefaultJetObject { +public class Tuple22 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -191,4 +191,35 @@ public class Tuple22 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + fn.invoke(_10); + fn.invoke(_11); + fn.invoke(_12); + fn.invoke(_13); + fn.invoke(_13); + fn.invoke(_14); + fn.invoke(_15); + fn.invoke(_16); + fn.invoke(_17); + fn.invoke(_18); + fn.invoke(_19); + fn.invoke(_20); + fn.invoke(_22); + } + + @Override + public int size() { + return 22; + } } diff --git a/runtime/src/jet/Tuple3.java b/runtime/src/jet/Tuple3.java index 0ce479d0bdd..e10694f9602 100644 --- a/runtime/src/jet/Tuple3.java +++ b/runtime/src/jet/Tuple3.java @@ -16,7 +16,7 @@ package jet; -public class Tuple3 extends DefaultJetObject { +public class Tuple3 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -58,4 +58,16 @@ public class Tuple3 extends DefaultJetObject { result = 31 * result + (_3 != null ? _3.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + } + + @Override + public int size() { + return 3; + } } diff --git a/runtime/src/jet/Tuple4.java b/runtime/src/jet/Tuple4.java index ace5ee317a2..75277855bc5 100644 --- a/runtime/src/jet/Tuple4.java +++ b/runtime/src/jet/Tuple4.java @@ -16,7 +16,7 @@ package jet; -public class Tuple4 extends DefaultJetObject { +public class Tuple4 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -65,4 +65,17 @@ public class Tuple4 extends DefaultJetObject { result = 31 * result + (_4 != null ? _4.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + } + + @Override + public int size() { + return 4; + } } diff --git a/runtime/src/jet/Tuple5.java b/runtime/src/jet/Tuple5.java index 723dae0146d..e1c5180c2dd 100644 --- a/runtime/src/jet/Tuple5.java +++ b/runtime/src/jet/Tuple5.java @@ -16,7 +16,7 @@ package jet; -public class Tuple5 extends DefaultJetObject { +public class Tuple5 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -72,4 +72,18 @@ public class Tuple5 extends DefaultJetObject { result = 31 * result + (_5 != null ? _5.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + } + + @Override + public int size() { + return 5; + } } diff --git a/runtime/src/jet/Tuple6.java b/runtime/src/jet/Tuple6.java index 9f42ef3b406..df81c44049d 100644 --- a/runtime/src/jet/Tuple6.java +++ b/runtime/src/jet/Tuple6.java @@ -16,7 +16,7 @@ package jet; -public class Tuple6 extends DefaultJetObject { +public class Tuple6 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -79,4 +79,19 @@ public class Tuple6 extends DefaultJetObject { result = 31 * result + (_6 != null ? _6.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + } + + @Override + public int size() { + return 6; + } } diff --git a/runtime/src/jet/Tuple7.java b/runtime/src/jet/Tuple7.java index 4c1832ec72e..090091b41bd 100644 --- a/runtime/src/jet/Tuple7.java +++ b/runtime/src/jet/Tuple7.java @@ -16,7 +16,7 @@ package jet; -public class Tuple7 extends DefaultJetObject { +public class Tuple7 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -86,4 +86,20 @@ public class Tuple7 extends DefaultJetObject { result = 31 * result + (_7 != null ? _7.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + } + + @Override + public int size() { + return 7; + } } diff --git a/runtime/src/jet/Tuple8.java b/runtime/src/jet/Tuple8.java index 3fe38a1ecf3..2c083bd888a 100644 --- a/runtime/src/jet/Tuple8.java +++ b/runtime/src/jet/Tuple8.java @@ -16,7 +16,7 @@ package jet; -public class Tuple8 extends DefaultJetObject { +public class Tuple8 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -93,4 +93,21 @@ public class Tuple8 extends DefaultJetObject { result = 31 * result + (_8 != null ? _8.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + } + + @Override + public int size() { + return 8; + } } diff --git a/runtime/src/jet/Tuple9.java b/runtime/src/jet/Tuple9.java index c7f2814453a..e4a4175565c 100644 --- a/runtime/src/jet/Tuple9.java +++ b/runtime/src/jet/Tuple9.java @@ -16,7 +16,7 @@ package jet; -public class Tuple9 extends DefaultJetObject { +public class Tuple9 extends Tuple { public final T1 _1; public final T2 _2; public final T3 _3; @@ -100,4 +100,22 @@ public class Tuple9 extends DefaultJetObject result = 31 * result + (_9 != null ? _9.hashCode() : 0); return result; } + + @Override + public void forEach(Function1 fn) { + fn.invoke(_1); + fn.invoke(_2); + fn.invoke(_3); + fn.invoke(_4); + fn.invoke(_5); + fn.invoke(_6); + fn.invoke(_7); + fn.invoke(_8); + fn.invoke(_9); + } + + @Override + public int size() { + return 9; + } }