/// <summary> /// Computes the in-place bitwise AND of this container with another /// (intersection). The current container is generally modified, whereas /// the provided container (x) is unaffected. May generate a new container. /// </summary> /// <param name="x">Other container</param> /// <returns>Aggregated container</returns> public override Container IAnd(BitsetContainer other) { int pos = 0; for (int k = 0; k < Cardinality; k++) { ushort v = Content[k]; if (other.Contains(v)) { Content[pos++] = v; } } Cardinality = pos; return(this); }
/// <summary> /// Returns the elements of this ArrayContainer that are not in the /// other BitSetContainer. Modifies the current container in place. /// </summary> /// <param name="x">the BitSetContainer to compare against</param> /// <returns>A new container with the differences</returns> public override Container IAndNot(BitsetContainer x) { int pos = 0; for (int k = 0; k < Cardinality; ++k) { ushort v = this.Content[k]; if (!x.Contains(v)) { this.Content[pos++] = v; } } this.Cardinality = pos; return(this); }
/// <summary> /// Returns the elements of this ArrayContainer that are not in the /// other BitSetContainer. /// </summary> /// <param name="x">the BitSetContainer to compare against</param> /// <returns>A new container with the differences</returns> public override Container AndNot(BitsetContainer x) { var answer = new ArrayContainer(Content.Length); int pos = 0; for (int k = 0; k < Cardinality; ++k) { ushort val = this.Content[k]; if (!x.Contains(val)) { answer.Content[pos++] = val; } } answer.Cardinality = pos; return(answer); }
/// <summary> /// Returns the elements of this ArrayContainer that are not in the /// other BitSetContainer. Modifies the current container in place. /// </summary> /// <param name="x">the BitSetContainer to compare against</param> /// <returns>A new container with the differences</returns> public override Container IAndNot(BitsetContainer x) { int pos = 0; for (int k = 0; k < Cardinality; ++k) { ushort v = this.Content[k]; if (!x.Contains(v)) { this.Content[pos++] = v; } } this.Cardinality = pos; return this; }
/// <summary> /// Computes the in-place bitwise AND of this container with another /// (intersection). The current container is generally modified, whereas /// the provided container (x) is unaffected. May generate a new container. /// </summary> /// <param name="x">Other container</param> /// <returns>Aggregated container</returns> public override Container IAnd(BitsetContainer other) { int pos = 0; for (int k = 0; k < Cardinality; k++) { ushort v = Content[k]; if (other.Contains(v)) { Content[pos++] = v; } } Cardinality = pos; return this; }
/// <summary> /// Returns the elements of this ArrayContainer that are not in the /// other BitSetContainer. /// </summary> /// <param name="x">the BitSetContainer to compare against</param> /// <returns>A new container with the differences</returns> public override Container AndNot(BitsetContainer x) { var answer = new ArrayContainer(Content.Length); int pos = 0; for (int k = 0; k < Cardinality; ++k) { ushort val = this.Content[k]; if (!x.Contains(val)) { answer.Content[pos++] = val; } } answer.Cardinality = pos; return answer; }