package org.jcodec.common; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; public class Tuple { public static class _1 { public final T0 v0; public _1(T0 v0) { this.v0 = v0; } } public static class _2 { public final T0 v0; public final T1 v1; public _2(T0 v0, T1 v1) { this.v0 = v0; this.v1 = v1; } } public static class _3 { public final T0 v0; public final T1 v1; public final T2 v2; public _3(T0 v0, T1 v1, T2 v2) { this.v0 = v0; this.v1 = v1; this.v2 = v2; } } public static class _4 { public final T0 v0; public final T1 v1; public final T2 v2; public final T3 v3; public _4(T0 v0, T1 v1, T2 v2, T3 v3) { this.v0 = v0; this.v1 = v1; this.v2 = v2; this.v3 = v3; } } public static _1 single(T0 v0) { return new _1<>(v0); } public static _2 pair(T0 v0, T1 v1) { return new _2<>(v0, v1); } public static _3 triple(T0 v0, T1 v1, T2 v2) { return new _3<>(v0, v1, v2); } public static _4 quad(T0 v0, T1 v1, T2 v2, T3 v3) { return new _4<>(v0, v1, v2, v3); } public static Map asMap(Iterable<_2> it) { HashMap result = new HashMap<>(); for (_2 el : it) result.put(el.v0, el.v1); return result; } public static Map arrayAsMap(_2[] arr) { HashMap result = new HashMap<>(); for (int i = 0; i < arr.length; i++) { _2 el = arr[i]; result.put(el.v0, el.v1); } return result; } public static List<_2> asList(Map m) { LinkedList<_2> result = new LinkedList<>(); Set> entrySet = m.entrySet(); for (Map.Entry entry : entrySet) result.add(pair(entry.getKey(), entry.getValue())); return result; } public static List _1_project0(List<_1> temp) { List result = new LinkedList<>(); for (_1 _1 : temp) result.add(_1.v0); return result; } public static List _2_project0(List<_2> temp) { List result = new LinkedList<>(); for (_2 _2 : temp) result.add(_2.v0); return result; } public static List _2_project1(List<_2> temp) { List result = new LinkedList<>(); for (_2 _2 : temp) result.add(_2.v1); return result; } public static List _3_project0(List<_3> temp) { List result = new LinkedList<>(); for (_3 _3 : temp) result.add(_3.v0); return result; } public static List _3_project1(List<_3> temp) { List result = new LinkedList<>(); for (_3 _3 : temp) result.add(_3.v1); return result; } public static List _3_project2(List<_3> temp) { List result = new LinkedList<>(); for (_3 _3 : temp) result.add(_3.v2); return result; } public static List _4_project0(List<_4> temp) { List result = new LinkedList<>(); for (_4 _4 : temp) result.add(_4.v0); return result; } public static List _4_project1(List<_4> temp) { List result = new LinkedList<>(); for (_4 _4 : temp) result.add(_4.v1); return result; } public static List _4_project2(List<_4> temp) { List result = new LinkedList<>(); for (_4 _4 : temp) result.add(_4.v2); return result; } public static List _4_project3(List<_4> temp) { List result = new LinkedList<>(); for (_4 _4 : temp) result.add(_4.v3); return result; } public static List<_1> _1map0(List<_1> l, Mapper mapper) { LinkedList<_1> result = new LinkedList<>(); for (_1 _1 : l) result.add(single(mapper.map(_1.v0))); return result; } public static List<_2> _2map0(List<_2> l, Mapper mapper) { LinkedList<_2> result = new LinkedList<>(); for (_2 _2 : l) result.add(pair(mapper.map(_2.v0), _2.v1)); return result; } public static List<_2> _2map1(List<_2> l, Mapper mapper) { LinkedList<_2> result = new LinkedList<>(); for (_2 _2 : l) result.add(pair(_2.v0, mapper.map(_2.v1))); return result; } public static List<_3> _3map0(List<_3> l, Mapper mapper) { LinkedList<_3> result = new LinkedList<>(); for (_3 _3 : l) result.add(triple(mapper.map(_3.v0), _3.v1, _3.v2)); return result; } public static List<_3> _3map1(List<_3> l, Mapper mapper) { LinkedList<_3> result = new LinkedList<>(); for (_3 _3 : l) result.add(triple(_3.v0, mapper.map(_3.v1), _3.v2)); return result; } public static List<_3> _3map3(List<_3> l, Mapper mapper) { LinkedList<_3> result = new LinkedList<>(); for (_3 _3 : l) result.add(triple(_3.v0, _3.v1, mapper.map(_3.v2))); return result; } public static List<_4> _4map0(List<_4> l, Mapper mapper) { LinkedList<_4> result = new LinkedList<>(); for (_4 _4 : l) result.add(quad(mapper.map(_4.v0), _4.v1, _4.v2, _4.v3)); return result; } public static List<_4> _4map1(List<_4> l, Mapper mapper) { LinkedList<_4> result = new LinkedList<>(); for (_4 _4 : l) result.add(quad(_4.v0, mapper.map(_4.v1), _4.v2, _4.v3)); return result; } public static List<_4> _4map3(List<_4> l, Mapper mapper) { LinkedList<_4> result = new LinkedList<>(); for (_4 _4 : l) result.add(quad(_4.v0, _4.v1, mapper.map(_4.v2), _4.v3)); return result; } public static List<_4> _4map4(List<_4> l, Mapper mapper) { LinkedList<_4> result = new LinkedList<>(); for (_4 _4 : l) result.add(quad(_4.v0, _4.v1, _4.v2, mapper.map(_4.v3))); return result; } public static interface Mapper { U map(T param1T); } }