BitsetsNET.ArrayContainer.Or C# (CSharp) Method

Or() public method

Computes the bitwise OR of this container with another (union). This container as well as the provided container are left unaffected.
public Or ( ArrayContainer x ) : Container
x ArrayContainer Other container
return Container
        public override Container Or(ArrayContainer x)
        {
            ArrayContainer value1 = this;
            int totalCardinality = value1.GetCardinality() + x.GetCardinality();
            if (totalCardinality > DEFAULT_MAX_SIZE)
            {
                // it could be a bitmap!
                BitsetContainer bc = new BitsetContainer();
                for (int k = 0; k < x.Cardinality; ++k)
                {
                    ushort v = x.Content[k];
                    int i = v >> 6;
                    bc.Bitmap[i] |= (1L << v);
                }
                for (int k = 0; k < this.Cardinality; ++k)
                {
                    ushort v = this.Content[k];
                    int i = v >> 6;
                    bc.Bitmap[i] |= (1L << v);
                }
                bc.Cardinality = 0;
                foreach (long k in bc.Bitmap)
                {
                    bc.Cardinality += Utility.LongBitCount(k);
                }
                if (bc.Cardinality <= DEFAULT_MAX_SIZE)
                {
                    return bc.ToArrayContainer();
                }
                return bc;
            }
            else
            {
                // remains an array container
                int desiredCapacity = totalCardinality; // Math.min(BitmapContainer.MAX_CAPACITY,
                                                        // totalCardinality);
                ArrayContainer answer = new ArrayContainer(desiredCapacity);
                answer.Cardinality = Utility.UnsignedUnion2by2(value1.Content,
                                                               value1.GetCardinality(),
                                                               x.Content,
                                                               x.GetCardinality(),
                                                               answer.Content);
                return answer;
            }
        }

Same methods

ArrayContainer::Or ( BitsetContainer x ) : Container