Пример #1
0
        public MGRB And(MGRB B)
        {
            var v   = new SafeSortedList <int, Container>();
            var len = _size;

            if (B.Length < len)
            {
                len = B.Length;
            }
            var a   = LastContainerIdx();
            var b   = B.LastContainerIdx();
            var min = a;

            if (b < min)
            {
                min = b;
            }
            min++;

            for (int i = 0; i < min; i++)
            {
                Container ca = null;
                Container cb = null;

                _containers.TryGetValue(i, out ca);
                B._containers.TryGetValue(i, out cb);

                if (ca != null && cb != null)
                {
                    v.Add(i, containerAND(ca, cb));
                }
            }

            return(new MGRB(v, len));
        }
Пример #2
0
        public MGRB Or(MGRB B)
        {
            var v   = new SafeSortedList <int, Container>();
            var len = _size;

            if (B.Length > len)
            {
                len = B.Length;
            }
            var a   = LastContainerIdx();
            var b   = B.LastContainerIdx();
            var max = a;

            if (b > max)
            {
                max = b;
            }
            max++;

            for (int i = 0; i < max; i++)
            {
                Container ca = null;
                Container cb = null;

                _containers.TryGetValue(i, out ca);
                B._containers.TryGetValue(i, out cb);

                if (ca == null && cb != null)
                {
                    v.Add(i, cb.Copy());
                }
                else if (cb == null && ca != null)
                {
                    v.Add(i, ca.Copy());
                }
                else if (ca != null && cb != null)
                {
                    v.Add(i, containerOR(ca, cb));
                }
            }

            return(new MGRB(v, len));
        }