2bam

n-tuples for C# (1-tuple to 20-tuple, hashable, equatable)

Apr 27th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 48.29 KB | None | 0 0
  1. //n-tuples for C# - No rights reserved
  2. //2016 by Martin Sebastian Wain
  3. //
  4. //To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this software to the public domain worldwide.This software is distributed without any warranty.
  5. //You should have received a copy of the CC0 Public Domain Dedication along with this software.If not, see<http://creativecommons.org/publicdomain/zero/1.0/>.
  6. //
  7. // File generated using Python 3
  8.  
  9. using System;       //For Object.Equals
  10.  
  11.  
  12. public class Tuple<T1> {
  13.     public T1   Item1   { get; private set; }
  14.     internal Tuple(T1 item1)
  15.     {
  16.         Item1   = item1;
  17.     }
  18.     public override bool Equals(object rhs) {
  19.         var rt = (Tuple<T1>)rhs;
  20.         return Object.Equals(rt.Item1, Item1);
  21.     }
  22.     public int Size { get { return 1; } }
  23.     public override int GetHashCode() { return Item1==null ? 0 : Item1.GetHashCode(); }
  24. }
  25.  
  26. public class Tuple<T1, T2> {
  27.     public T1   Item1   { get; private set; }
  28.     public T2   Item2   { get; private set; }
  29.     internal Tuple(T1 item1, T2 item2)
  30.     {
  31.         Item1   = item1;
  32.         Item2   = item2;
  33.     }
  34.     public override bool Equals(object rhs) {
  35.         var rt = (Tuple<T1, T2>)rhs;
  36.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2);
  37.     }
  38.     public int Size { get { return 2; } }
  39.     public override int GetHashCode() { return Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()); }
  40. }
  41.  
  42. public class Tuple<T1, T2, T3> {
  43.     public T1   Item1   { get; private set; }
  44.     public T2   Item2   { get; private set; }
  45.     public T3   Item3   { get; private set; }
  46.     internal Tuple(T1 item1, T2 item2, T3 item3)
  47.     {
  48.         Item1   = item1;
  49.         Item2   = item2;
  50.         Item3   = item3;
  51.     }
  52.     public override bool Equals(object rhs) {
  53.         var rt = (Tuple<T1, T2, T3>)rhs;
  54.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3);
  55.     }
  56.     public int Size { get { return 3; } }
  57.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()); }
  58. }
  59.  
  60. public class Tuple<T1, T2, T3, T4> {
  61.     public T1   Item1   { get; private set; }
  62.     public T2   Item2   { get; private set; }
  63.     public T3   Item3   { get; private set; }
  64.     public T4   Item4   { get; private set; }
  65.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4)
  66.     {
  67.         Item1   = item1;
  68.         Item2   = item2;
  69.         Item3   = item3;
  70.         Item4   = item4;
  71.     }
  72.     public override bool Equals(object rhs) {
  73.         var rt = (Tuple<T1, T2, T3, T4>)rhs;
  74.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4);
  75.     }
  76.     public int Size { get { return 4; } }
  77.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()); }
  78. }
  79.  
  80. public class Tuple<T1, T2, T3, T4, T5> {
  81.     public T1   Item1   { get; private set; }
  82.     public T2   Item2   { get; private set; }
  83.     public T3   Item3   { get; private set; }
  84.     public T4   Item4   { get; private set; }
  85.     public T5   Item5   { get; private set; }
  86.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)
  87.     {
  88.         Item1   = item1;
  89.         Item2   = item2;
  90.         Item3   = item3;
  91.         Item4   = item4;
  92.         Item5   = item5;
  93.     }
  94.     public override bool Equals(object rhs) {
  95.         var rt = (Tuple<T1, T2, T3, T4, T5>)rhs;
  96.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5);
  97.     }
  98.     public int Size { get { return 5; } }
  99.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()); }
  100. }
  101.  
  102. public class Tuple<T1, T2, T3, T4, T5, T6> {
  103.     public T1   Item1   { get; private set; }
  104.     public T2   Item2   { get; private set; }
  105.     public T3   Item3   { get; private set; }
  106.     public T4   Item4   { get; private set; }
  107.     public T5   Item5   { get; private set; }
  108.     public T6   Item6   { get; private set; }
  109.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)
  110.     {
  111.         Item1   = item1;
  112.         Item2   = item2;
  113.         Item3   = item3;
  114.         Item4   = item4;
  115.         Item5   = item5;
  116.         Item6   = item6;
  117.     }
  118.     public override bool Equals(object rhs) {
  119.         var rt = (Tuple<T1, T2, T3, T4, T5, T6>)rhs;
  120.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6);
  121.     }
  122.     public int Size { get { return 6; } }
  123.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()); }
  124. }
  125.  
  126. public class Tuple<T1, T2, T3, T4, T5, T6, T7> {
  127.     public T1   Item1   { get; private set; }
  128.     public T2   Item2   { get; private set; }
  129.     public T3   Item3   { get; private set; }
  130.     public T4   Item4   { get; private set; }
  131.     public T5   Item5   { get; private set; }
  132.     public T6   Item6   { get; private set; }
  133.     public T7   Item7   { get; private set; }
  134.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)
  135.     {
  136.         Item1   = item1;
  137.         Item2   = item2;
  138.         Item3   = item3;
  139.         Item4   = item4;
  140.         Item5   = item5;
  141.         Item6   = item6;
  142.         Item7   = item7;
  143.     }
  144.     public override bool Equals(object rhs) {
  145.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7>)rhs;
  146.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7);
  147.     }
  148.     public int Size { get { return 7; } }
  149.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()); }
  150. }
  151.  
  152. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8> {
  153.     public T1   Item1   { get; private set; }
  154.     public T2   Item2   { get; private set; }
  155.     public T3   Item3   { get; private set; }
  156.     public T4   Item4   { get; private set; }
  157.     public T5   Item5   { get; private set; }
  158.     public T6   Item6   { get; private set; }
  159.     public T7   Item7   { get; private set; }
  160.     public T8   Item8   { get; private set; }
  161.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8)
  162.     {
  163.         Item1   = item1;
  164.         Item2   = item2;
  165.         Item3   = item3;
  166.         Item4   = item4;
  167.         Item5   = item5;
  168.         Item6   = item6;
  169.         Item7   = item7;
  170.         Item8   = item8;
  171.     }
  172.     public override bool Equals(object rhs) {
  173.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8>)rhs;
  174.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8);
  175.     }
  176.     public int Size { get { return 8; } }
  177.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()); }
  178. }
  179.  
  180. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
  181.     public T1   Item1   { get; private set; }
  182.     public T2   Item2   { get; private set; }
  183.     public T3   Item3   { get; private set; }
  184.     public T4   Item4   { get; private set; }
  185.     public T5   Item5   { get; private set; }
  186.     public T6   Item6   { get; private set; }
  187.     public T7   Item7   { get; private set; }
  188.     public T8   Item8   { get; private set; }
  189.     public T9   Item9   { get; private set; }
  190.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9)
  191.     {
  192.         Item1   = item1;
  193.         Item2   = item2;
  194.         Item3   = item3;
  195.         Item4   = item4;
  196.         Item5   = item5;
  197.         Item6   = item6;
  198.         Item7   = item7;
  199.         Item8   = item8;
  200.         Item9   = item9;
  201.     }
  202.     public override bool Equals(object rhs) {
  203.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>)rhs;
  204.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9);
  205.     }
  206.     public int Size { get { return 9; } }
  207.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()); }
  208. }
  209.  
  210. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> {
  211.     public T1   Item1   { get; private set; }
  212.     public T2   Item2   { get; private set; }
  213.     public T3   Item3   { get; private set; }
  214.     public T4   Item4   { get; private set; }
  215.     public T5   Item5   { get; private set; }
  216.     public T6   Item6   { get; private set; }
  217.     public T7   Item7   { get; private set; }
  218.     public T8   Item8   { get; private set; }
  219.     public T9   Item9   { get; private set; }
  220.     public T10  Item10  { get; private set; }
  221.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10)
  222.     {
  223.         Item1   = item1;
  224.         Item2   = item2;
  225.         Item3   = item3;
  226.         Item4   = item4;
  227.         Item5   = item5;
  228.         Item6   = item6;
  229.         Item7   = item7;
  230.         Item8   = item8;
  231.         Item9   = item9;
  232.         Item10  = item10;
  233.     }
  234.     public override bool Equals(object rhs) {
  235.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>)rhs;
  236.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10);
  237.     }
  238.     public int Size { get { return 10; } }
  239.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()); }
  240. }
  241.  
  242. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> {
  243.     public T1   Item1   { get; private set; }
  244.     public T2   Item2   { get; private set; }
  245.     public T3   Item3   { get; private set; }
  246.     public T4   Item4   { get; private set; }
  247.     public T5   Item5   { get; private set; }
  248.     public T6   Item6   { get; private set; }
  249.     public T7   Item7   { get; private set; }
  250.     public T8   Item8   { get; private set; }
  251.     public T9   Item9   { get; private set; }
  252.     public T10  Item10  { get; private set; }
  253.     public T11  Item11  { get; private set; }
  254.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11)
  255.     {
  256.         Item1   = item1;
  257.         Item2   = item2;
  258.         Item3   = item3;
  259.         Item4   = item4;
  260.         Item5   = item5;
  261.         Item6   = item6;
  262.         Item7   = item7;
  263.         Item8   = item8;
  264.         Item9   = item9;
  265.         Item10  = item10;
  266.         Item11  = item11;
  267.     }
  268.     public override bool Equals(object rhs) {
  269.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>)rhs;
  270.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11);
  271.     }
  272.     public int Size { get { return 11; } }
  273.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()); }
  274. }
  275.  
  276. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> {
  277.     public T1   Item1   { get; private set; }
  278.     public T2   Item2   { get; private set; }
  279.     public T3   Item3   { get; private set; }
  280.     public T4   Item4   { get; private set; }
  281.     public T5   Item5   { get; private set; }
  282.     public T6   Item6   { get; private set; }
  283.     public T7   Item7   { get; private set; }
  284.     public T8   Item8   { get; private set; }
  285.     public T9   Item9   { get; private set; }
  286.     public T10  Item10  { get; private set; }
  287.     public T11  Item11  { get; private set; }
  288.     public T12  Item12  { get; private set; }
  289.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12)
  290.     {
  291.         Item1   = item1;
  292.         Item2   = item2;
  293.         Item3   = item3;
  294.         Item4   = item4;
  295.         Item5   = item5;
  296.         Item6   = item6;
  297.         Item7   = item7;
  298.         Item8   = item8;
  299.         Item9   = item9;
  300.         Item10  = item10;
  301.         Item11  = item11;
  302.         Item12  = item12;
  303.     }
  304.     public override bool Equals(object rhs) {
  305.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>)rhs;
  306.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12);
  307.     }
  308.     public int Size { get { return 12; } }
  309.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()); }
  310. }
  311.  
  312. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> {
  313.     public T1   Item1   { get; private set; }
  314.     public T2   Item2   { get; private set; }
  315.     public T3   Item3   { get; private set; }
  316.     public T4   Item4   { get; private set; }
  317.     public T5   Item5   { get; private set; }
  318.     public T6   Item6   { get; private set; }
  319.     public T7   Item7   { get; private set; }
  320.     public T8   Item8   { get; private set; }
  321.     public T9   Item9   { get; private set; }
  322.     public T10  Item10  { get; private set; }
  323.     public T11  Item11  { get; private set; }
  324.     public T12  Item12  { get; private set; }
  325.     public T13  Item13  { get; private set; }
  326.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13)
  327.     {
  328.         Item1   = item1;
  329.         Item2   = item2;
  330.         Item3   = item3;
  331.         Item4   = item4;
  332.         Item5   = item5;
  333.         Item6   = item6;
  334.         Item7   = item7;
  335.         Item8   = item8;
  336.         Item9   = item9;
  337.         Item10  = item10;
  338.         Item11  = item11;
  339.         Item12  = item12;
  340.         Item13  = item13;
  341.     }
  342.     public override bool Equals(object rhs) {
  343.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>)rhs;
  344.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13);
  345.     }
  346.     public int Size { get { return 13; } }
  347.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()); }
  348. }
  349.  
  350. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> {
  351.     public T1   Item1   { get; private set; }
  352.     public T2   Item2   { get; private set; }
  353.     public T3   Item3   { get; private set; }
  354.     public T4   Item4   { get; private set; }
  355.     public T5   Item5   { get; private set; }
  356.     public T6   Item6   { get; private set; }
  357.     public T7   Item7   { get; private set; }
  358.     public T8   Item8   { get; private set; }
  359.     public T9   Item9   { get; private set; }
  360.     public T10  Item10  { get; private set; }
  361.     public T11  Item11  { get; private set; }
  362.     public T12  Item12  { get; private set; }
  363.     public T13  Item13  { get; private set; }
  364.     public T14  Item14  { get; private set; }
  365.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14)
  366.     {
  367.         Item1   = item1;
  368.         Item2   = item2;
  369.         Item3   = item3;
  370.         Item4   = item4;
  371.         Item5   = item5;
  372.         Item6   = item6;
  373.         Item7   = item7;
  374.         Item8   = item8;
  375.         Item9   = item9;
  376.         Item10  = item10;
  377.         Item11  = item11;
  378.         Item12  = item12;
  379.         Item13  = item13;
  380.         Item14  = item14;
  381.     }
  382.     public override bool Equals(object rhs) {
  383.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>)rhs;
  384.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14);
  385.     }
  386.     public int Size { get { return 14; } }
  387.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()); }
  388. }
  389.  
  390. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> {
  391.     public T1   Item1   { get; private set; }
  392.     public T2   Item2   { get; private set; }
  393.     public T3   Item3   { get; private set; }
  394.     public T4   Item4   { get; private set; }
  395.     public T5   Item5   { get; private set; }
  396.     public T6   Item6   { get; private set; }
  397.     public T7   Item7   { get; private set; }
  398.     public T8   Item8   { get; private set; }
  399.     public T9   Item9   { get; private set; }
  400.     public T10  Item10  { get; private set; }
  401.     public T11  Item11  { get; private set; }
  402.     public T12  Item12  { get; private set; }
  403.     public T13  Item13  { get; private set; }
  404.     public T14  Item14  { get; private set; }
  405.     public T15  Item15  { get; private set; }
  406.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15)
  407.     {
  408.         Item1   = item1;
  409.         Item2   = item2;
  410.         Item3   = item3;
  411.         Item4   = item4;
  412.         Item5   = item5;
  413.         Item6   = item6;
  414.         Item7   = item7;
  415.         Item8   = item8;
  416.         Item9   = item9;
  417.         Item10  = item10;
  418.         Item11  = item11;
  419.         Item12  = item12;
  420.         Item13  = item13;
  421.         Item14  = item14;
  422.         Item15  = item15;
  423.     }
  424.     public override bool Equals(object rhs) {
  425.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>)rhs;
  426.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15);
  427.     }
  428.     public int Size { get { return 15; } }
  429.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()); }
  430. }
  431.  
  432. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> {
  433.     public T1   Item1   { get; private set; }
  434.     public T2   Item2   { get; private set; }
  435.     public T3   Item3   { get; private set; }
  436.     public T4   Item4   { get; private set; }
  437.     public T5   Item5   { get; private set; }
  438.     public T6   Item6   { get; private set; }
  439.     public T7   Item7   { get; private set; }
  440.     public T8   Item8   { get; private set; }
  441.     public T9   Item9   { get; private set; }
  442.     public T10  Item10  { get; private set; }
  443.     public T11  Item11  { get; private set; }
  444.     public T12  Item12  { get; private set; }
  445.     public T13  Item13  { get; private set; }
  446.     public T14  Item14  { get; private set; }
  447.     public T15  Item15  { get; private set; }
  448.     public T16  Item16  { get; private set; }
  449.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16)
  450.     {
  451.         Item1   = item1;
  452.         Item2   = item2;
  453.         Item3   = item3;
  454.         Item4   = item4;
  455.         Item5   = item5;
  456.         Item6   = item6;
  457.         Item7   = item7;
  458.         Item8   = item8;
  459.         Item9   = item9;
  460.         Item10  = item10;
  461.         Item11  = item11;
  462.         Item12  = item12;
  463.         Item13  = item13;
  464.         Item14  = item14;
  465.         Item15  = item15;
  466.         Item16  = item16;
  467.     }
  468.     public override bool Equals(object rhs) {
  469.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>)rhs;
  470.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15) && Object.Equals(rt.Item16, Item16);
  471.     }
  472.     public int Size { get { return 16; } }
  473.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()), Item16==null ? 0 : Item16.GetHashCode()); }
  474. }
  475.  
  476. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> {
  477.     public T1   Item1   { get; private set; }
  478.     public T2   Item2   { get; private set; }
  479.     public T3   Item3   { get; private set; }
  480.     public T4   Item4   { get; private set; }
  481.     public T5   Item5   { get; private set; }
  482.     public T6   Item6   { get; private set; }
  483.     public T7   Item7   { get; private set; }
  484.     public T8   Item8   { get; private set; }
  485.     public T9   Item9   { get; private set; }
  486.     public T10  Item10  { get; private set; }
  487.     public T11  Item11  { get; private set; }
  488.     public T12  Item12  { get; private set; }
  489.     public T13  Item13  { get; private set; }
  490.     public T14  Item14  { get; private set; }
  491.     public T15  Item15  { get; private set; }
  492.     public T16  Item16  { get; private set; }
  493.     public T17  Item17  { get; private set; }
  494.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17)
  495.     {
  496.         Item1   = item1;
  497.         Item2   = item2;
  498.         Item3   = item3;
  499.         Item4   = item4;
  500.         Item5   = item5;
  501.         Item6   = item6;
  502.         Item7   = item7;
  503.         Item8   = item8;
  504.         Item9   = item9;
  505.         Item10  = item10;
  506.         Item11  = item11;
  507.         Item12  = item12;
  508.         Item13  = item13;
  509.         Item14  = item14;
  510.         Item15  = item15;
  511.         Item16  = item16;
  512.         Item17  = item17;
  513.     }
  514.     public override bool Equals(object rhs) {
  515.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>)rhs;
  516.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15) && Object.Equals(rt.Item16, Item16) && Object.Equals(rt.Item17, Item17);
  517.     }
  518.     public int Size { get { return 17; } }
  519.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()), Item16==null ? 0 : Item16.GetHashCode()), Item17==null ? 0 : Item17.GetHashCode()); }
  520. }
  521.  
  522. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> {
  523.     public T1   Item1   { get; private set; }
  524.     public T2   Item2   { get; private set; }
  525.     public T3   Item3   { get; private set; }
  526.     public T4   Item4   { get; private set; }
  527.     public T5   Item5   { get; private set; }
  528.     public T6   Item6   { get; private set; }
  529.     public T7   Item7   { get; private set; }
  530.     public T8   Item8   { get; private set; }
  531.     public T9   Item9   { get; private set; }
  532.     public T10  Item10  { get; private set; }
  533.     public T11  Item11  { get; private set; }
  534.     public T12  Item12  { get; private set; }
  535.     public T13  Item13  { get; private set; }
  536.     public T14  Item14  { get; private set; }
  537.     public T15  Item15  { get; private set; }
  538.     public T16  Item16  { get; private set; }
  539.     public T17  Item17  { get; private set; }
  540.     public T18  Item18  { get; private set; }
  541.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18)
  542.     {
  543.         Item1   = item1;
  544.         Item2   = item2;
  545.         Item3   = item3;
  546.         Item4   = item4;
  547.         Item5   = item5;
  548.         Item6   = item6;
  549.         Item7   = item7;
  550.         Item8   = item8;
  551.         Item9   = item9;
  552.         Item10  = item10;
  553.         Item11  = item11;
  554.         Item12  = item12;
  555.         Item13  = item13;
  556.         Item14  = item14;
  557.         Item15  = item15;
  558.         Item16  = item16;
  559.         Item17  = item17;
  560.         Item18  = item18;
  561.     }
  562.     public override bool Equals(object rhs) {
  563.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>)rhs;
  564.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15) && Object.Equals(rt.Item16, Item16) && Object.Equals(rt.Item17, Item17) && Object.Equals(rt.Item18, Item18);
  565.     }
  566.     public int Size { get { return 18; } }
  567.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()), Item16==null ? 0 : Item16.GetHashCode()), Item17==null ? 0 : Item17.GetHashCode()), Item18==null ? 0 : Item18.GetHashCode()); }
  568. }
  569.  
  570. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> {
  571.     public T1   Item1   { get; private set; }
  572.     public T2   Item2   { get; private set; }
  573.     public T3   Item3   { get; private set; }
  574.     public T4   Item4   { get; private set; }
  575.     public T5   Item5   { get; private set; }
  576.     public T6   Item6   { get; private set; }
  577.     public T7   Item7   { get; private set; }
  578.     public T8   Item8   { get; private set; }
  579.     public T9   Item9   { get; private set; }
  580.     public T10  Item10  { get; private set; }
  581.     public T11  Item11  { get; private set; }
  582.     public T12  Item12  { get; private set; }
  583.     public T13  Item13  { get; private set; }
  584.     public T14  Item14  { get; private set; }
  585.     public T15  Item15  { get; private set; }
  586.     public T16  Item16  { get; private set; }
  587.     public T17  Item17  { get; private set; }
  588.     public T18  Item18  { get; private set; }
  589.     public T19  Item19  { get; private set; }
  590.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19)
  591.     {
  592.         Item1   = item1;
  593.         Item2   = item2;
  594.         Item3   = item3;
  595.         Item4   = item4;
  596.         Item5   = item5;
  597.         Item6   = item6;
  598.         Item7   = item7;
  599.         Item8   = item8;
  600.         Item9   = item9;
  601.         Item10  = item10;
  602.         Item11  = item11;
  603.         Item12  = item12;
  604.         Item13  = item13;
  605.         Item14  = item14;
  606.         Item15  = item15;
  607.         Item16  = item16;
  608.         Item17  = item17;
  609.         Item18  = item18;
  610.         Item19  = item19;
  611.     }
  612.     public override bool Equals(object rhs) {
  613.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>)rhs;
  614.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15) && Object.Equals(rt.Item16, Item16) && Object.Equals(rt.Item17, Item17) && Object.Equals(rt.Item18, Item18) && Object.Equals(rt.Item19, Item19);
  615.     }
  616.     public int Size { get { return 19; } }
  617.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()), Item16==null ? 0 : Item16.GetHashCode()), Item17==null ? 0 : Item17.GetHashCode()), Item18==null ? 0 : Item18.GetHashCode()), Item19==null ? 0 : Item19.GetHashCode()); }
  618. }
  619.  
  620. public class Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> {
  621.     public T1   Item1   { get; private set; }
  622.     public T2   Item2   { get; private set; }
  623.     public T3   Item3   { get; private set; }
  624.     public T4   Item4   { get; private set; }
  625.     public T5   Item5   { get; private set; }
  626.     public T6   Item6   { get; private set; }
  627.     public T7   Item7   { get; private set; }
  628.     public T8   Item8   { get; private set; }
  629.     public T9   Item9   { get; private set; }
  630.     public T10  Item10  { get; private set; }
  631.     public T11  Item11  { get; private set; }
  632.     public T12  Item12  { get; private set; }
  633.     public T13  Item13  { get; private set; }
  634.     public T14  Item14  { get; private set; }
  635.     public T15  Item15  { get; private set; }
  636.     public T16  Item16  { get; private set; }
  637.     public T17  Item17  { get; private set; }
  638.     public T18  Item18  { get; private set; }
  639.     public T19  Item19  { get; private set; }
  640.     public T20  Item20  { get; private set; }
  641.     internal Tuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19, T20 item20)
  642.     {
  643.         Item1   = item1;
  644.         Item2   = item2;
  645.         Item3   = item3;
  646.         Item4   = item4;
  647.         Item5   = item5;
  648.         Item6   = item6;
  649.         Item7   = item7;
  650.         Item8   = item8;
  651.         Item9   = item9;
  652.         Item10  = item10;
  653.         Item11  = item11;
  654.         Item12  = item12;
  655.         Item13  = item13;
  656.         Item14  = item14;
  657.         Item15  = item15;
  658.         Item16  = item16;
  659.         Item17  = item17;
  660.         Item18  = item18;
  661.         Item19  = item19;
  662.         Item20  = item20;
  663.     }
  664.     public override bool Equals(object rhs) {
  665.         var rt = (Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>)rhs;
  666.         return Object.Equals(rt.Item1, Item1) && Object.Equals(rt.Item2, Item2) && Object.Equals(rt.Item3, Item3) && Object.Equals(rt.Item4, Item4) && Object.Equals(rt.Item5, Item5) && Object.Equals(rt.Item6, Item6) && Object.Equals(rt.Item7, Item7) && Object.Equals(rt.Item8, Item8) && Object.Equals(rt.Item9, Item9) && Object.Equals(rt.Item10, Item10) && Object.Equals(rt.Item11, Item11) && Object.Equals(rt.Item12, Item12) && Object.Equals(rt.Item13, Item13) && Object.Equals(rt.Item14, Item14) && Object.Equals(rt.Item15, Item15) && Object.Equals(rt.Item16, Item16) && Object.Equals(rt.Item17, Item17) && Object.Equals(rt.Item18, Item18) && Object.Equals(rt.Item19, Item19) && Object.Equals(rt.Item20, Item20);
  667.     }
  668.     public int Size { get { return 20; } }
  669.     public override int GetHashCode() { return Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Tuple.CombineHashCodes(Item1==null ? 0 : Item1.GetHashCode(), Item2==null ? 0 : Item2.GetHashCode()), Item3==null ? 0 : Item3.GetHashCode()), Item4==null ? 0 : Item4.GetHashCode()), Item5==null ? 0 : Item5.GetHashCode()), Item6==null ? 0 : Item6.GetHashCode()), Item7==null ? 0 : Item7.GetHashCode()), Item8==null ? 0 : Item8.GetHashCode()), Item9==null ? 0 : Item9.GetHashCode()), Item10==null ? 0 : Item10.GetHashCode()), Item11==null ? 0 : Item11.GetHashCode()), Item12==null ? 0 : Item12.GetHashCode()), Item13==null ? 0 : Item13.GetHashCode()), Item14==null ? 0 : Item14.GetHashCode()), Item15==null ? 0 : Item15.GetHashCode()), Item16==null ? 0 : Item16.GetHashCode()), Item17==null ? 0 : Item17.GetHashCode()), Item18==null ? 0 : Item18.GetHashCode()), Item19==null ? 0 : Item19.GetHashCode()), Item20==null ? 0 : Item20.GetHashCode()); }
  670. }
  671.  
  672.  
  673. public static class Tuple {
  674.    
  675.     public static Tuple<T1> Create<T1>(T1 item1)
  676.     {
  677.         return new Tuple<T1>(item1);
  678.     }
  679.  
  680.     public static Tuple<T1, T2> Create<T1, T2>(T1 item1, T2 item2)
  681.     {
  682.         return new Tuple<T1, T2>(item1, item2);
  683.     }
  684.  
  685.     public static Tuple<T1, T2, T3> Create<T1, T2, T3>(T1 item1, T2 item2, T3 item3)
  686.     {
  687.         return new Tuple<T1, T2, T3>(item1, item2, item3);
  688.     }
  689.  
  690.     public static Tuple<T1, T2, T3, T4> Create<T1, T2, T3, T4>(T1 item1, T2 item2, T3 item3, T4 item4)
  691.     {
  692.         return new Tuple<T1, T2, T3, T4>(item1, item2, item3, item4);
  693.     }
  694.  
  695.     public static Tuple<T1, T2, T3, T4, T5> Create<T1, T2, T3, T4, T5>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5)
  696.     {
  697.         return new Tuple<T1, T2, T3, T4, T5>(item1, item2, item3, item4, item5);
  698.     }
  699.  
  700.     public static Tuple<T1, T2, T3, T4, T5, T6> Create<T1, T2, T3, T4, T5, T6>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6)
  701.     {
  702.         return new Tuple<T1, T2, T3, T4, T5, T6>(item1, item2, item3, item4, item5, item6);
  703.     }
  704.  
  705.     public static Tuple<T1, T2, T3, T4, T5, T6, T7> Create<T1, T2, T3, T4, T5, T6, T7>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7)
  706.     {
  707.         return new Tuple<T1, T2, T3, T4, T5, T6, T7>(item1, item2, item3, item4, item5, item6, item7);
  708.     }
  709.  
  710.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8> Create<T1, T2, T3, T4, T5, T6, T7, T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8)
  711.     {
  712.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8>(item1, item2, item3, item4, item5, item6, item7, item8);
  713.     }
  714.  
  715.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9)
  716.     {
  717.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>(item1, item2, item3, item4, item5, item6, item7, item8, item9);
  718.     }
  719.  
  720.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10)
  721.     {
  722.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10);
  723.     }
  724.  
  725.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11)
  726.     {
  727.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11);
  728.     }
  729.  
  730.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12)
  731.     {
  732.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12);
  733.     }
  734.  
  735.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13)
  736.     {
  737.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13);
  738.     }
  739.  
  740.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14)
  741.     {
  742.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14);
  743.     }
  744.  
  745.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15)
  746.     {
  747.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15);
  748.     }
  749.  
  750.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16)
  751.     {
  752.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16);
  753.     }
  754.  
  755.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17)
  756.     {
  757.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17);
  758.     }
  759.  
  760.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18)
  761.     {
  762.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18);
  763.     }
  764.  
  765.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19)
  766.     {
  767.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19);
  768.     }
  769.  
  770.     public static Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Create<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19, T20 item20)
  771.     {
  772.         return new Tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20);
  773.     }
  774.  
  775.    
  776.     public static int CombineHashCodes(int h1, int h2)
  777.     {
  778.         return (((h1 << 5) - h1) ^ h2);
  779.     }  
  780. }
Advertisement
Add Comment
Please, Sign In to add comment