Skip to content

Commit 269347e

Browse files
committed
specialize pair's comparison to do something sensible with <char,Color> saving 16M.
1 parent feecc70 commit 269347e

File tree

1 file changed

+19
-7
lines changed
  • OpenRA.FileFormats/Primitives

1 file changed

+19
-7
lines changed

OpenRA.FileFormats/Primitives/Pair.cs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
*/
99
#endregion
1010

11-
using System.Collections.Generic;
11+
using System.Collections.Generic;
12+
using System;
13+
using System.Drawing;
1214

1315
namespace OpenRA.FileFormats
1416
{
@@ -23,8 +25,8 @@ public Pair(T first, U second)
2325
Second = second;
2426
}
2527

26-
static IEqualityComparer<T> tc = EqualityComparer<T>.Default;
27-
static IEqualityComparer<U> uc = EqualityComparer<U>.Default;
28+
internal static IEqualityComparer<T> tc = EqualityComparer<T>.Default;
29+
internal static IEqualityComparer<U> uc = EqualityComparer<U>.Default;
2830

2931
public static bool operator ==(Pair<T, U> a, Pair<T, U> b)
3032
{
@@ -55,16 +57,26 @@ public override int GetHashCode()
5557
public static T AsFirst(Pair<T, U> p) { return p.First; }
5658
public static U AsSecond(Pair<T, U> p) { return p.Second; }
5759

58-
public Pair<U, T> Swap() { return Pair.New(Second, First); }
59-
6060
public override string ToString()
6161
{
6262
return "({0},{1})".F(First, Second);
6363
}
6464
}
6565

6666
public static class Pair
67-
{
68-
public static Pair<T, U> New<T, U>(T t, U u) { return new Pair<T, U>(t, u); }
67+
{
68+
public static Pair<T, U> New<T, U>(T t, U u) { return new Pair<T, U>(t, u); }
69+
70+
static Pair()
71+
{
72+
Pair<char,Color>.uc = new ColorEqualityComparer();
73+
}
74+
75+
// avoid the default crappy one
76+
class ColorEqualityComparer : IEqualityComparer<Color>
77+
{
78+
public bool Equals(Color x, Color y) { return x.ToArgb() == y.ToArgb(); }
79+
public int GetHashCode(Color obj) { return obj.GetHashCode(); }
80+
}
6981
}
7082
}

0 commit comments

Comments
 (0)