protected override bool FromInternalKeyToStackKey(Trashable internalKey, out KeyValuePair <int, int> externalKey) { Tuple <int, int> itm; bool res = FromInternalKeyToExternalKey(internalKey, out itm); externalKey = new KeyValuePair <int, int>(itm.Item1, itm.Item2); return(res); }
protected override Trashable FromExternalKeyToStorageKey(Tuple <int, int> externalKey) { Trashable res; if (!Keys.TryGetValue(externalKey, out res)) { Keys[externalKey] = res = new Trashable { Value = externalKey.Item1 } } ; return(res); }
protected override bool FromInternalKeyToExternalKey(Trashable internalKey, out Tuple <int, int> externalKey) { externalKey = System.Linq.Enumerable.First(Keys, kvp => object.ReferenceEquals(kvp.Value, internalKey)).Key; return(!internalKey.IsGarbage); }