/Mono.Cecil.Metadata/Row.cs

http://github.com/jbevain/cecil · C# · 152 lines · 122 code · 21 blank · 9 comment · 13 complexity · 1f63cf51e9c1e30abbab1042b2563f60 MD5 · raw file

  1. //
  2. // Author:
  3. // Jb Evain (jbevain@gmail.com)
  4. //
  5. // Copyright (c) 2008 - 2015 Jb Evain
  6. // Copyright (c) 2008 - 2011 Novell, Inc.
  7. //
  8. // Licensed under the MIT/X11 license.
  9. //
  10. using System.Collections.Generic;
  11. namespace Mono.Cecil.Metadata {
  12. struct Row<T1, T2> {
  13. internal T1 Col1;
  14. internal T2 Col2;
  15. public Row (T1 col1, T2 col2)
  16. {
  17. Col1 = col1;
  18. Col2 = col2;
  19. }
  20. }
  21. struct Row<T1, T2, T3> {
  22. internal T1 Col1;
  23. internal T2 Col2;
  24. internal T3 Col3;
  25. public Row (T1 col1, T2 col2, T3 col3)
  26. {
  27. Col1 = col1;
  28. Col2 = col2;
  29. Col3 = col3;
  30. }
  31. }
  32. struct Row<T1, T2, T3, T4> {
  33. internal T1 Col1;
  34. internal T2 Col2;
  35. internal T3 Col3;
  36. internal T4 Col4;
  37. public Row (T1 col1, T2 col2, T3 col3, T4 col4)
  38. {
  39. Col1 = col1;
  40. Col2 = col2;
  41. Col3 = col3;
  42. Col4 = col4;
  43. }
  44. }
  45. struct Row<T1, T2, T3, T4, T5> {
  46. internal T1 Col1;
  47. internal T2 Col2;
  48. internal T3 Col3;
  49. internal T4 Col4;
  50. internal T5 Col5;
  51. public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5)
  52. {
  53. Col1 = col1;
  54. Col2 = col2;
  55. Col3 = col3;
  56. Col4 = col4;
  57. Col5 = col5;
  58. }
  59. }
  60. struct Row<T1, T2, T3, T4, T5, T6> {
  61. internal T1 Col1;
  62. internal T2 Col2;
  63. internal T3 Col3;
  64. internal T4 Col4;
  65. internal T5 Col5;
  66. internal T6 Col6;
  67. public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6)
  68. {
  69. Col1 = col1;
  70. Col2 = col2;
  71. Col3 = col3;
  72. Col4 = col4;
  73. Col5 = col5;
  74. Col6 = col6;
  75. }
  76. }
  77. struct Row<T1, T2, T3, T4, T5, T6, T7, T8, T9> {
  78. internal T1 Col1;
  79. internal T2 Col2;
  80. internal T3 Col3;
  81. internal T4 Col4;
  82. internal T5 Col5;
  83. internal T6 Col6;
  84. internal T7 Col7;
  85. internal T8 Col8;
  86. internal T9 Col9;
  87. public Row (T1 col1, T2 col2, T3 col3, T4 col4, T5 col5, T6 col6, T7 col7, T8 col8, T9 col9)
  88. {
  89. Col1 = col1;
  90. Col2 = col2;
  91. Col3 = col3;
  92. Col4 = col4;
  93. Col5 = col5;
  94. Col6 = col6;
  95. Col7 = col7;
  96. Col8 = col8;
  97. Col9 = col9;
  98. }
  99. }
  100. sealed class RowEqualityComparer : IEqualityComparer<Row<string, string>>, IEqualityComparer<Row<uint, uint>>, IEqualityComparer<Row<uint, uint, uint>> {
  101. public bool Equals (Row<string, string> x, Row<string, string> y)
  102. {
  103. return x.Col1 == y.Col1
  104. && x.Col2 == y.Col2;
  105. }
  106. public int GetHashCode (Row<string, string> obj)
  107. {
  108. string x = obj.Col1, y = obj.Col2;
  109. return (x != null ? x.GetHashCode () : 0) ^ (y != null ? y.GetHashCode () : 0);
  110. }
  111. public bool Equals (Row<uint, uint> x, Row<uint, uint> y)
  112. {
  113. return x.Col1 == y.Col1
  114. && x.Col2 == y.Col2;
  115. }
  116. public int GetHashCode (Row<uint, uint> obj)
  117. {
  118. return (int) (obj.Col1 ^ obj.Col2);
  119. }
  120. public bool Equals (Row<uint, uint, uint> x, Row<uint, uint, uint> y)
  121. {
  122. return x.Col1 == y.Col1
  123. && x.Col2 == y.Col2
  124. && x.Col3 == y.Col3;
  125. }
  126. public int GetHashCode (Row<uint, uint, uint> obj)
  127. {
  128. return (int) (obj.Col1 ^ obj.Col2 ^ obj.Col3);
  129. }
  130. }
  131. }