/// <inheritdoc/> public BitCode GetBitCodeByString(string token) { if (!this.uniqueCodes.TryGetValue(token, out BitCode code)) { this.uniqueCodes.Add(token, code = new BitCode(this.index++)); } return(code); }
public void Subtract(BitCode code) { if (this.indices.Remove(code.Index)) { for (var i = 0; i <= code.offset && i < MAXOFFSET; ++i) { this.bits[i] &= ~code.bits[i]; } } }
public void Add(BitCode code) { if (this.indices.Add(code.Index)) { this.Offset = Math.Max(code.offset, this.Offset); for (var i = 0; i <= code.offset && i < MAXOFFSET; ++i) { this.bits[i] |= code.bits[i]; } } }
public bool Contains(BitCode code) { for (var i = 0; i <= code.offset && i < MAXOFFSET; ++i) { if ((this.bits[i] & code.bits[i]) != code.bits[i]) { return(false); } } return(true); }