private static Clique Intern(Clique c) { CliqueEqualityWrapper wrapper = new CliqueEqualityWrapper(c); Clique newC = interner.Get(wrapper); if (newC == null) { interner.Put(wrapper, c); newC = c; } return newC; }
public static Clique ValueOf(Clique c, int offset) { int[] ri = new int[c.relativeIndices.Length]; for (int i = 0; i < ri.Length; i++) { ri[i] = c.relativeIndices[i] + offset; } return ValueOfHelper(ri); }
public CliqueEqualityWrapper(Clique c) { this.c = c; }
private static Clique ValueOfHelper(int[] relativeIndices) { Clique c = new Clique(); c.relativeIndices = relativeIndices; return Intern(c); }