UNPKG

molstar

Version:

A comprehensive macromolecular library.

48 lines 1.74 kB
/** * Copyright (c) 2017 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author David Sehnal <david.sehnal@gmail.com> */ var EquivalenceClassesImpl = /** @class */ (function () { function EquivalenceClassesImpl(getHash, areEqual) { this.getHash = getHash; this.areEqual = areEqual; this.id = 0; this.byHash = new Map(); this.groups = []; } EquivalenceClassesImpl.prototype.createGroup = function (key, value) { var id = this.id++; var keys = [key]; this.groups[id] = keys; return { id: id, keys: keys, value: value }; }; // Return the group representative. EquivalenceClassesImpl.prototype.add = function (key, a) { var hash = this.getHash(a); if (this.byHash.has(hash)) { var groups = this.byHash.get(hash); for (var i = 0, _i = groups.length; i < _i; i++) { var group_1 = groups[i]; if (this.areEqual(a, group_1.value)) { group_1.keys[group_1.keys.length] = key; return group_1.value; } } var group = this.createGroup(key, a); groups[groups.length] = group; return group.value; } else { var group = this.createGroup(key, a); this.byHash.set(hash, [group]); return group.value; } }; return EquivalenceClassesImpl; }()); export { EquivalenceClassesImpl }; export function EquivalenceClasses(getHash, areEqual) { return new EquivalenceClassesImpl(getHash, areEqual); } //# sourceMappingURL=equivalence-classes.js.map